<?php
require_once __DIR__ . '/header.php';

$message = '';
$message_type = '';

// ------------------------------------------------------------
// จัดการการอัปเดต / ลบ สินค้าในตะกร้า
// ------------------------------------------------------------
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) {
    $action = $_POST['action'];

    // 1. เพิ่มสินค้าลงตะกร้า (จากหน้า product_detail.php)
    if ($action === 'add_to_cart') {
        $p_id  = filter_input(INPUT_POST, 'product_id', FILTER_VALIDATE_INT);
        $qty   = filter_input(INPUT_POST, 'quantity', FILTER_VALIDATE_INT) ?: 1;
        $color = trim($_POST['color'] ?? '');
        $size  = trim($_POST['size'] ?? '');

        if ($p_id && $qty > 0) {
            $stmt = $pdo->prepare("SELECT stock, name FROM products WHERE id = ?");
            $stmt->execute([$p_id]);
            $prod = $stmt->fetch();

            if ($prod) {
                // สร้าง key ที่เป็นเอกลักษณ์
                $cart_key = $p_id . '_' . $color . '_' . $size;

                $current_qty = 0;
                if (isset($_SESSION['cart'][$cart_key])) {
                    if (is_array($_SESSION['cart'][$cart_key])) {
                        $current_qty = $_SESSION['cart'][$cart_key]['quantity'];
                    } else {
                        $current_qty = (int)$_SESSION['cart'][$cart_key];
                    }
                }

                $new_qty = $current_qty + $qty;

                if ($new_qty <= $prod['stock']) {
                    $_SESSION['cart'][$cart_key] = [
                        'product_id' => $p_id,
                        'quantity'   => $new_qty,
                        'color'      => $color,
                        'size'       => $size
                    ];
                    $message = "เพิ่ม <strong>" . htmlspecialchars($prod['name']) . "</strong> ลงในตะกร้าเรียบร้อยแล้ว!";
                    $details = [];
                    if (!empty($color) && $color !== 'เริ่มต้น') $details[] = "สี: " . $color;
                    if (!empty($size)) $details[] = "ไซส์: " . $size;
                    if (!empty($details)) {
                        $message .= " (" . implode(', ', $details) . ")";
                    }
                    $message_type = "success";
                } else {
                    $message = "ขออภัย สต็อกสินค้าไม่เพียงพอ (มีจำหน่ายสูงสุด {$prod['stock']} ชิ้น)";
                    $message_type = "danger";
                }
            }
        }
    }

    // 2. อัปเดตจำนวนสินค้าในตะกร้า
    if ($action === 'update') {
        $quantities = $_POST['quantity'] ?? [];
        foreach ($quantities as $cart_key => $qty) {
            $qty = (int)$qty;
            if ($qty <= 0) {
                unset($_SESSION['cart'][$cart_key]);
            } else {
                $parts = explode('_', $cart_key);
                $p_id = (int)$parts[0];

                $stmt = $pdo->prepare("SELECT stock FROM products WHERE id = ?");
                $stmt->execute([$p_id]);
                $stock = $stmt->fetchColumn();

                if ($qty <= $stock) {
                    if (isset($_SESSION['cart'][$cart_key]) && is_array($_SESSION['cart'][$cart_key])) {
                        $_SESSION['cart'][$cart_key]['quantity'] = $qty;
                    } else {
                        // fallback
                        $_SESSION['cart'][$cart_key] = [
                            'product_id' => $p_id,
                            'quantity'   => $qty,
                            'color'      => $parts[1] ?? '',
                            'size'       => $parts[2] ?? ''
                        ];
                    }
                } else {
                    if (isset($_SESSION['cart'][$cart_key]) && is_array($_SESSION['cart'][$cart_key])) {
                        $_SESSION['cart'][$cart_key]['quantity'] = $stock;
                    } else {
                        $_SESSION['cart'][$cart_key] = [
                            'product_id' => $p_id,
                            'quantity'   => $stock,
                            'color'      => $parts[1] ?? '',
                            'size'       => $parts[2] ?? ''
                        ];
                    }
                    $message = "ปรับจำนวนสินค้าตามสต็อกที่มีอยู่จริงเรียบร้อยแล้ว";
                    $message_type = "warning";
                }
            }
        }
        if (empty($message)) {
            $message = "อัปเดตจำนวนสินค้าในตะกร้าเรียบร้อยแล้ว";
            $message_type = "success";
        }
    }

    // 3. ลบสินค้าออกจากตะกร้า
    if ($action === 'remove' && isset($_POST['cart_key'])) {
        $cart_key = $_POST['cart_key'];
        unset($_SESSION['cart'][$cart_key]);
        $message = "ลบรายการสินค้าออกจากตะกร้าเรียบร้อยแล้ว";
        $message_type = "info";
    }

    // 4. ล้างสินค้าทั้งหมดในตะกร้า
    if ($action === 'clear') {
        unset($_SESSION['cart']);
        $message = "ล้างรายการสินค้าในตะกร้าทั้งหมดเรียบร้อยแล้ว";
        $message_type = "info";
    }
}

