X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=app%2FHttp%2FControllers%2FEpisodeController.php;h=22ca6dc1309464c370325a41e92ea3f7e6906f77;hb=147c5f43c5d41fa18e82edb6651fe5a37c789353;hp=9892cee7b2a88f0eca0848a26f78ca15e8fb6426;hpb=5a575dc29f3af10f1d8e142ff9e1c6ccdfa3b075;p=alttp.git diff --git a/app/Http/Controllers/EpisodeController.php b/app/Http/Controllers/EpisodeController.php index 9892cee..22ca6dc 100644 --- a/app/Http/Controllers/EpisodeController.php +++ b/app/Http/Controllers/EpisodeController.php @@ -8,6 +8,7 @@ use App\Models\EpisodeCrew; use App\Models\User; use Carbon\Carbon; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; class EpisodeController extends Controller { @@ -55,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(); @@ -193,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()->sub(2, 'hours'); $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('episodes.start', '>=', $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']); } @@ -227,6 +239,7 @@ class EpisodeController extends Controller 'crew.user', ]); } + $episodes->limit($limit); return $episodes->get()->toJson(); }