]> git.localhorst.tv Git - alttp.git/blob - app/Http/Controllers/EpisodeController.php
pull sg crew into schedule
[alttp.git] / app / Http / Controllers / EpisodeController.php
1 <?php
2
3 namespace App\Http\Controllers;
4
5 use App\Models\Episode;
6 use Carbon\Carbon;
7 use Illuminate\Http\Request;
8
9 class EpisodeController extends Controller
10 {
11
12         public function search(Request $request) {
13                 $validatedData = $request->validate([
14                         'after' => 'nullable|date',
15                         'before' => 'nullable|date',
16                 ]);
17                 $after = isset($validatedData['after']) ? $validatedData['after'] : Carbon::now()->sub(2, 'hours');
18                 $before = isset($validatedData['before']) ? $validatedData['before'] : Carbon::now()->add(1, 'days');
19                 $episodes = Episode::with(['channels', 'event', 'players', 'players.user'])
20                         ->select('episodes.*')
21                         ->join('events', 'episodes.event_id', '=', 'events.id')
22                         ->where('episodes.confirmed', '=', true)
23                         ->where('episodes.start', '>=', $after)
24                         ->where('episodes.start', '<=', $before)
25                         ->where('events.visible', '=', true)
26                         ->orderBy('episodes.start')
27                         ->limit(1000);
28                 if ($request->user() && $request->user()->isAdmin()) {
29                         $episodes = $episodes->with('crew');
30                 } else {
31                         $episodes = $episodes->with([
32                                 'crew' => function ($query) {
33                                         $query->where('confirmed', true);
34                                 }
35                         ]);
36                 }
37                 return $episodes->get()->toJson();
38         }
39
40         public function single(Request $request, Episode $episode) {
41                 $this->authorize('view', $episode);
42                 return $episode->toJson();
43         }
44
45 }