<?php
/**
 * batal_pesanan.php - Halaman Konfirmasi Pembatalan Pesanan
 * DIPERBAIKI - Bisa membatalkan pesanan confirmed jika telat > 2 jam
 */
$activeMenu = 'riwayatPesanan';
$pageTitle = 'Konfirmasi Pembatalan - Wisatawan';
include __DIR__ . '/../layouts/header.php';

// Data dari controller
$pesanan = $pesanan ?? [];

if (empty($pesanan)) {
    ?>
    <div class="alert alert-danger">
        <i class="fas fa-exclamation-circle"></i>
        Pesanan tidak ditemukan.
    </div>
    <a href="?page=wisatawan&action=riwayat" class="btn btn-primary">← Kembali ke Riwayat</a>
    <?php
    include __DIR__ . '/../layouts/footer.php';
    exit;
}

// ==============================================
// CEK APAKAH BISA BATALKAN
// ==============================================
$canCancel = false;
$errorMessage = '';
$isCompleted = ($pesanan['status_pesanan'] == 'completed' || $pesanan['status_pesanan'] == 'selesai');
$isConfirmed = ($pesanan['status_pesanan'] == 'confirmed' || $pesanan['status_pesanan'] == 'dikonfirmasi');
$isPaid = ($pesanan['status_pembayaran'] == 'lunas');
$isCancelled = ($pesanan['status_pesanan'] == 'cancelled' || $pesanan['status_pesanan'] == 'dibatalkan');
$isPending = ($pesanan['status_pesanan'] == 'pending' || $pesanan['status_pesanan'] == 'menunggu');
$isDijemput = !empty($pesanan['waktu_jemput_aktual']);

// ==============================================
// 🔥 LOGIKA YANG BENAR
// ==============================================

// 1. Cek apakah sudah selesai
if ($isCompleted) {
    $errorMessage = '⚠️ Pesanan sudah selesai. Tidak dapat dibatalkan.';
} 
// 2. Cek apakah sudah dibatalkan
elseif ($isCancelled) {
    $errorMessage = '⚠️ Pesanan sudah dibatalkan sebelumnya.';
} 
// 3. Cek apakah masih pending (bisa batalkan kapan saja)
elseif ($isPending) {
    $canCancel = true;
}
// 4. Cek apakah confirmed - harus cek telat atau sudah dijemput
elseif ($isConfirmed && $isPaid) {
    // 4a. Cek apakah sudah dijemput
    if ($isDijemput) {
        $errorMessage = '✅ Anda sudah dijemput oleh supir. Tidak dapat membatalkan.';
    } 
    // 4b. Cek apakah sudah lewat 2 jam dari waktu jemput
    else {
        $tanggalBerangkat = new DateTime($pesanan['tanggal_berangkat']);
        $now = new DateTime();
        
        $waktuJemputRencana = !empty($pesanan['waktu_jemput_rencana']) 
            ? DateTime::createFromFormat('H:i:s', $pesanan['waktu_jemput_rencana']) 
            : new DateTime('08:00:00');
        
        $batasWaktuJemput = clone $tanggalBerangkat;
        $batasWaktuJemput->setTime(
            $waktuJemputRencana->format('H'),
            $waktuJemputRencana->format('i'),
            $waktuJemputRencana->format('s')
        );
        $batasWaktuJemput->modify('+2 hours');
        
        $isTerlambat = ($now > $batasWaktuJemput);
        $isTanggalLewat = ($tanggalBerangkat < $now);
        
        // 🔥 BISA BATALKAN JIKA TERLAMBAT > 2 JAM ATAU TANGGAL LEWAT
        if ($isTerlambat || $isTanggalLewat) {
            $canCancel = true;
            $errorMessage = '⚠️ Supir belum menjemput lebih dari 2 jam. Anda bisa membatalkan pesanan.';
        } else {
            // Hitung sisa waktu
            $diff = $now->diff($batasWaktuJemput);
            $jam = $diff->h;
            $menit = $diff->i;
            $errorMessage = "⏳ Belum melewati batas waktu 2 jam. Silakan tunggu " . ($jam > 0 ? "{$jam} jam " : "") . "{$menit} menit lagi. Atau hubungi supir.";
        }
    }
} 
// 5. Status lain
elseif (!$isPaid) {
    $errorMessage = '⚠️ Pembayaran belum lunas. Silakan selesaikan pembayaran terlebih dahulu.';
} 
else {
    $errorMessage = '⚠️ Pesanan tidak dapat dibatalkan. Status saat ini: ' . $pesanan['status_pesanan'];
}

// ==============================================
// TAMPILAN
// ==============================================
?>

