]> git.localhorst.tv Git - alttp.git/blobdiff - app/Http/Controllers/EpisodeController.php
show some past episodes on concluded events
[alttp.git] / app / Http / Controllers / EpisodeController.php
index 4e93427836287daea50cf6645cfaa638c5d22b59..22ca6dc1309464c370325a41e92ea3f7e6906f77 100644 (file)
@@ -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();
        }