middleware('auth', ['except' => ['index', 'show']]); } public function index(Game $game) { $reviews = $game->reviews()->with('user')->latest()->paginate(10); return view('reviews.index', compact('game', 'reviews')); } public function create(Game $game) { return view('reviews.create', compact('game')); } public function store(Request $request, Game $game) { $validated = $request->validate([ 'content' => 'required|string|min:10|max:1000', 'recommended' => 'sometimes|nullable|boolean', 'rating' => 'required|between:1,10', ]); if (!isset($validated['recommended'])) { $validated['recommended'] = false; } $review = new Review($validated); $review->user_id = Auth::id(); $review->game_id = $game->id; $review->save(); return redirect()->route('games.show', $game->slug) ->with('success', 'Review posted successfully!'); } public function show(Game $game, Review $review) { return view('reviews.show', compact('game', 'review')); } public function edit(Game $game, Review $review) { $this->authorize('update', $review); return view('reviews.edit', compact('game', 'review')); } public function update(Request $request, Game $game, Review $review) { $this->authorize('update', $review); $validated = $request->validate([ 'content' => 'required|string|min:10|max:1000', 'recommended' => 'required|boolean', 'rating' => 'required|integer|between:1,20', ]); $review->update($validated); return redirect()->route('games.show', $game->slug) ->with('success', 'Review updated successfully!'); } public function destroy(Game $game, Review $review) { $this->authorize('delete', $review); $review->delete(); return redirect()->route('games.show', $game->slug) ->with('success', 'Review deleted successfully!'); } }