// ------------------------------------------------------------
// ดึงรายละเอียดสินค้าที่อยู่ในตะกร้าจาก DB
// ------------------------------------------------------------
$cart_items = [];
$total_price = 0;

if (isset($_SESSION['cart']) && !empty($_SESSION['cart'])) {
    $product_ids = [];
    foreach ($_SESSION['cart'] as $cart_key => $item) {
        if (is_array($item)) {
            $product_ids[] = (int)$item['product_id'];
        } else {
            $parts = explode('_', $cart_key);
            $product_ids[] = (int)$parts[0];
        }
    }
    $product_ids = array_unique($product_ids);

    if (!empty($product_ids)) {
        $placeholders = implode(',', array_fill(0, count($product_ids), '?'));
        $stmt = $pdo->prepare("SELECT * FROM products WHERE id IN ($placeholders)");
        $stmt->execute($product_ids);
        $products_db = $stmt->fetchAll();

        $products_map = [];
        foreach ($products_db as $p) {
            $products_map[$p['id']] = $p;
        }

        foreach ($_SESSION['cart'] as $cart_key => $item) {
            if (is_array($item)) {
                $p_id  = $item['product_id'];
                $qty   = $item['quantity'];
                $color = $item['color'];
                $size  = $item['size'];
            } else {
                $parts = explode('_', $cart_key);
                $p_id  = (int)$parts[0];
                $qty   = (int)$item;
                $color = $parts[1] ?? '';
                $size  = $parts[2] ?? '';
            }

            if (isset($products_map[$p_id])) {
                $prod = $products_map[$p_id];

                $display_image = $prod['image'];
                if (!empty($color) && $color !== 'เริ่มต้น') {
                    $stmt_v = $pdo->prepare("SELECT image_front FROM product_variants WHERE product_id = ? AND color_name = ?");
                    $stmt_v->execute([$p_id, $color]);
                    $var_img = $stmt_v->fetchColumn();
                    if ($var_img) {
                        $display_image = $var_img;
                    }
                }

                $subtotal = $prod['price'] * $qty;
                $total_price += $subtotal;

                $cart_items[] = [
                    'cart_key' => $cart_key,
                    'id'       => $p_id,
                    'name'     => $prod['name'],
                    'price'    => $prod['price'],
                    'image'    => $display_image,
                    'stock'    => $prod['stock'],
                    'color'    => $color,
                    'size'     => $size,
                    'quantity' => $qty,
                    'subtotal' => $subtotal
                ];
            }
        }
    }
}
?>

<div class="row mb-4">
    <div class="col-12">
        <h3 class="fw-bold mb-1"><i class="fa-solid fa-cart-shopping text-primary me-2"></i>ตะกร้าสินค้าของคุณ</h3>
        <p class="text-muted small">ตรวจสอบรายการสินค้าและจำนวนก่อนดำเนินการชำระเงิน</p>
    </div>
</div>

