validate([ 'after' => 'nullable|date', 'before' => 'nullable|date', ]); $after = isset($validatedData['after']) ? $validatedData['after'] : Carbon::now()->sub(2, 'hours'); $before = isset($validatedData['before']) ? $validatedData['before'] : Carbon::now()->add(1, 'days'); $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') ->limit(1000); if ($request->user() && $request->user()->isAdmin()) { $episodes = $episodes->with('crew'); } else { $episodes = $episodes->with([ 'crew' => function ($query) { $query->where('confirmed', true); } ]); } return $episodes->get()->toJson(); } public function single(Request $request, Episode $episode) { $this->authorize('view', $episode); return $episode->toJson(); } }