/**
 * cart.js  — نظام السلة (localStorage)
 * ضع هذا الملف في: /admin/js/cart.js  أو في مجلد الموقع الجذر
 */

const Cart = (function () {
    const KEY = 'medshop_cart';

    function getAll() {
        try { return JSON.parse(localStorage.getItem(KEY)) || []; }
        catch { return []; }
    }

    function save(items) {
        localStorage.setItem(KEY, JSON.stringify(items));
        updateBadge();
    }

    function count() {
        return getAll().reduce((s, i) => s + i.qty, 0);
    }

    function updateBadge() {
        const n = count();
        document.querySelectorAll('.cart-badge').forEach(el => {
            el.textContent = n;
            el.style.display = n > 0 ? 'flex' : 'none';
        });
    }

    function add(item) {
        // item = { id, variant_id, name, price, image, attributes, max_qty }
        const items = getAll();
        const key = item.id + '_' + (item.variant_id || 0) + '_' + JSON.stringify(item.attributes || {});
        const idx = items.findIndex(i => i._key === key);
        if (idx >= 0) {
            const newQty = items[idx].qty + (item.qty || 1);
            items[idx].qty = Math.min(newQty, item.max_qty || 99);
        } else {
            items.push({ ...item, qty: item.qty || 1, _key: key });
        }
        save(items);
        return items;
    }

    function remove(key) {
        save(getAll().filter(i => i._key !== key));
    }

    function updateQty(key, qty) {
        const items = getAll();
        const idx = items.findIndex(i => i._key === key);
        if (idx >= 0) {
            if (qty <= 0) { items.splice(idx, 1); }
            else { items[idx].qty = qty; }
            save(items);
        }
    }

    function clear() { save([]); }

    function total() {
        return getAll().reduce((s, i) => s + i.price * i.qty, 0);
    }

    // تحديث Badge عند تحميل الصفحة
    document.addEventListener('DOMContentLoaded', updateBadge);

    return { getAll, add, remove, updateQty, clear, count, total, updateBadge };
})();