<?php
session_start();
require_once 'includes/config.php';

if (!isset($_SESSION['vai_tro']) || $_SESSION['vai_tro'] !== 'admin') {
    die("Khu vực đặc quyền Ban Quản Trị.");
}

$thong_bao = '';
$loi = '';

// ── XÁC NHẬN THANH TOÁN + GHI NHẬN AFFILIATE ──
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['xac_nhan_thanh_toan'])) {
    $id_don = (int)$_POST['id_don_hang'];

    try {
        $pdo->beginTransaction();

        // Lấy thông tin đơn hàng
        $don = $pdo->prepare("SELECT * FROM don_hang_gian_hang WHERE id = ? FOR UPDATE");
        $don->execute([$id_don]);
        $don = $don->fetch();

        if (!$don) throw new Exception("Không tìm thấy đơn hàng.");
        if (!in_array($don['trang_thai'], ['cho_xu_ly', 'cho_xac_nhan'], true)) throw new Exception("Đơn hàng đã được xử lý trước đó.");

        // 1. Cập nhật trạng thái đơn hàng
        $pdo->prepare("UPDATE don_hang_gian_hang SET trang_thai = 'da_thanh_toan' WHERE id = ?")
            ->execute([$id_don]);

        // 2. Tính hoa hồng affiliate nếu có người giới thiệu
        if (!empty($don['nguoi_gioi_thieu_id']) && $don['nguoi_gioi_thieu_id'] > 0) {
            $tong_tien = (float)$don['tong_tien'];

            // Lấy tỷ lệ affiliate từ chính sách kinh doanh của sản phẩm
            $cs = $pdo->prepare("SELECT ty_le_affiliate FROM chinh_sach_kinh_doanh WHERE id_san_pham = ? LIMIT 1");
            $cs->execute([$don['id_san_pham']]);
            $chinh_sach = $cs->fetch();
            $ty_le = $chinh_sach ? (float)$chinh_sach['ty_le_affiliate'] : 10; // mặc định 10%

            $hoa_hong = round($tong_tien * $ty_le / 100);

            if ($hoa_hong > 0) {
                // Ghi vào lich_su_affiliate
                $pdo->exec("CREATE TABLE IF NOT EXISTS lich_su_affiliate (
                    id INT AUTO_INCREMENT PRIMARY KEY,
                    nguoi_gioi_thieu_id INT NOT NULL,
                    nguoi_duoc_gioi_thieu_id INT DEFAULT NULL,
                    ten_noi_dung VARCHAR(500) DEFAULT NULL,
                    so_tien_hoa_hong DECIMAL(15,0) NOT NULL DEFAULT 0,
                    trang_thai ENUM('cho_duyet','da_thanh_toan') NOT NULL DEFAULT 'cho_duyet',
                    ngay_ghi_nhan TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
                    KEY idx_nguoi_gt (nguoi_gioi_thieu_id)
                ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");

                $pdo->prepare("INSERT INTO lich_su_affiliate (nguoi_gioi_thieu_id, nguoi_duoc_gioi_thieu_id, ten_noi_dung, so_tien_hoa_hong, trang_thai)
                    VALUES (?, NULL, ?, ?, 'cho_duyet')")
                    ->execute([
                        $don['nguoi_gioi_thieu_id'],
                        "Hoa hồng đơn hàng #{$don['ma_don_hang']} — {$don['ten_san_pham']}",
                        $hoa_hong
                    ]);

                // Cộng vào ví thành viên
                $pdo->exec("CREATE TABLE IF NOT EXISTS vi_thanh_vien (
                    id INT AUTO_INCREMENT PRIMARY KEY,
                    thanh_vien_id INT NOT NULL UNIQUE,
                    so_du DECIMAL(15,0) NOT NULL DEFAULT 0,
                    ngay_cap_nhat TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
                ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");

                $pdo->prepare("INSERT INTO vi_thanh_vien (thanh_vien_id, so_du) VALUES (?, ?)
                    ON DUPLICATE KEY UPDATE so_du = so_du + VALUES(so_du)")
                    ->execute([$don['nguoi_gioi_thieu_id'], $hoa_hong]);

                // Ghi lịch sử giao dịch tài chính
                $pdo->exec("CREATE TABLE IF NOT EXISTS giao_dich_tai_chinh (
                    id INT AUTO_INCREMENT PRIMARY KEY,
                    id_nguoi_nhan INT NOT NULL,
                    loai_giao_dich VARCHAR(50) DEFAULT 'hoa_hong',
                    so_tien DECIMAL(15,0) NOT NULL DEFAULT 0,
                    trang_thai VARCHAR(30) DEFAULT 'cho_duyet',
                    ghi_chu TEXT DEFAULT NULL,
                    ngay_tao TIMESTAMP DEFAULT CURRENT_TIMESTAMP
                ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");

                $pdo->prepare("INSERT INTO giao_dich_tai_chinh (id_nguoi_nhan, loai_giao_dich, so_tien, trang_thai, ghi_chu)
                    VALUES (?, 'hoa_hong', ?, 'cho_duyet', ?)")
                    ->execute([
                        $don['nguoi_gioi_thieu_id'],
                        $hoa_hong,
                        "Hoa hồng {$ty_le}% đơn hàng #{$don['ma_don_hang']}"
                    ]);
            }
        }

        $pdo->commit();
        $thong_bao = "✅ Đã xác nhận thanh toán đơn <strong>{$don['ma_don_hang']}</strong>" .
            (!empty($don['nguoi_gioi_thieu_id']) ? " — Đã ghi nhận hoa hồng affiliate." : "");

    } catch (Exception $e) {
        $pdo->rollBack();
        $loi = "Lỗi: " . $e->getMessage();
    }
}

// ── ĐIỀU PHỐI KHO ──
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['dieu_phoi_kho'])) {
    $id_don_hang   = (int)$_POST['id_don_hang'];
    $id_to_chuc_kho = (int)$_POST['id_to_chuc_kho'];
    try {
        $pdo->prepare("UPDATE don_hang_gian_hang SET id_kho_xuat = ?, trang_thai = 'dang_giao' WHERE id = ?")
            ->execute([$id_to_chuc_kho, $id_don_hang]);
        $thong_bao = "✅ Đã xuất lệnh điều phối giao hàng cho cơ sở chi nhánh!";
    } catch (PDOException $e) {
        $loi = "Lỗi điều phối: " . $e->getMessage();
    }
}

// ── LẤY DANH SÁCH ĐƠN HÀNG ──
try {
    $ds_don = $pdo->query("
        SELECT dh.*, sp.ten_san_pham, sp.hinh_anh,
               tv.ho_ten AS ten_nguoi_gioi_thieu,
               cs.ty_le_affiliate
        FROM don_hang_gian_hang dh
        JOIN san_pham_gian_hang sp ON dh.id_san_pham = sp.id
        LEFT JOIN thanh_vien tv ON dh.nguoi_gioi_thieu_id = tv.id
        LEFT JOIN chinh_sach_kinh_doanh cs ON cs.id_san_pham = dh.id_san_pham
        ORDER BY dh.ngay_dat DESC
    ")->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
    die("Lỗi hệ thống: " . $e->getMessage());
}

$trang_thai_label = [
    'cho_xu_ly'     => ['label' => '⏳ Chờ xử lý',     'color' => '#f59e0b', 'bg' => '#fffbeb'],
    'cho_xac_nhan'  => ['label' => '⏳ Chờ xử lý',     'color' => '#f59e0b', 'bg' => '#fffbeb'],
    'da_thanh_toan' => ['label' => '💳 Đã thanh toán',  'color' => '#2563eb', 'bg' => '#eff6ff'],
    'dang_giao'     => ['label' => '🚚 Đang giao',      'color' => '#7c3aed', 'bg' => '#f5f3ff'],
    'hoan_thanh'    => ['label' => '✅ Hoàn thành',     'color' => '#16a34a', 'bg' => '#f0fdf4'],
    'da_huy'        => ['label' => '❌ Đã hủy',         'color' => '#dc2626', 'bg' => '#fef2f2'],
];
?>
<!DOCTYPE html>
<html lang="vi">
<head>
    <meta charset="UTF-8">
    <title>Điều Phối Đơn Hàng</title>
    <link rel="stylesheet" href="includes/admin-style.css">
    <style>
        body { font-family: sans-serif; background: #f1f5f9; padding: 20px; }
        .wrap { max-width: 1300px; margin: 0 auto; }
        h2 { color: #1e3a8a; margin: 0 0 4px; }
        .sub { color: #64748b; font-size: 0.88rem; margin-bottom: 20px; }

        .alert { padding: 12px 16px; border-radius: 8px; margin-bottom: 18px; font-size: 0.92rem; }
        .alert.ok  { background: #dcfce7; color: #166534; border: 1px solid #bbf7d0; }
        .alert.err { background: #fee2e2; color: #991b1b; border: 1px solid #fecaca; }

        /* Bộ lọc tab */
        .filter-bar { display: flex; gap: 8px; margin-bottom: 18px; flex-wrap: wrap; }
        .f-btn { padding: 8px 16px; border-radius: 8px; border: 1.5px solid #e2e8f0; background: #fff; font-size: 0.85rem; font-weight: 700; cursor: pointer; color: #475569; transition: .15s; }
        .f-btn:hover, .f-btn.active { background: #2563eb; color: #fff; border-color: #2563eb; }

        /* Bảng */
        .table-wrap { background: #fff; border-radius: 14px; box-shadow: 0 4px 16px rgba(15,23,42,.06); overflow: hidden; }
        table { width: 100%; border-collapse: collapse; }
        th { background: #f8fafc; padding: 12px 14px; text-align: left; font-size: 0.82rem; font-weight: 700; color: #475569; text-transform: uppercase; letter-spacing: .4px; border-bottom: 2px solid #e2e8f0; }
        td { padding: 14px; border-bottom: 1px solid #f1f5f9; font-size: 0.9rem; vertical-align: top; }
        tr:last-child td { border-bottom: none; }
        tr:hover td { background: #fafafa; }

        .badge-tt { display: inline-block; padding: 4px 10px; border-radius: 6px; font-size: 0.8rem; font-weight: 700; }
        .product-thumb { width: 48px; height: 48px; object-fit: cover; border-radius: 8px; border: 1px solid #e2e8f0; }
        .product-thumb-placeholder { width: 48px; height: 48px; background: #f1f5f9; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 1.4rem; }

        .btn { display: inline-block; padding: 7px 14px; border-radius: 8px; border: none; font-size: 0.82rem; font-weight: 700; cursor: pointer; transition: .15s; }
        .btn-confirm { background: #16a34a; color: #fff; }
        .btn-confirm:hover { background: #15803d; }
        .btn-dispatch { background: #f59e0b; color: #fff; }
        .btn-dispatch:hover { background: #d97706; }
        .btn-cancel { background: #fee2e2; color: #dc2626; }
        .btn-cancel:hover { background: #fecaca; }

        select.kho-select { padding: 7px 10px; border: 1.5px solid #e2e8f0; border-radius: 8px; font-size: 0.85rem; width: 100%; margin-bottom: 6px; }

        .affiliate-tag { display: inline-flex; align-items: center; gap: 4px; background: #eff6ff; color: #1d4ed8; padding: 3px 8px; border-radius: 6px; font-size: 0.78rem; font-weight: 700; }
        .no-affiliate { color: #94a3b8; font-size: 0.82rem; }

        .ma-don { font-family: monospace; font-weight: 800; color: #1d4ed8; font-size: 0.95rem; }
    </style>
</head>
<body>
<?php require_once 'includes/menu-admin.php'; ?>
<div class="khu-vuc-du-lieu">
<div class="noi-dung-chinh">
<div class="wrap">

    <h2>🚚 Điều Phối & Xác Nhận Đơn Hàng</h2>
    <p class="sub">Xác nhận thanh toán → hệ thống tự động ghi nhận hoa hồng affiliate. Sau đó điều phối kho xuất hàng.</p>

    <?php if ($thong_bao): ?><div class="alert ok"><?= $thong_bao ?></div><?php endif; ?>
    <?php if ($loi): ?><div class="alert err"><?= $loi ?></div><?php endif; ?>

    <!-- Bộ lọc -->
    <div class="filter-bar">
        <button class="f-btn active" onclick="locDon('tat_ca', this)">Tất cả (<?= count($ds_don) ?>)</button>
        <?php
        $dem = [];
        foreach ($ds_don as $d) $dem[$d['trang_thai']] = ($dem[$d['trang_thai']] ?? 0) + 1;
        foreach ($trang_thai_label as $key => $info):
            if (empty($dem[$key])) continue;
        ?>
        <button class="f-btn" onclick="locDon('<?= $key ?>', this)"><?= $info['label'] ?> (<?= $dem[$key] ?>)</button>
        <?php endforeach; ?>
    </div>

    <div class="table-wrap">
        <table>
            <thead>
                <tr>
                    <th>Sản phẩm</th>
                    <th>Mã đơn</th>
                    <th>Khách hàng</th>
                    <th>Địa chỉ</th>
                    <th>Tổng tiền</th>
                    <th>Affiliate</th>
                    <th>Trạng thái</th>
                    <th>Thao tác</th>
                </tr>
            </thead>
            <tbody>
            <?php if (empty($ds_don)): ?>
                <tr><td colspan="8" style="text-align:center; padding:40px; color:#94a3b8;">Chưa có đơn hàng nào.</td></tr>
            <?php else: ?>
            <?php foreach ($ds_don as $don):
                $tt = $trang_thai_label[$don['trang_thai']] ?? ['label' => $don['trang_thai'], 'color' => '#64748b', 'bg' => '#f8fafc'];
                $hoa_hong_du_kien = round((float)$don['tong_tien'] * (float)($don['ty_le_affiliate'] ?? 10) / 100);
            ?>
            <tr data-tt="<?= $don['trang_thai'] ?>">
                <td>
                    <div style="display:flex; gap:10px; align-items:center;">
                        <?php if (!empty($don['hinh_anh'])): ?>
                            <img src="<?= htmlspecialchars($don['hinh_anh']) ?>" class="product-thumb">
                        <?php else: ?>
                            <div class="product-thumb-placeholder">🎵</div>
                        <?php endif; ?>
                        <div>
                            <div style="font-weight:700; color:#0f172a; font-size:0.88rem;"><?= htmlspecialchars($don['ten_san_pham']) ?></div>
                            <?php if (!empty($don['ma_hieu'])): ?>
                            <div style="font-size:0.78rem; color:#94a3b8;">SKU: <?= htmlspecialchars($don['ma_hieu']) ?></div>
                            <?php endif; ?>
                        </div>
                    </div>
                </td>
                <td><span class="ma-don"><?= htmlspecialchars($don['ma_don_hang']) ?></span><br>
                    <span style="font-size:0.75rem; color:#94a3b8;"><?= date('d/m/Y H:i', strtotime($don['ngay_dat'])) ?></span>
                </td>
                <td>
                    <strong><?= htmlspecialchars($don['ten_khach_hang']) ?></strong><br>
                    <span style="color:#2563eb; font-size:0.85rem;"><?= htmlspecialchars($don['so_dien_thoai']) ?></span>
                </td>
                <td style="max-width:180px; font-size:0.85rem; color:#475569;"><?= htmlspecialchars($don['dia_chi']) ?></td>
                <td style="font-weight:800; color:#dc2626;"><?= number_format((int)$don['tong_tien']) ?> ₫</td>
                <td>
                    <?php if (!empty($don['nguoi_gioi_thieu_id'])): ?>
                        <span class="affiliate-tag">🤝 <?= htmlspecialchars($don['ten_nguoi_gioi_thieu'] ?? 'ID:'.$don['nguoi_gioi_thieu_id']) ?></span><br>
                        <span style="font-size:0.78rem; color:#64748b; margin-top:4px; display:block;">
                            HH: <?= number_format($hoa_hong_du_kien) ?> ₫ (<?= (int)($don['ty_le_affiliate'] ?? 10) ?>%)
                        </span>
                    <?php else: ?>
                        <span class="no-affiliate">— Không có</span>
                    <?php endif; ?>
                </td>
                <td>
                    <span class="badge-tt" style="color:<?= $tt['color'] ?>; background:<?= $tt['bg'] ?>;">
                        <?= $tt['label'] ?>
                    </span>
                </td>
                <td>
                    <?php if ($don['trang_thai'] === 'cho_xu_ly'): ?>
                        <!-- Xác nhận thanh toán -->
                        <form method="POST" onsubmit="return confirm('Xác nhận đã nhận được thanh toán cho đơn <?= htmlspecialchars($don['ma_don_hang']) ?>?');" style="margin-bottom:8px;">
                            <input type="hidden" name="id_don_hang" value="<?= $don['id'] ?>">
                            <button type="submit" name="xac_nhan_thanh_toan" class="btn btn-confirm">💳 Xác nhận TT</button>
                        </form>

                    <?php elseif ($don['trang_thai'] === 'da_thanh_toan'): ?>
                        <!-- Điều phối kho -->
                        <form method="POST">
                            <input type="hidden" name="id_don_hang" value="<?= $don['id'] ?>">
                            <?php
                            $kho_list = $pdo->prepare("SELECT tv.id, tv.ho_ten, ql.so_luong_ton FROM quan_ly_kho_hang ql JOIN thanh_vien tv ON ql.id_to_chuc = tv.id WHERE ql.id_san_pham = ? AND ql.so_luong_ton > 0");
                            $kho_list->execute([$don['id_san_pham']]);
                            $khos = $kho_list->fetchAll();
                            ?>
                            <select name="id_to_chuc_kho" class="kho-select" required>
                                <option value="">-- Chọn kho xuất --</option>
                                <?php foreach ($khos as $k): ?>
                                    <option value="<?= $k['id'] ?>"><?= htmlspecialchars($k['ho_ten']) ?> (<?= $k['so_luong_ton'] ?>)</option>
                                <?php endforeach; ?>
                            </select>
                            <button type="submit" name="dieu_phoi_kho" class="btn btn-dispatch">🚚 Xuất kho</button>
                        </form>

                    <?php elseif ($don['trang_thai'] === 'dang_giao'): ?>
                        <!-- Hoàn thành -->
                        <form method="POST" onsubmit="return confirm('Đánh dấu đơn này đã giao thành công?');">
                            <input type="hidden" name="id_don_hang" value="<?= $don['id'] ?>">
                            <input type="hidden" name="hoan_thanh_don" value="1">
                            <button type="submit" class="btn btn-confirm">✅ Hoàn thành</button>
                        </form>

                    <?php else: ?>
                        <span style="color:#94a3b8; font-size:0.82rem;">—</span>
                    <?php endif; ?>
                </td>
            </tr>
            <?php endforeach; ?>
            <?php endif; ?>
            </tbody>
        </table>
    </div>

    <div style="margin-top:16px; font-size:0.85rem; color:#64748b; background:#fffbeb; border:1px solid #fde68a; border-radius:10px; padding:14px 16px;">
        💡 <strong>Luồng xử lý:</strong>
        Khách đặt hàng → <strong>Chờ xử lý</strong> →
        Admin xác nhận chuyển khoản → <strong>Đã thanh toán</strong> + hoa hồng affiliate tự động ghi vào ví →
        Admin chọn kho xuất → <strong>Đang giao</strong> →
        Giao thành công → <strong>Hoàn thành</strong>
    </div>

</div>
</div>
</div>

<?php
// Xử lý hoàn thành đơn
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['hoan_thanh_don'])) {
    $id_don = (int)$_POST['id_don_hang'];
    try {
        $pdo->prepare("UPDATE don_hang_gian_hang SET trang_thai = 'hoan_thanh' WHERE id = ? AND trang_thai = 'dang_giao'")
            ->execute([$id_don]);
        echo "<script>location.reload();</script>";
    } catch (Exception $e) {}
}
?>

<script>
function locDon(tt, btn) {
    document.querySelectorAll('.f-btn').forEach(b => b.classList.remove('active'));
    btn.classList.add('active');
    document.querySelectorAll('tbody tr[data-tt]').forEach(tr => {
        tr.style.display = (tt === 'tat_ca' || tr.dataset.tt === tt) ? '' : 'none';
    });
}
</script>
</body>
</html>
