]> git.localhorst.tv Git - alttp.git/blobdiff - app/Http/Controllers/EpisodeController.php
simple schedule display
[alttp.git] / app / Http / Controllers / EpisodeController.php
index 4e4eeda8dd943cdc8195dc451e9690bae24bca79..d4ca78d44b27bf3b6e5b02cc9485edc2ca7853c0 100644 (file)
@@ -3,15 +3,27 @@
 namespace App\Http\Controllers;
 
 use App\Models\Episode;
+use Carbon\Carbon;
 use Illuminate\Http\Request;
 
 class EpisodeController extends Controller
 {
 
        public function search(Request $request) {
-               $episodes = Episode::with('event')
-                       ->where('confirmed', '=', true)
-                       ->where('event.visible', '=', true);
+               $validatedData = $request->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(['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)
+                       ->limit(1000);
                return $episodes->get()->toJson();
        }