user_id !== Auth::id()) { abort(403, 'Akses tidak diizinkan.'); } // Otorisasi: Pastikan booking sudah pernah diulas atau belum if ($booking->review) { return redirect()->route('booking.history')->with('error', 'Anda sudah pernah memberikan ulasan untuk booking ini.'); } // Muat relasi yang diperlukan untuk ditampilkan di view $booking->load('table.venue'); return view('reviews.create', compact('booking')); } public function store(Request $request) { // 1. Validasi Input $request->validate([ 'booking_id' => 'required|exists:bookings,id|unique:reviews,booking_id', 'rating' => 'required|integer|min:1|max:5', 'comment' => 'required|string|max:2000', ], [ 'booking_id.unique' => 'Anda sudah pernah memberikan ulasan untuk booking ini.', 'rating.required' => 'Rating bintang wajib diisi.', 'comment.required' => 'Komentar ulasan wajib diisi.', ]); // 2. Cek Otorisasi $booking = Booking::find($request->booking_id); // Pastikan user yang login adalah pemilik booking tersebut if ($booking->user_id !== Auth::id()) { return redirect()->back()->with('error', 'Akses tidak diizinkan.'); } // 3. Simpan Ulasan Review::create([ 'user_id' => Auth::id(), 'venue_id' => $booking->table->venue_id, // Ambil venue_id dari relasi 'booking_id' => $booking->id, 'rating' => $request->rating, 'comment' => $request->comment, ]); // 4. Redirect dengan Pesan Sukses return redirect()->route('booking.history')->with('success', 'Terima kasih atas ulasan Anda!'); } }