public function prosesBooking() {
    if($_SERVER['REQUEST_METHOD'] == 'POST') {
        $user_id = $_SESSION['user_id'];
        $kapal_id = (int)$_POST['kapal_id'];
        $route_id = (int)$_POST['route_id']; // <-- PASTIKAN INI ADA
        $tanggal = $_POST['tanggal'];
        $durasi = (int)$_POST['durasi'];
        $tipe = $_POST['tipe'];
        
        // Data diri dari form
        $nama_lengkap = trim($_POST['nama_lengkap'] ?? '');
        $no_hp = trim($_POST['no_hp'] ?? '');
        $nik_ktp = trim($_POST['nik_ktp'] ?? '');
        $jumlah_penumpang = (int)($_POST['jumlah_penumpang'] ?? 1);
        $catatan = trim($_POST['catatan'] ?? '');
        
        // VALIDASI (sama seperti sebelumnya)
        // ...
        
        // Ambil harga dari kapal_rute
        $stmt = $this->pdo->prepare("
            SELECT harga_jual, k.nama_kapal, k.pemilik_id 
            FROM kapal_rute kr 
            JOIN kapal k ON kr.kapal_id = k.id 
            WHERE kr.kapal_id = ? AND kr.route_id = ? AND kr.is_active = 1
        ");
        $stmt->execute([$kapal_id, $route_id]);
        $rute = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if(!$rute) {
            $error = "Rute tidak tersedia untuk kapal ini.";
            require_once __DIR__ . '/../views/wisatawan/booking.php';
            return;
        }
        
        $harga = $rute['harga_jual'];
        $total = $harga * $durasi;
        $kode = 'BOOK-' . strtoupper(uniqid());
        
        try {
            $this->pdo->beginTransaction();
            
            // INSERT dengan route_id
            $stmt = $this->pdo->prepare("
                INSERT INTO pesanan 
                (user_id, kapal_id, kode_pesanan, tanggal_berangkat, durasi_jam, total_harga, 
                 status_pesanan, status_pembayaran, jenis_booking, route_id,
                 nama_lengkap, no_hp, nik_ktp, jumlah_tiket, catatan) 
                VALUES (?, ?, ?, ?, ?, ?, 'pending', 'belum_bayar', ?, ?, ?, ?, ?, ?, ?)
            ");
            $stmt->execute([
                $user_id, $kapal_id, $kode, $tanggal, $durasi, $total,
                $tipe, $route_id,
                $nama_lengkap, $no_hp, $nik_ktp, $jumlah_penumpang, $catatan
            ]);
            $pesanan_id = $this->pdo->lastInsertId();
            
            // ... lanjutkan (private/shared, notifikasi)
            
            $this->pdo->commit();
            header("Location: ?page=wisatawan&action=status&id=" . $pesanan_id);
            exit;
            
        } catch(Exception $e) {
            $this->pdo->rollBack();
            $error = "Gagal memproses pesanan: " . $e->getMessage();
            require_once __DIR__ . '/../views/wisatawan/booking.php';
        }
    }
}