<style>
    .btn {
        display: inline-flex;
        align-items: center;
        gap: 0.4rem;
        padding: 0.5rem 1.2rem;
        border: none;
        border-radius: 8px;
        font-weight: 600;
        font-size: 0.85rem;
        cursor: pointer;
        transition: all 0.3s ease;
        text-decoration: none;
    }
    .btn:hover {
        transform: translateY(-1px);
        box-shadow: 0 4px 12px rgba(0,0,0,0.08);
    }
    .btn-primary {
        background: #2b6cb0;
        color: #fff;
    }
    .btn-primary:hover {
        background: #1a4a7a;
        color: #fff;
    }
    .btn-secondary {
        background: #e2e8f0;
        color: #4a5568;
    }
    .btn-secondary:hover {
        background: #cbd5e0;
        color: #1a202c;
    }
    .btn-danger {
        background: #ef4444;
        color: #fff;
    }
    .btn-danger:hover {
        background: #dc2626;
        color: #fff;
    }
    .btn-success {
        background: #22c55e;
        color: #fff;
    }
    .btn-success:hover {
        background: #16a34a;
        color: #fff;
    }
    .alert {
        display: flex;
        align-items: flex-start;
        gap: 10px;
        padding: 0.8rem 1.2rem;
        border-radius: 10px;
        border-left: 4px solid transparent;
        margin-bottom: 1rem;
    }
    .alert-success {
        background: #d1fae5;
        color: #065f46;
        border-left-color: #22c55e;
    }
    .alert-danger {
        background: #fee2e2;
        color: #991b1b;
        border-left-color: #ef4444;
    }
    .alert-warning {
        background: #fef3c7;
        color: #92400e;
        border-left-color: #f59e0b;
    }
    .alert-info {
        background: #dbeafe;
        color: #1e40af;
        border-left-color: #3b82f6;
    }
    .card {
        background: #fff;
        border-radius: 16px;
        padding: 2rem;
        box-shadow: 0 4px 24px rgba(0,0,0,0.06);
        border: 1px solid #e2e8f0;
        max-width: 600px;
        margin: 2rem auto;
    }
    .info-row {
        display: flex;
        justify-content: space-between;
        padding: 0.3rem 0;
        border-bottom: 1px solid #f7fafc;
    }
    .info-row:last-child {
        border-bottom: none;
    }
    .info-label {
        color: #718096;
        font-size: 0.85rem;
        font-weight: 500;
    }
    .info-value {
        font-size: 0.85rem;
        color: #1a202c;
        font-weight: 600;
    }
    .info-card {
        background: #f7fafc;
        border-radius: 12px;
        padding: 1rem 1.5rem;
        margin-bottom: 1.5rem;
        text-align: left;
    }
    .text-center {
        text-align: center;
    }
    .icon-large {
        font-size: 3rem;
        margin-bottom: 0.5rem;
    }
    .flex-center {
        display: flex;
        gap: 1rem;
        justify-content: center;
        flex-wrap: wrap;
        margin-top: 1rem;
    }
</style>

