*/ class EncodeUpdated extends BaseEvent implements ManagesTrackEvent { use Dispatchable; use SerializesModels; public function __construct(Encode $encode) { parent::__construct($encode); } public function getModel(): Encode { return $this->model; } public function manageTrack(): void { if ( $this->getModel()->wasChanged(Encode::ATTRIBUTE_TYPE) && $this->getModel()->getAttribute(Encode::ATTRIBUTE_TYPE) === EncodeType::OLD ) { $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); } } } }