<!-- Alert Message -->
<?php if (!empty($message)): ?>
    <div class="alert alert-<?= $message_type ?> alert-dismissible fade show rounded-3 shadow-sm d-flex align-items-center mb-4" role="alert">
        <i class="fa-solid fa-circle-info me-3 fs-5"></i>
        <div><?= $message ?></div>
        <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
    </div>
<?php endif; ?>

<?php if (empty($cart_items)): ?>
    <!-- Empty Cart View -->
    <div class="card border-0 shadow-sm rounded-4 text-center py-5">
        <div class="card-body">
            <div class="mb-3 text-muted">
                <i class="fa-solid fa-basket-shopping display-1 opacity-50"></i>
            </div>
            <h4 class="fw-bold">ยังไม่มีสินค้าในตะกร้า</h4>
            <p class="text-muted">เลือกซื้อสินค้าไอทีที่น่าสนใจในร้านค้าของเราได้ทันที</p>
            <a href="index.php" class="btn btn-primary-custom rounded-pill px-4 py-2 mt-2">
                <i class="fa-solid fa-store me-2"></i> ไปหน้าเลือกซื้อสินค้า
            </a>
        </div>
    </div>
<?php else: ?>
    <!-- Cart Table View -->
    <form method="POST" action="cart.php">
        <input type="hidden" name="action" value="update">
        <div class="row g-4">
            <div class="col-lg-8">
                <div class="card border-0 shadow-sm rounded-4 overflow-hidden mb-3">
                    <div class="card-body p-0">
                        <div class="table-responsive">
                            <table class="table table-hover align-middle mb-0">
                                <thead class="table-light">
                                    <tr>
                                        <th style="width: 40%;" class="ps-4">สินค้า</th>
                                        <th style="width: 18%;">ราคาต่อชิ้น</th>
                                        <th style="width: 18%;">จำนวน</th>
                                        <th style="width: 18%;">ราคารวม</th>
                                        <th style="width: 6%;" class="text-center pe-4">ลบ</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php foreach ($cart_items as $item): ?>
                                        <tr>
                                            <td class="ps-4">
                                                <div class="d-flex align-items-center gap-3 py-2">
                                                    <?php $img = get_product_image_url($item['image']); ?>
                                                    <img src="<?= htmlspecialchars($img) ?>" class="rounded-3 border" style="width: 60px; height: 60px; object-fit: cover;" alt="">
                                                    <div>
                                                        <h6 class="mb-0 fw-semibold text-dark"><?= htmlspecialchars($item['name']) ?></h6>
                                                        <div class="d-flex flex-wrap gap-1 mt-1">
                                                            <?php if (!empty($item['color']) && $item['color'] !== 'เริ่มต้น'): ?>
                                                                <span class="badge bg-light text-dark border rounded-pill px-2 py-1" style="font-size: 0.7rem;">สี: <?= htmlspecialchars($item['color']) ?></span>
                                                            <?php endif; ?>
                                                            <?php if (!empty($item['size'])): ?>
                                                                <span class="badge bg-light text-dark border rounded-pill px-2 py-1" style="font-size: 0.7rem;">ไซส์: <?= htmlspecialchars($item['size']) ?></span>
                                                            <?php endif; ?>
                                                        </div>
                                                        <small class="text-muted d-block mt-1" style="font-size: 0.75rem;">คงเหลือ: <?= $item['stock'] ?> ชิ้น</small>
                                                    </div>
                                                </div>
                                            </td>
                                            <td class="fw-medium text-secondary">
                                                <?= format_price($item['price']) ?>
                                            </td>
                                            <td>
                                                <input type="number" name="quantity[<?= $item['cart_key'] ?>]" value="<?= $item['quantity'] ?>" min="1" max="<?= $item['stock'] ?>" class="form-control form-control-sm text-center fw-semibold quantity-input" style="width: 70px;" onchange="this.form.submit();">
                                            </td>
                                            <td class="fw-bold text-primary">
                                                <?= format_price($item['subtotal']) ?>
                                            </td>
                                            <td class="text-center pe-4">
                                                <button type="submit" name="action" value="remove" onclick="this.form.cart_key.value='<?= $item['cart_key'] ?>';" class="btn btn-outline-danger btn-sm rounded-circle p-0" style="width: 32px; height: 32px;" title="ลบรายการนี้">
                                                    <i class="fa-solid fa-trash-can"></i>
                                                </button>
                                            </td>
                                        </tr>
                                    <?php endforeach; ?>
                                </tbody>
                            </table>
                        </div>
                        <input type="hidden" name="cart_key" value="">
                    </div>
                    <div class="card-footer bg-white d-flex justify-content-between align-items-center p-3">
                        <a href="index.php" class="btn btn-outline-secondary btn-sm rounded-pill px-3">
                            <i class="fa-solid fa-arrow-left me-1"></i> เลือกซื้อสินค้าเพิ่ม
                        </a>
                        <div class="d-flex gap-2">
                            <button type="submit" name="action" value="clear" onclick="return confirm('คุณต้องการล้างสินค้าในตะกร้าทั้งหมดใช่หรือไม่?');" class="btn btn-outline-danger btn-sm rounded-pill px-3">
                                <i class="fa-solid fa-rotate-left me-1"></i> ล้างตะกร้า
                            </button>
                            <button type="submit" class="btn btn-primary btn-sm rounded-pill px-3">
                                <i class="fa-solid fa-sync me-1"></i> อัปเดตคำนวณใหม่
                            </button>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Summary Order Sidebar -->
            <div class="col-lg-4">
                <div class="card border-0 shadow-sm rounded-4">
                    <div class="card-body p-4">
                        <h5 class="fw-bold mb-3">สรุปรายการสั่งซื้อ</h5>
                        <div class="d-flex justify-content-between mb-2">
                            <span class="text-muted">จำนวนรวม</span>
                            <span class="fw-semibold"><?= get_cart_count() ?> ชิ้น</span>
                        </div>
                        <div class="d-flex justify-content-between mb-3">
                            <span class="text-muted">ค่าจัดส่ง</span>
                            <span class="text-success fw-semibold"><i class="fa-solid fa-truck-fast me-1"></i>ฟรีค่าจัดส่ง</span>
                        </div>
                        <hr>
                        <div class="d-flex justify-content-between align-items-center mb-4">
                            <span class="fw-bold fs-5">ราคารวมสุทธิ</span>
                            <span class="fw-bold fs-4 text-primary"><?= format_price($total_price) ?></span>
                        </div>

                        <?php if (is_logged_in()): ?>
                            <a href="checkout.php" class="btn btn-primary-custom w-100 py-2.5 rounded-pill fw-semibold fs-6">
                                <i class="fa-solid fa-credit-card me-2"></i>ดำเนินการชำระเงิน
                            </a>
                        <?php else: ?>
                            <div class="alert alert-warning py-2 small mb-3">
                                <i class="fa-solid fa-lock me-1"></i> กรุณาเข้าสู่ระบบก่อนทำการชำระเงิน
                            </div>
                            <a href="login.php" class="btn btn-primary-custom w-100 py-2.5 rounded-pill fw-semibold fs-6">
                                <i class="fa-solid fa-right-to-bracket me-2"></i>เข้าสู่ระบบเพื่อชำระเงิน
                            </a>
                        <?php endif; ?>
                    </div>
                </div>
            </div>
        </div>
    </form>
<?php endif; ?>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const inputs = document.querySelectorAll('.quantity-input');
    inputs.forEach(input => {
        // เมื่อเปลี่ยนค่าหรือกดปุ่มขึ้น-ลงให้ส่งฟอร์มคำนวณใหม่อัตโนมัติ
        input.addEventListener('input', function() {
            if (this.value !== '' && parseInt(this.value) >= 0) {
                // หน่วงเวลาเล็กน้อย 400ms เผื่อกรณีผู้ใช้พิมพ์ตัวเลขหลายหลัก
                clearTimeout(this.timer);
                this.timer = setTimeout(() => {
                    this.form.submit();
                }, 400);
            }
        });
    });
});
</script>

<?php require_once __DIR__ . '/footer.php'; ?>
