X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=app%2FHttp%2FControllers%2FEpisodeController.php;h=22ca6dc1309464c370325a41e92ea3f7e6906f77;hb=3544909490592e8c2387f3347ee5e12a8c0414be;hp=4e93427836287daea50cf6645cfaa638c5d22b59;hpb=212561cf1c6724b52c490104f5a2b4c3418b1c62;p=alttp.git diff --git a/app/Http/Controllers/EpisodeController.php b/app/Http/Controllers/EpisodeController.php index 4e93427..22ca6dc 100644 --- a/app/Http/Controllers/EpisodeController.php +++ b/app/Http/Controllers/EpisodeController.php @@ -56,6 +56,7 @@ class EpisodeController extends Controller if (isset($validatedData['add'])) { $crew = $episode->crew() + ->where('channel_id', '=', $channel->id) ->where('user_id', '=', $validatedData['add']) ->where('role', '=', $validatedData['role']) ->first(); @@ -194,18 +195,28 @@ class EpisodeController extends Controller 'before' => 'nullable|date', 'event' => 'nullable|array', 'event.*' => 'numeric', + 'limit' => 'numeric', + 'offset' => 'numeric', + 'reverse' => 'boolean', ]); - $after = isset($validatedData['after']) ? $validatedData['after'] : Carbon::now(); $before = isset($validatedData['before']) ? $validatedData['before'] : Carbon::now()->add(1, 'days'); + $limit = isset($validatedData['limit']) ? $validatedData['limit'] : 100; + $reverse = isset($validatedData['reverse']) ? $validatedData['reverse'] : false; $episodes = Episode::with(['channels', 'event', 'players', 'players.user']) ->select('episodes.*') ->join('events', 'episodes.event_id', '=', 'events.id') ->where('episodes.confirmed', '=', true) - ->where(DB::raw('DATE_ADD(`episodes`.`start`, INTERVAL COALESCE(`episodes`.`estimate`, 0) SECOND)'), '>=', $after) - ->where('episodes.start', '<=', $before) ->where('events.visible', '=', true) - ->orderBy('episodes.start') + ->orderBy('episodes.start', $reverse ? 'DESC' : 'ASC') ->limit(1000); + if (isset($validatedData['after'])) { + $episodes = $episodes->where( + DB::raw('DATE_ADD(`episodes`.`start`, INTERVAL COALESCE(`episodes`.`estimate`, 0) SECOND)'), + '>=', $validatedData['after']); + } + if (isset($validatedData['before'])) { + $episodes = $episodes->where('episodes.start', '<=', $validatedData['before']); + } if (!empty($validatedData['event'])) { $episodes = $episodes->whereIn('episodes.event_id', $validatedData['event']); } @@ -228,6 +239,7 @@ class EpisodeController extends Controller 'crew.user', ]); } + $episodes->limit($limit); return $episodes->get()->toJson(); }