*/ class EncodeCreated 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 { $video = $this->getModel()->video; if ($video->animethemeentries->isEmpty()) { return; } $playlist = Playlist::query()->firstOrCreate([ Playlist::ATTRIBUTE_NAME => 'Encodes', Playlist::ATTRIBUTE_USER => $this->getModel()->user_id, ], [ Playlist::ATTRIBUTE_VISIBILITY => PlaylistVisibility::PRIVATE->value, Playlist::ATTRIBUTE_DESCRIPTION => 'Auto-generated playlist for encodes.', ]); $action = new StoreTrackAction(); $action->store($playlist, PlaylistTrack::query(), [ PlaylistTrack::ATTRIBUTE_ENTRY => $video->animethemeentries->first()->getKey(), PlaylistTrack::ATTRIBUTE_VIDEO => $video->getKey(), ]); } }