$nextEvents List of published news. */ public $nextEvents; /** * Create a new component instance. */ public function __construct() { /** @var \App\Models\NewsCategory|null $newsCategory */ $newsCategory = NewsCategory::getModelsCached() ->filter(fn($category) => $category->getTranslation('slug', 'fr') === "actualites") ->first(); /** @var \App\Models\NewsTag|null $eventTag */ $eventTag = NewsTag::getTagsByCategoryInCurrentLocale($newsCategory->slug) ->filter( fn(\Illuminate\Database\Eloquent\Model $tag) => $tag->getTranslation('slug', 'fr') === "actualites-rh" ) ->first(); $eventTagId = $eventTag ? $eventTag->id : null; $this->nextEvents = News::getPublishedNewsByCategoryInCurrentLocale($newsCategory->slug) ->filter(function ($news) use ($eventTagId) { return $news->tags->contains( fn($tag) => $eventTagId === $tag->id ); }) ->sortByDesc('published_at') ->take(3); } /** * Get the view / contents that represent the component. * * @return \Illuminate\Contracts\View\View */ public function render(): \Illuminate\Contracts\View\View { return view('components.front.news.news-next-event-component', [ 'nextEvents' => $this->nextEvents ]); } }