*/ class GroupDeleted extends WikiDeletedEvent implements UpdateRelatedIndicesEvent { /** * Create a new event instance. * * @param Group $group */ public function __construct(Group $group) { parent::__construct($group); } /** * Get the model that has fired this event. * * @return Group */ public function getModel(): Group { return $this->model; } /** * Get the description for the Discord message payload. * * @return string */ protected function getDiscordMessageDescription(): string { return "Group '**{$this->getModel()->getName()}**' has been deleted."; } /** * Get the message for the nova notification. * * @return string */ protected function getNotificationMessage(): string { return "Group '{$this->getModel()->getName()}' has been deleted. It will be automatically pruned in one week. Please review."; } /** * Get the URL for the nova notification. * * @return string */ protected function getNovaNotificationUrl(): string { $uriKey = GroupResource::uriKey(); return "/resources/$uriKey/{$this->getModel()->getKey()}"; } /** * Get the URL for the Filament notification. * * @return string */ protected function getFilamentNotificationUrl(): string { $uriKey = GroupFilament::getRecordSlug(); return "/resources/$uriKey/{$this->getModel()->getKey()}"; } /** * Perform updates on related indices. * * @return void */ public function updateRelatedIndices(): void { $group = $this->getModel()->load(Group::RELATION_VIDEOS); $group->animethemes->each(function (AnimeTheme $theme) { $theme->searchable(); $theme->animethemeentries->each(function (AnimeThemeEntry $entry) { $entry->searchable(); $entry->videos->each(fn (Video $video) => $video->searchable()); }); }); } }