2022-11-08 15:13:56 +01:00
|
|
|
<?php
|
|
|
|
|
|
2022-12-06 17:29:48 +01:00
|
|
|
namespace App\Http\Controllers\Fo;
|
|
|
|
|
|
|
|
|
|
use App\Http\Controllers\Controller;
|
2023-01-06 09:30:41 +01:00
|
|
|
use App\Models\News;
|
|
|
|
|
use App\Models\NewsCategory;
|
2024-02-05 09:57:21 +01:00
|
|
|
use Illuminate\Contracts\Database\Eloquent\Builder;
|
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-09-27 10:25:30 +02:00
|
|
|
public function index(Request $request): \Illuminate\Contracts\View\View
|
2022-11-08 15:13:56 +01:00
|
|
|
{
|
2023-01-06 09:30:41 +01:00
|
|
|
// Get NewsCategories.
|
2024-02-05 09:33:08 +01:00
|
|
|
$categories = NewsCategory::query()->orderBy('label', 'ASC')->get();
|
2023-01-06 09:30:41 +01:00
|
|
|
|
2023-01-11 09:10:03 +01:00
|
|
|
// Get News.
|
2024-02-05 09:33:08 +01:00
|
|
|
$filters_activated = collect($request->input('filtered_categorie'));
|
2023-01-06 09:30:41 +01:00
|
|
|
|
2024-02-05 09:57:21 +01:00
|
|
|
$news = News::query()->with('categories')->when(
|
|
|
|
|
$filters_activated->first() !== 'all',
|
2024-09-18 11:47:53 +02:00
|
|
|
fn(Builder $q) => $q->with('categories')
|
|
|
|
|
->whereRelation('categories', fn(Builder $q) =>
|
2024-02-05 09:57:21 +01:00
|
|
|
$q->where(function (Builder $q) use ($filters_activated) {
|
|
|
|
|
foreach ($filters_activated as $value) {
|
|
|
|
|
if (is_string($value)) {
|
|
|
|
|
$q->orWhere('id', $value);
|
2023-09-27 10:25:30 +02:00
|
|
|
}
|
2024-02-05 09:57:21 +01:00
|
|
|
}
|
|
|
|
|
}))
|
2026-02-25 16:12:14 +01:00
|
|
|
)->where('published', true)->orderByDesc('created_at')->paginate(6);
|
2023-01-12 19:14:03 +01:00
|
|
|
|
|
|
|
|
return view('fo.pages.news.index', compact('categories', 'news', 'filters_activated'));
|
2022-11-08 15:13:56 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2024-02-05 11:26:17 +01:00
|
|
|
* Show resource
|
|
|
|
|
*
|
|
|
|
|
* @param \App\Models\News $news
|
2022-11-08 15:13:56 +01:00
|
|
|
*
|
|
|
|
|
* @return \Illuminate\Contracts\View\View
|
|
|
|
|
*/
|
2023-09-27 10:25:30 +02:00
|
|
|
public function show(News $news): \Illuminate\Contracts\View\View
|
2022-11-08 15:13:56 +01:00
|
|
|
{
|
2023-01-06 09:30:41 +01:00
|
|
|
$news->load('categories', 'news.categories', 'products');
|
2023-01-12 19:14:03 +01:00
|
|
|
$readingTime = $news->getReadingTime();
|
2024-09-18 11:47:53 +02:00
|
|
|
$products = $news->products()->with(['subrange', 'subrange.range'])->get();
|
2023-01-12 19:14:03 +01:00
|
|
|
|
|
|
|
|
return view('fo.pages.news.post', compact('news', 'readingTime', 'products'));
|
2022-11-08 15:13:56 +01:00
|
|
|
}
|
|
|
|
|
}
|