Files
RomhackPlaza/app/Http/Controllers/HomeController.php
2026-06-23 19:24:38 +02:00

45 lines
1.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Entry;
use App\Services\ActivityService;
use Illuminate\Http\Request;
use Illuminate\View\View;
use App\Models\News;
class HomeController extends Controller
{
public function __construct( private ActivityService $service ) {}
public function index( Request $request ): View {
$filters = [ 'entries', 'news', 'messages', 'threads', 'clubs', 'reviews' ];
$cookie = $request->cookie('activity_filters');
$activeFilters = $cookie ? array_intersect( json_decode( $cookie, true ) ?? [], $filters ) : $filters;
if( empty( $activeFilters ) ) {
$activeFilters = $filters;
}
$items = $this->service->getActivities( array_values( $activeFilters ) );
$viewFilters = [
'entries' => ['label' => 'Entries', 'icon' => 'database'],
'news' => ['label' => 'News', 'icon' => 'newspaper'],
'messages' => ['label' => 'Posts', 'icon' => 'message-square'],
'threads' => ['label' => 'Threads', 'icon' => 'messages-square'],
'clubs' => ['label' => 'Clubs', 'icon' => 'balloon'],
'reviews' => ['label' => 'Reviews', 'icon' => 'star'],
];
$latestNews = News::published()->latest('created_at')->limit(5)->get();
$featuredEntries = Entry::published()->where('featured', true)->latest('featured_at')->get();
return view('home', compact('items', 'activeFilters', 'viewFilters', 'latestNews', 'featuredEntries'));
}
}