1<?php
2/**
3 * Syslog.php
4 *
5 * -Description-
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
19 *
20 * @link       https://www.librenms.org
21 * @copyright  2018 Tony Murray
22 * @author     Tony Murray <murraytony@gmail.com>
23 */
24
25namespace App\Http\Controllers\Select;
26
27class SyslogController extends SelectController
28{
29    /**
30     * Defines validation rules (will override base validation rules for select2 responses too)
31     *
32     * @return array
33     */
34    protected function rules()
35    {
36        return [
37            'field' => 'required|in:program,priority',
38            'device' => 'nullable|int',
39        ];
40    }
41
42    /**
43     * Defines search fields will be searched in order
44     *
45     * @param \Illuminate\Http\Request $request
46     * @return array
47     */
48    protected function searchFields($request)
49    {
50        return [$request->get('field')];
51    }
52
53    /**
54     * Defines the base query for this resource
55     *
56     * @param \Illuminate\Http\Request $request
57     * @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Builder
58     */
59    protected function baseQuery($request)
60    {
61        /** @var \Illuminate\Database\Eloquent\Builder $query */
62        $query = \App\Models\Syslog::hasAccess($request->user())
63            ->select($request->get('field'))->distinct();
64
65        if ($device_id = $request->get('device')) {
66            $query->where('device_id', $device_id);
67        }
68
69        return $query;
70    }
71}
72