<?php
// المسار: public/cart.php
// سلة المشتريات (منظمة + متناسقة مع الستايل + بدون تعارض في الفورمات)

declare(strict_types=1);

require_once __DIR__ . '/../includes/db.php';
$config = require __DIR__ . '/../config.php';

$base   = rtrim($config['base_url'] ?? '', '/');

if (session_status() !== PHP_SESSION_ACTIVE) {
    session_start();
}

/* =======================
   Helpers
======================= */
if (!function_exists('e')) {
    function e($v) {
        return htmlspecialchars((string)$v, ENT_QUOTES, 'UTF-8');
    }
}

if (!function_exists('asset_url')) {
    function asset_url(string $path): string {
        global $base;
        $path = trim($path);
        if ($path === '') return '';
        if (preg_match('~^https?://~i', $path)) return $path;
        if (str_starts_with($path, '/uploads/')) return $base . '/public' . $path;
        if (str_starts_with($path, '/public/'))  return $base . $path;
        if ($path[0] === '/') return $base . $path;
        return $base . '/' . ltrim($path, '/');
    }
}

if (!function_exists('price')) {
    function price(float $v): string {
        global $config;
        $baseCurrency = $config['currency_code'] ?? 'JOD';
        $selected     = $_SESSION['currency'] ?? $baseCurrency;
        $rates        = $config['currency_rates']   ?? [$baseCurrency => 1];
        $symbols      = $config['currency_symbols'] ?? [$baseCurrency => ($config['currency_symbol'] ?? 'د.أ')];

        $rate      = $rates[$selected] ?? 1;
        $converted = $v * $rate;
        $amount    = number_format($converted, 2);
        $symbol    = $symbols[$selected] ?? $selected;
        $pos       = $config['currency_position'] ?? 'after';

        return $pos === 'after' ? "$amount $symbol" : "$symbol $amount";
    }
}

/* =======================
   Session Cart
   شكل السلة: $_SESSION['cart'][product_id] = qty
======================= */
if (!isset($_SESSION['cart']) || !is_array($_SESSION['cart'])) {
    $_SESSION['cart'] = [];
}

/* =======================
   Actions (POST)
======================= */
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $action = $_POST['action'] ?? '';

    // إضافة منتج
    if ($action === 'add') {
        $pid = (int)($_POST['product_id'] ?? 0);
        $qty = max(1, (int)($_POST['qty'] ?? 1));

        if ($pid > 0) {
            $_SESSION['cart'][$pid] = ($_SESSION['cart'][$pid] ?? 0) + $qty;
        }

        // تحديث عداد السلة في الهيدر (اختياري لكن مفيد)
        $_SESSION['cart_count'] = array_sum($_SESSION['cart']);

        header('Location: ' . $base . '/public/cart.php?added=1');
        exit;
    }

    // تحديث الكميات
    if ($action === 'update') {
        if (isset($_POST['qty']) && is_array($_POST['qty'])) {
            foreach ($_POST['qty'] as $pid => $q) {
                $pid = (int)$pid;
                $q   = max(0, (int)$q);

                if ($pid <= 0) {
                    continue;
                }

                if ($q === 0) {
                    unset($_SESSION['cart'][$pid]);
                } else {
                    $_SESSION['cart'][$pid] = $q;
                }
            }
        }

        // تحديث العداد
        $_SESSION['cart_count'] = array_sum($_SESSION['cart']);
    }

    // إزالة منتج واحد
    if ($action === 'remove') {
        $pid = (int)($_POST['product_id'] ?? 0);
        if ($pid > 0 && isset($_SESSION['cart'][$pid])) {
            unset($_SESSION['cart'][$pid]);
        }

        $_SESSION['cart_count'] = array_sum($_SESSION['cart']);
    }

    // مسح السلة
    if ($action === 'clear') {
        $_SESSION['cart'] = [];
        $_SESSION['cart_count'] = 0;
    }
}

/* =======================
   Fetch Cart Items
======================= */
$items = [];
$total = 0.0;

if (!empty($_SESSION['cart'])) {
    $ids = array_map('intval', array_keys($_SESSION['cart']));
    $ids = array_values(array_unique(array_filter($ids, fn($v) => $v > 0)));

    if ($ids) {
        $in  = implode(',', array_fill(0, count($ids), '?'));
        $sql = "SELECT id, name, price, main_image FROM products WHERE id IN ($in)";

        try {
            $st = $pdo->prepare($sql);
            $st->execute($ids);
            $rows = $st->fetchAll(PDO::FETCH_ASSOC);
        } catch (Throwable $e) {
            $rows = [];
        }

        $map = [];
        foreach ($rows as $r) {
            $map[(int)$r['id']] = $r;
        }

        foreach ($_SESSION['cart'] as $pid => $qty) {
            $pid = (int)$pid;
            $qty = (int)$qty;

            if ($qty <= 0 || !isset($map[$pid])) {
                continue;
            }

            $p     = $map[$pid];
            $price = (float)$p['price'];
            $line  = $price * $qty;
            $total += $line;

            $imgPath = $p['main_image'] ?? '';
            $imgUrl  = $imgPath ? asset_url($imgPath) : '';

            $items[] = [
                'id'       => $pid,
                'name'     => $p['name'],
                'price'    => $price,
                'qty'      => $qty,
                'image'    => $imgUrl,
                'subtotal' => $line,
            ];
        }
    }
}

// تحديث عداد السلة النهائي (احتياط)
$_SESSION['cart_count'] = array_sum($_SESSION['cart']);

/* =======================
   View
======================= */
$page_title = 'سلة المشتريات';
include __DIR__ . '/partials/shop_header.php';
?>

