X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=app%2FHttp%2FControllers%2FEventController.php;h=c9a1a4190fb0e2c2c9b713879e98d826ec81d000;hb=ebdf8e5f6761de2abd85b01096a67dee62d7d4aa;hp=a0dce45abb908bbd3202753f57b36f6957ed6af6;hpb=0a2bb2069cee683d525596dfe0141cac60f0f977;p=alttp.git diff --git a/app/Http/Controllers/EventController.php b/app/Http/Controllers/EventController.php index a0dce45..c9a1a41 100644 --- a/app/Http/Controllers/EventController.php +++ b/app/Http/Controllers/EventController.php @@ -13,6 +13,9 @@ class EventController extends Controller $validatedData = $request->validate([ 'after' => 'nullable|date', 'before' => 'nullable|date', + 'order' => 'nullable|string', + 'with' => 'nullable|array', + 'with.*' => 'string', ]); $events = Event::where('visible', '=', true); if (isset($validatedData['before'])) { @@ -27,6 +30,22 @@ class EventController extends Controller $query->orWhere('end', '>', $validatedData['after']); }); } + if (isset($validatedData['order'])) { + switch ($validatedData['order']) { + case 'recency': + $events->orderByRaw('start IS NOT NULL'); + $events->orderByRaw('end IS NOT NULL'); + $events->orderBy('end', 'DESC'); + $events->orderBy('start', 'DESC'); + $events->orderBy('name', 'ASC'); + break; + } + } + if (isset($validatedData['with'])) { + if (in_array('description', $validatedData['with'])) { + $events->with('description'); + } + } return $events->get()->toJson(); }