. * * @package LibreNMS * @link http://librenms.org * @copyright 2020 Tony Murray * @author Tony Murray */ namespace App\Http\Controllers\Table; use App\Models\AlertSchedule; use Carbon\Carbon; use DB; class AlertScheduleController extends TableController { protected $default_sort = ['title' => 'asc', 'start' => 'asc']; protected function baseQuery($request) { return AlertSchedule::query(); } protected function searchFields($request) { return['title', 'start', 'end']; } protected function sortFields($request) { return [ 'start_recurring_dt' => DB::raw('DATE(`start`)'), 'start_recurring_ht' => DB::raw('TIME(`start`)'), 'end_recurring_dt' => DB::raw('DATE(`end`)'), 'end_recurring_ht' => DB::raw('TIME(`end`)'), 'title' => 'title', 'recurring' => 'recurring', 'start' => 'start', 'end' => 'end', 'status' => DB::raw("end < '" . Carbon::now('UTC') ."'"), // only partition lapsed ]; } /** * @param AlertSchedule $schedule * @return array */ public function formatItem($schedule) { return [ 'title' => $schedule->title, 'notes' => $schedule->notes, 'id' => $schedule->schedule_id, 'start' => $schedule->recurring ? '' : $schedule->start->toDateTimeString('minutes'), 'end' => $schedule->recurring ? '' : $schedule->end->toDateTimeString('minutes'), 'start_recurring_dt' => $schedule->recurring ? $schedule->start_recurring_dt : '', 'start_recurring_hr' => $schedule->recurring ? $schedule->start_recurring_hr : '', 'end_recurring_dt' => $schedule->recurring ? $schedule->end_recurring_dt : '', 'end_recurring_hr' => $schedule->recurring ? $schedule->end_recurring_hr : '', 'recurring' => $schedule->recurring ? __('Yes') : __('No'), 'recurring_day' => $schedule->recurring ? implode(',', $schedule->recurring_day) : '', 'status' => $schedule->status, ]; } // /** // * @param Request $request // * @param Builder $query // * @return Builder // */ // protected function sort($request, $query) // { // $columns = $this->sortFields($request); // $sort = $request->get('sort', $this->default_sort); // // foreach ($sort as $column => $direction) { // if (isset($columns[$column])) { // $query->orderBy($columns[$column], $direction == 'desc' ? 'desc' : 'asc'); // } // } // // return $query; // } }