ldc-le-gaulois-pro/app/Http/Controllers/Fo/NewsController.php

59 lines
1.6 KiB
PHP
Raw Normal View History

2022-11-08 15:13:56 +01:00
<?php
namespace App\Http\Controllers\Fo;
use App\Http\Controllers\Controller;
use App\Models\News;
use App\Models\NewsCategory;
2023-01-12 19:14:03 +01:00
use Illuminate\Http\Request;
2022-11-08 15:13:56 +01:00
class NewsController extends Controller
{
/**
* Undocumented function
*
2023-01-12 19:14:03 +01:00
* @param \Illuminate\Http\Request $request
2022-11-08 15:13:56 +01:00
* @return \Illuminate\Contracts\View\View
*/
2023-01-12 19:14:03 +01:00
public function index(Request $request)
2022-11-08 15:13:56 +01:00
{
// Get NewsCategories.
2023-01-12 19:14:03 +01:00
$categories = NewsCategory::orderBy('label', 'ASC')->get();
2023-01-11 09:10:03 +01:00
// Get News.
2023-01-12 19:14:03 +01:00
$filters_activated = $request->filtered_categorie;
2023-01-12 19:14:03 +01:00
$news = News::when(
isset($filters_activated) and $filters_activated[0] != 'all',
function ($query) use ($filters_activated) {
$query->with('categories')
->whereRelation('categories', function ($query) use ($filters_activated) {
foreach ($filters_activated as $value) {
$query->orWhere('id', 'like', $value);
}
});
}
)
2023-01-17 17:51:17 +01:00
->where('status', true)
->orderBy('created_at')
2023-01-12 19:14:03 +01:00
->paginate(6);
return view('fo.pages.news.index', compact('categories', 'news', 'filters_activated'));
2022-11-08 15:13:56 +01:00
}
/**
* Undocumented function
* @param News $news
2022-11-08 15:13:56 +01:00
*
* @return \Illuminate\Contracts\View\View
*/
public function show(News $news)
2022-11-08 15:13:56 +01:00
{
$news->load('categories', 'news.categories', 'products');
2023-01-12 19:14:03 +01:00
$readingTime = $news->getReadingTime();
$products = $news->products()->get();
return view('fo.pages.news.post', compact('news', 'readingTime', 'products'));
2022-11-08 15:13:56 +01:00
}
}