<div class="container my-4">
  <!-- شريط علوي جميل بدل "العودة إلى أعلى" -->
  <div class="cart-hero">
    <div>
      <h1 class="cart-title">سلة المشتريات</h1>
      <p class="cart-sub">
        <?= $items ? 'راجع منتجاتك وقم بتحديث الكميات قبل إتمام الشراء.' : 'سلتك فارغة حاليًا، ابدأ التسوّق لإضافة منتجات.' ?>
      </p>
    </div>
    <div class="cart-hero-actions">
      <a href="<?= e($base) ?>/public/index.php" class="btn btn-outline-light btn-sm rounded-pill">
        <i class="bi bi-arrow-right"></i> العودة للرئيسية
      </a>
      <?php if ($items): ?>
        <a href="<?= e($base) ?>/public/index.php" class="btn btn-light btn-sm rounded-pill">
          <i class="bi bi-shop"></i> مواصلة التسوق
        </a>
      <?php endif; ?>
    </div>
  </div>

  <?php if (isset($_GET['added'])): ?>
    <div class="alert alert-success my-3">
      تمت إضافة المنتج إلى السلة.
    </div>
  <?php endif; ?>

  <?php if (!$items): ?>
    <div class="alert alert-info mt-3">
      سلتك فارغة حالياً.
    </div>
    <a class="btn btn-primary rounded-pill mt-2" href="<?= e($base) ?>/public/index.php">
      <i class="bi bi-shop"></i> ابدأ التسوق الآن
    </a>
  <?php else: ?>

    <!-- ملخص جانبي بسيط للإجمالي (اختياري) -->
    <div class="cart-layout">
      <div class="cart-main">
        <form method="post">
          <input type="hidden" name="action" value="update">

          <div class="table-responsive cart-table-wrap">
            <table class="table align-middle mb-0">
              <thead>
                <tr>
                  <th>المنتج</th>
                  <th>السعر</th>
                  <th style="width:140px">الكمية</th>
                  <th>الإجمالي</th>
                  <th class="text-end">إجراء</th>
                </tr>
              </thead>
              <tbody>
                <?php foreach ($items as $it): ?>
                  <tr>
                    <td>
                      <div class="d-flex align-items-center gap-2">
                        <?php if ($it['image']): ?>
                          <img
                            src="<?= e($it['image']) ?>"
                            alt=""
                            class="rounded"
                            style="height:50px;width:60px;object-fit:cover">
                        <?php else: ?>
                          <div class="bg-light rounded" style="height:50px;width:60px;"></div>
                        <?php endif; ?>
                        <a
                          href="<?= e($base) ?>/public/product.php?id=<?= (int)$it['id'] ?>"
                          class="text-decoration-none fw-semibold">
                          <?= e($it['name']) ?>
                        </a>
                      </div>
                    </td>
                    <td><?= e(price($it['price'])) ?></td>
                    <td>
                      <input
                        type="number"
                        name="qty[<?= (int)$it['id'] ?>]"
                        value="<?= (int)$it['qty'] ?>"
                        min="0"
                        class="form-control form-control-sm">
                    </td>
                    <td><?= e(price($it['subtotal'])) ?></td>
                    <td class="text-end">
                      <!-- زر إزالة مستقل بفورم منفصل (خارج الفورم الرئيسي) -->
                      <button
                        type="submit"
                        form="remove-form-<?= (int)$it['id'] ?>"
                        class="btn btn-sm btn-outline-danger rounded-pill">
                        <i class="bi bi-trash"></i> إزالة
                      </button>
                    </td>
                  </tr>
                <?php endforeach; ?>
                <tr>
                  <td colspan="3" class="text-end fw-bold">الإجمالي</td>
                  <td class="fw-bold"><?= e(price($total)) ?></td>
                  <td></td>
                </tr>
              </tbody>
            </table>
          </div>

          <div class="d-flex flex-wrap gap-2 mt-3">
            <button class="btn btn-outline-secondary rounded-pill" type="submit">
              <i class="bi bi-arrow-repeat"></i> تحديث السلة
            </button>

            <form method="post" class="d-inline">
              <input type="hidden" name="action" value="clear">
              <button
                class="btn btn-outline-danger rounded-pill"
                onclick="return confirm('مسح السلة بالكامل؟');">
                <i class="bi bi-x-circle"></i> مسح السلة
              </button>
            </form>

            <a
              class="btn btn-outline-primary rounded-pill"
              href="<?= e($base) ?>/public/index.php">
              <i class="bi bi-shop"></i> مواصلة التسوق
            </a>

            <a
              class="ms-auto btn btn-success rounded-pill"
              href="<?= e($base) ?>/public/checkout.php">
              <i class="bi bi-credit-card"></i> إتمام الشراء
            </a>
          </div>
        </form>
      </div>

      <aside class="cart-summary">
        <div class="cart-summary-card">
          <div class="cart-summary-title">ملخص الطلب</div>
          <div class="cart-summary-row">
            <span>مجموع المنتجات</span>
            <span><?= e(price($total)) ?></span>
          </div>
          <div class="cart-summary-row small text-muted">
            <span>الشحن</span>
            <span>يتم احتسابه في صفحة الدفع</span>
          </div>
          <hr>
          <div class="cart-summary-row cart-summary-total">
            <span>الإجمالي الكلي</span>
            <span><?= e(price($total)) ?></span>
          </div>
          <a
            class="btn btn-success w-100 rounded-pill mt-3"
            href="<?= e($base) ?>/public/checkout.php">
            <i class="bi bi-credit-card"></i> إتمام الشراء الآن
          </a>
        </div>
      </aside>
    </div>

  <?php endif; ?>
</div>

<?php include __DIR__ . '/partials/shop_footer.php'; ?>