authorize('create', [Review::class, $game]); if ($game->reviews()->where('user_id', auth()->id())->exists()) { return response()->json(['message' => 'You have already reviewed this game.'], 409); } $data = $request->validate([ 'body' => 'required|string|min:50', 'rating' => 'nullable|integer|min:1|max:10', 'has_spoilers' => 'boolean', ]); $review = Review::create([ 'user_id' => auth()->id(), 'game_id' => $game->id, 'body' => $data['body'], 'rating' => $data['rating'] ?? null, 'has_spoilers' => $data['has_spoilers'] ?? false, ]); $review->load('user'); return response()->json(['success' => true, 'review' => $review]); } public function update(Request $request, Review $review) { $this->authorize('update', $review); $data = $request->validate([ 'body' => 'required|string|min:50', 'rating' => 'nullable|integer|min:1|max:10', 'has_spoilers' => 'boolean', ]); $review->update($data); return response()->json(['success' => true, 'review' => $review]); } public function destroy(Review $review) { $this->authorize('delete', $review); $review->delete(); return response()->json(['success' => true]); } }