58 lines
1.7 KiB
PHP
58 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Fo;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\News;
|
|
use App\Models\NewsCategory;
|
|
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::orderBy('label', 'ASC')->get();
|
|
|
|
// Get News.
|
|
$filters_activated = $request->filtered_categorie;
|
|
|
|
$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);
|
|
}
|
|
});
|
|
}
|
|
)
|
|
->where('status', true)
|
|
->orderBy('created_at')
|
|
->paginate(6);
|
|
|
|
return view('fo.pages.news.index', compact('categories', 'news', 'filters_activated'));
|
|
}
|
|
|
|
/**
|
|
* Undocumented function
|
|
* @param 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'));
|
|
}
|
|
}
|