ldc-le-gaulois-pro/app/Http/Controllers/Fo/NewsController.php
Jérémy Munsch c82f26e12f
phpcs fix
2024-02-05 11:26:17 +01:00

58 lines
1.8 KiB
PHP

<?php
namespace App\Http\Controllers\Fo;
use App\Http\Controllers\Controller;
use App\Models\News;
use App\Models\NewsCategory;
use Illuminate\Contracts\Database\Eloquent\Builder;
use Illuminate\Http\Request;
class NewsController extends Controller
{
/**
* Undocumented function
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Contracts\View\View
*/
public function index(Request $request): \Illuminate\Contracts\View\View
{
// Get NewsCategories.
$categories = NewsCategory::query()->orderBy('label', 'ASC')->get();
// Get News.
$filters_activated = collect($request->input('filtered_categorie'));
$news = News::query()->with('categories')->when(
$filters_activated->first() !== 'all',
fn (Builder $q) => $q->with('categories')
->whereRelation('categories', fn (Builder $q) =>
$q->where(function (Builder $q) use ($filters_activated) {
foreach ($filters_activated as $value) {
if (is_string($value)) {
$q->orWhere('id', $value);
}
}
}))
)->where('status', true)->orderBy('created_at')->paginate(6);
return view('fo.pages.news.index', compact('categories', 'news', 'filters_activated'));
}
/**
* Show resource
*
* @param \App\Models\News $news
*
* @return \Illuminate\Contracts\View\View
*/
public function show(News $news): \Illuminate\Contracts\View\View
{
$news->load('categories', 'news.categories', 'products');
$readingTime = $news->getReadingTime();
$products = $news->products()->get();
return view('fo.pages.news.post', compact('news', 'readingTime', 'products'));
}
}