*/ class EncodeUpdated extends BaseEvent implements ManagesTrackEvent { use Dispatchable; use SerializesModels; /** * Create a new event instance. * * @param Encode $encode */ public function __construct(Encode $encode) { parent::__construct($encode); } /** * Get the model that has fired this event. * * @return Encode */ public function getModel(): Encode { return $this->model; } /** * Manages a track in a playlist. * * @return void */ public function manageTrack(): void { if ( $this->getModel()->wasChanged(Encode::ATTRIBUTE_TYPE) && $this->getModel()->getAttribute(Encode::ATTRIBUTE_TYPE) === EncodeType::OLD->value ) { $track = PlaylistTrack::query() ->with([PlaylistTrack::RELATION_PLAYLIST, PlaylistTrack::RELATION_VIDEO]) ->whereRelation(PlaylistTrack::RELATION_PLAYLIST, Playlist::ATTRIBUTE_NAME, 'Encodes') ->whereBelongsTo($this->getModel()->video, PlaylistTrack::RELATION_VIDEO) ->first(); if ($track instanceof PlaylistTrack) { $removeAction = new RemoveTrackAction(); $removeAction->remove($track->playlist, $track); } } } }