findAll(); // Kirim data ke view landing page (folder: user/landing_page) return view('user/landing_page/index', ['wisata' => $wisata]); } // ======================== // Method: detail($id) // Tujuan: Menampilkan detail salah satu wisata berdasarkan ID // ======================== public function detail($id) { // Inisialisasi semua model yang digunakan $wisataModel = new WisataModel(); // Model wisata $reviewModel = new ReviewsModels(); // Model ulasan $subModel = new SubKriteriaModel(); // Model sub-kriteria (jenis wisata) // Ambil data wisata berdasarkan ID $wisata = $wisataModel->find($id); // Jika data wisata tidak ditemukan, tampilkan halaman error 404 if (!$wisata) { throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound("Wisata tidak ditemukan."); } // Ambil semua ulasan berdasarkan wisata_id dan urutkan dari yang terbaru $ulasan = $reviewModel->where('wisata_id', $id) ->orderBy('created_at', 'DESC') ->findAll(); // Hitung rata-rata rating dan jumlah total ulasan dari review $rating = $reviewModel->select('AVG(rating) as avg_rating, COUNT(*) as total_ulasan') ->where('wisata_id', $id) ->get() ->getRow(); // Ambil data sub-kriteria (jenis wisata) berdasarkan foreign key dari tabel wisata $jenisWisata = $subModel->find($wisata['sub_kriteria_id']); // Kirim semua data ke view detail wisata (folder: user/wisata) return view('user/wisata/detail', [ 'wisata' => $wisata, // Data wisata utama 'ulasan' => $ulasan, // Semua ulasan terkait wisata 'rating' => $rating, // Rata-rata rating & total ulasan 'jenisWisata' => $jenisWisata // Informasi jenis wisata dari sub_kriteria ]); } }