X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=app%2FHttp%2FControllers%2FEpisodeController.php;h=1a407a184e97039738e4b3743f888fec05a3f924;hb=638802eaf20d636c16d7ce337ace508708705f2c;hp=d1e7e85612d08c7c1417fdda2df2f07f4a0bbaef;hpb=6a5969b5d9bc6f68cdd85429251182bdd0e1d852;p=alttp.git diff --git a/app/Http/Controllers/EpisodeController.php b/app/Http/Controllers/EpisodeController.php index d1e7e85..1a407a1 100644 --- a/app/Http/Controllers/EpisodeController.php +++ b/app/Http/Controllers/EpisodeController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Models\Channel; use App\Models\Episode; use Carbon\Carbon; use Illuminate\Http\Request; @@ -9,10 +10,46 @@ use Illuminate\Http\Request; class EpisodeController extends Controller { + public function addRestream(Request $request, Episode $episode) { + $this->authorize('addRestream', $episode); + $validatedData = $request->validate([ + 'channel_id' => 'numeric|exists:App\Models\Channel,id', + ]); + + $channel = Channel::find($validatedData['channel_id']); + $this->authorize('addEpisode', $channel); + + foreach ($episode->channels as $c) { + if ($c->id == $channel->id) { + throw new \Exception('channel already exists on episode'); + } + } + + $episode->channels()->attach($channel); + + return $episode->load('channels')->toJson(); + } + + public function removeRestream(Request $request, Episode $episode) { + $this->authorize('removeRestream', $episode); + $validatedData = $request->validate([ + 'channel_id' => 'numeric|exists:App\Models\Channel,id', + ]); + + $channel = Channel::find($validatedData['channel_id']); + $this->authorize('removeEpisode', $channel); + + $episode->channels()->detach($channel); + + return $episode->load('channels')->toJson(); + } + public function search(Request $request) { $validatedData = $request->validate([ 'after' => 'nullable|date', 'before' => 'nullable|date', + 'event' => 'nullable|array', + 'event.*' => 'numeric', ]); $after = isset($validatedData['after']) ? $validatedData['after'] : Carbon::now()->sub(2, 'hours'); $before = isset($validatedData['before']) ? $validatedData['before'] : Carbon::now()->add(1, 'days'); @@ -25,6 +62,9 @@ class EpisodeController extends Controller ->where('events.visible', '=', true) ->orderBy('episodes.start') ->limit(1000); + if (!empty($validatedData['event'])) { + $episodes = $episodes->whereIn('episodes.event_id', $validatedData['event']); + } if ($request->user() && $request->user()->isPrivileged()) { $episodes = $episodes->with(['crew', 'crew.user']); } else {