+ 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();
+ }
+