lots of progress

This commit is contained in:
2025-04-12 17:18:33 +03:00
parent 8d230e8e67
commit 3d4260d57e
44 changed files with 2590 additions and 2883 deletions
+76 -1
View File
@@ -29,4 +29,79 @@ class GameController extends Controller
return response()->json($game, 201);
}
}
public function index(Request $request)
{
$query = Game::query();
// Apply search
if ($request->has('search')) {
$search = $request->get('search');
$query->where(function($q) use ($search) {
$q->where('name', 'like', "%{$search}%")
->orWhere('summary', 'like', "%{$search}%");
});
}
// Apply sorting
$sort = $request->get('sort', 'first_release_date');
$direction = $request->get('direction', 'desc');
if ($sort === 'rating') {
$query->orderBy('rating', $direction);
} elseif ($sort === 'rating_count') {
$query->orderBy('rating_count', $direction);
} else {
$query->orderBy('first_release_date', $direction);
}
// Apply filters
if ($request->has('platform')) {
$query->whereHas('platforms', function ($q) use ($request) {
$q->where('slug', $request->platform);
});
}
if ($request->has('genre')) {
$query->whereHas('genres', function ($q) use ($request) {
$q->where('slug', $request->genre);
});
}
if ($request->has('year')) {
$query->whereYear('first_release_date', $request->year);
}
if ($request->has('rating_range')) {
$range = explode('-', $request->rating_range);
if (count($range) === 2) {
$min = (float)$range[0];
$max = (float)$range[1];
$query->whereBetween('rating', [$min, $max]);
}
}
$games = $query->paginate(12)->withQueryString();
// Get data for filter dropdowns
$platforms = \App\Models\Platform::orderBy('name')->get();
$genres = \App\Models\Genre::orderBy('name')->get();
// Get unique years from games
$years = Game::selectRaw('YEAR(first_release_date) as year')
->whereNotNull('first_release_date')
->distinct()
->orderBy('year', 'desc')
->pluck('year')
->filter()
->values();
return view('games.index', compact('games', 'platforms', 'genres', 'years'));
}
public function show(Game $game)
{
$game->load(['platforms', 'genres', 'screenshots', 'videos', 'similar_games', 'dlcs', 'reviews.user']);
return view('games.show', compact('game'));
}
}