<div class="container">
    <div class="card">
        <div class="text-center">
            <div class="icon-large">
                <?= $canCancel ? '⚠️' : '🚫' ?>
            </div>
            
            <h2 style="font-size:1.4rem; font-weight:700; color:#1a202c; margin-bottom:0.5rem;">
                <?= $canCancel ? 'Konfirmasi Pembatalan' : 'Tidak Dapat Membatalkan' ?>
            </h2>
            
            <!-- ========================================== -->
            <!-- 🔥 INFORMASI PESANAN -->
            <!-- ========================================== -->
            <div class="info-card" style="text-align:left;">
                <h4 style="margin-bottom:0.8rem; color:#2d3748; font-size:0.95rem;">
                    <i class="fas fa-file-invoice"></i> Informasi Pesanan
                </h4>
                <div class="info-row">
                    <span class="info-label">Kode Pesanan</span>
                    <span class="info-value"><?= htmlspecialchars($pesanan['kode_pesanan']) ?></span>
                </div>
                <div class="info-row">
                    <span class="info-label">Kapal</span>
                    <span class="info-value"><?= htmlspecialchars($pesanan['nama_kapal']) ?></span>
                </div>
                <div class="info-row">
                    <span class="info-label">Tanggal Berangkat</span>
                    <span class="info-value"><?= date('d/m/Y', strtotime($pesanan['tanggal_berangkat'])) ?></span>
                </div>
                <div class="info-row">
                    <span class="info-label">Waktu Jemput</span>
                    <span class="info-value">
                        <?= !empty($pesanan['waktu_jemput_rencana']) 
                            ? date('H:i', strtotime($pesanan['waktu_jemput_rencana'])) 
                            : '08:00' ?> WIB
                    </span>
                </div>
                <div class="info-row">
                    <span class="info-label">Status Pesanan</span>
                    <span class="info-value">
                        <?php
                        $statusMap = [
                            'pending' => '⏳ Menunggu Verifikasi',
                            'confirmed' => '✅ Dikonfirmasi',
                            'dikonfirmasi' => '✅ Dikonfirmasi',
                            'completed' => '🏁 Selesai',
                            'selesai' => '🏁 Selesai',
                            'cancelled' => '❌ Dibatalkan',
                            'dibatalkan' => '❌ Dibatalkan',
                        ];
                        echo $statusMap[$pesanan['status_pesanan']] ?? ucfirst($pesanan['status_pesanan']);
                        ?>
                    </span>
                </div>
                <div class="info-row">
                    <span class="info-label">Total Harga</span>
                    <span class="info-value" style="color:#2b6cb0; font-size:1rem;">
                        Rp <?= number_format($pesanan['total_harga'], 0, ',', '.') ?>
                    </span>
                </div>
                <?php if(!empty($pesanan['waktu_jemput_aktual'])): ?>
                <div class="info-row" style="background:#d1fae5; padding:0.3rem 0.5rem; border-radius:4px; margin-top:0.3rem;">
                    <span class="info-label">✅ Sudah Dijemput</span>
                    <span class="info-value" style="color:#065f46;">
                        <?= date('d/m/Y H:i', strtotime($pesanan['waktu_jemput_aktual'])) ?>
                    </span>
                </div>
                <?php endif; ?>
            </div>
            
            <!-- ========================================== -->
            <!-- 🔥 PESAN ERROR ATAU KONFIRMASI -->
            <!-- ========================================== -->
            <?php if($canCancel): ?>
                <div class="alert alert-warning" style="text-align:left;">
                    <i class="fas fa-exclamation-triangle" style="font-size:1.2rem;"></i>
                    <div>
                        <strong>⚠️ Perhatian!</strong>
                        <p style="margin:0.3rem 0 0;">
                            <?php if(!empty($errorMessage)): ?>
                                <?= $errorMessage ?>
                            <?php else: ?>
                                Anda yakin ingin membatalkan pesanan ini? Tindakan ini <strong>TIDAK DAPAT DIBATALKAN</strong>.
                            <?php endif; ?>
                        </p>
                        <p style="margin:0.5rem 0 0; font-size:0.85rem; color:#92400e;">
                            <i class="fas fa-info-circle"></i>
                            Setelah dibatalkan, Anda bisa mengajukan <strong>Claim Pengembalian Dana</strong>.
                        </p>
                    </div>
                </div>
                
                <div class="flex-center">
                    <a href="?page=wisatawan&action=status&id=<?= $pesanan['id'] ?>" class="btn btn-secondary">
                        <i class="fas fa-arrow-left"></i> Kembali
                    </a>
                    <a href="?page=wisatawan&action=prosesBatalPesanan&id=<?= $pesanan['id'] ?>" 
                       class="btn btn-danger" 
                       onclick="return confirm('⚠️ Yakin ingin membatalkan pesanan ini?\n\n📌 Kode: <?= htmlspecialchars($pesanan['kode_pesanan']) ?>\n💰 Total: Rp <?= number_format($pesanan['total_harga'], 0, ',', '.') ?>\n\nTindakan ini TIDAK DAPAT DIBATALKAN!')">
                        <i class="fas fa-times"></i> Ya, Batalkan Pesanan
                    </a>
                </div>
                
            <?php else: ?>
                <div class="alert alert-danger" style="text-align:left;">
                    <i class="fas fa-times-circle" style="font-size:1.2rem;"></i>
                    <div>
                        <strong>❌ Tidak Dapat Membatalkan</strong>
                        <p style="margin:0.3rem 0 0;">
                            <?= $errorMessage ?>
                        </p>
                    </div>
                </div>
                
                <div class="flex-center">
                    <a href="?page=wisatawan&action=status&id=<?= $pesanan['id'] ?>" class="btn btn-primary">
                        <i class="fas fa-arrow-left"></i> Kembali ke Detail
                    </a>
                    <?php if($isConfirmed && !$isDijemput && $isPaid): ?>
                        <a href="?page=wisatawan&action=ajukanClaim&pesanan_id=<?= $pesanan['id'] ?>" class="btn btn-danger">
                            <i class="fas fa-hand-holding-usd"></i> Ajukan Claim
                        </a>
                    <?php endif; ?>
                </div>
            <?php endif; ?>
        </div>
    </div>
</div>

<?php include __DIR__ . '/../layouts/footer.php'; ?>