where('type', StaticPageType::news)->firstOrFail(); /** @var \App\Models\News $newsModels */ $newsModels = News::query()->where('published', true)->orderBy('publish_at', 'desc')->get(); return view('fo.pages.news.index', \compact('staticPageModel', 'newsModels')); } /** * Display a news articles * * @param string $slug * @return \Illuminate\Contracts\View\View */ public function show(string $slug): \Illuminate\Contracts\View\View { /** @var \App\Models\News $newsModel */ $newsModel = News::query() ->where('published', true) ->where('slug', $slug) ->firstOrFail(); return view('fo.pages.news.show', \compact('newsModel')); } /** * Get filtered news. * * @return \Illuminate\Http\JsonResponse */ public function newsFiltered(): \Illuminate\Http\JsonResponse { $categoryId = ToolboxHelper::getValidatedEnum( 0, 'category', '\App\Enums\News\CategoryEnum', ); $newsModels = News::query() ->where('published', true) ->when($categoryId != 0, function (Builder $query) use ($categoryId) { $query->where('category', $categoryId); }) ->orderBy('publish_at', 'desc') ->get(); return response()->json($newsModels); } }