<?php
require_once __DIR__ . '/includes/functions.php';
require_once __DIR__ . '/includes/features.php';
require_once __DIR__ . '/includes/inventory.php';

// Slug parametresinden ürünü çek
$slug = trim($_GET['slug'] ?? '', '/');
if ($slug === '') redirect('/');

$product = db_one('SELECT * FROM products WHERE slug = ? AND is_active = 1 LIMIT 1', [$slug]);
if (!$product) {
    http_response_code(404);
    $pageTitle    = 'Ürün bulunamadı';
    $pageDesc     = 'Aradığınız ürün bulunamadı.';
    $pageRobots   = 'noindex, nofollow';
    ?>
<!DOCTYPE html>
<html lang="tr">
<?php include __DIR__ . '/includes/head.php'; ?>
<body>
<?php include __DIR__ . '/includes/body-start.php'; ?>
    <main id="wrapper">
<?php include __DIR__ . '/includes/header.php'; ?>
        <section class="section-page-title text-center flat-spacing-2">
            <div class="container">
                <div class="main-page-title">
                    <div class="breadcrumbs">
                        <a href="/" class="text-caption-01 cl-text-3 link">Ana Sayfa</a>
                        <i class="icon icon-CaretRightThin cl-text-3"></i>
                        <p class="text-caption-01">Ürün bulunamadı</p>
                    </div>
                    <h3>Aradığınız ürün bulunamadı</h3>
                    <p class="cl-text-2 mt-3">Bu ürün kaldırılmış veya yayından alınmış olabilir.</p>
                    <div class="mt-4 d-flex justify-content-center gap-2 flex-wrap">
                        <a href="/" class="tf-btn animate-btn">Anasayfa</a>
                        <a href="/collection" class="tf-btn-line-2 fw-semibold">Tüm Ürünler</a>
                    </div>
                </div>
            </div>
        </section>
<?php include __DIR__ . '/includes/footer.php'; ?>
    </main>
<?php include __DIR__ . '/includes/mobile-menu.php'; ?>
<?php include __DIR__ . '/includes/bottom-toolbar.php'; ?>
<?php include __DIR__ . '/includes/scripts.php'; ?>
</body>
</html>
<?php
    exit;
}

// View count
db_exec('UPDATE products SET view_count = view_count + 1 WHERE id = ?', [(int) $product['id']]);

// Son baktıkları listesine ekle
recently_viewed_add((int) $product['id']);

// Galeri
$gallery = [];
if (!empty($product['gallery'])) {
    $g = is_array($product['gallery']) ? $product['gallery'] : (json_decode($product['gallery'], true) ?: []);
    foreach ($g as $img) $gallery[] = product_image_url((string) $img);
}
if (empty($gallery) && !empty($product['image'])) {
    $gallery[] = product_image_url($product['image']);
}
if (empty($gallery)) {
    $gallery[] = '/assets/images/product/product-1.jpg';
}

// Renkler / Bedenler
$colors = product_colors($product);
$sizes = [];
if (!empty($product['sizes'])) {
    $s = is_array($product['sizes']) ? $product['sizes'] : (json_decode($product['sizes'], true) ?: []);
    foreach ($s as $item) {
        if (is_string($item)) {
            $sizes[] = ['size' => $item, 'in_stock' => 1];
        } elseif (is_array($item)) {
            $sizes[] = [
                'size'     => $item['size'] ?? '',
                'in_stock' => isset($item['in_stock']) ? (int) $item['in_stock'] : 1,
            ];
        }
    }
}
if (empty($sizes)) {
    foreach (['XS', 'S', 'M', 'L', 'XL'] as $s) {
        $sizes[] = ['size' => $s, 'in_stock' => 1];
    }
}

$discount = product_discount($product);
$displayPrice = product_display_price($product);

// Varyantlar (renk × beden matrisi) — varsa frontend'de variant_id ile sepete eklemek için
$productVariants = variants_for_product((int) $product['id'], true);
$productTags = tags_for_product((int) $product['id']);

// B2B fiyat (kullanıcı kurumsalsa indirim)
if (!empty($_SESSION['user_id'])) {
    $b2bUser = db_one('SELECT account_type, corporate_status, price_tier FROM users WHERE id = ?', [(int)$_SESSION['user_id']]);
    if ($b2bUser && ($b2bUser['account_type'] ?? '') === 'corporate' && ($b2bUser['corporate_status'] ?? '') === 'approved') {
        $b2bPrice = product_price_for_user($product, $b2bUser);
        if ($b2bPrice < $displayPrice) {
            $displayPrice = $b2bPrice;
            $product['b2b_price'] = $b2bPrice;
        }
    }
}
$categoryName = !empty($product['category_id'])
    ? db_value('SELECT name FROM categories WHERE id = ?', [(int) $product['category_id']])
    : null;

// İlgili ürünler
$relatedProducts = $product['category_id']
    ? db_all('SELECT * FROM products WHERE is_active = 1 AND id != ? AND category_id = ? ORDER BY RAND() LIMIT 4',
        [(int) $product['id'], (int) $product['category_id']])
    : db_all('SELECT * FROM products WHERE is_active = 1 AND id != ? ORDER BY RAND() LIMIT 4',
        [(int) $product['id']]);

// Aynı modelin diğer renk versiyonları (model_code eşleşmesi)
$modelColors = [];
if (!empty($product['model_code'])) {
    $modelColors = db_all(
        'SELECT id, name, slug, image, gallery, colors FROM products
         WHERE model_code = ? AND id != ? AND is_active = 1
         ORDER BY id ASC',
        [$product['model_code'], (int) $product['id']]
    );
}

// Marka bilgisi (varsa)
$productBrand = null;
if (!empty($product['brand_id'])) {
    $productBrand = db_one('SELECT id, name, slug, logo FROM brands WHERE id = ? AND is_active = 1', [(int) $product['brand_id']]);
}

$pageTitle = $product['meta_title'] ?: $product['name'];
$pageDesc  = $product['meta_description']
    ?: ($product['short_description']
        ?: ($product['description']
            ? mb_substr(strip_tags($product['description']), 0, 160)
            : SITE_DESC));

// SEO: Open Graph & Schema
$pageType     = 'product';
$pageImage    = !empty($product['image']) ? product_image_url($product['image']) : null;
$pageKeywords = trim(implode(', ', array_filter([
    $product['name'],
    $categoryName,
    !empty($product['brand']) ? $product['brand'] : 'MODANNA',
    'kadın giyim',
])), ', ');
$canonicalUrl = SITE_URL . '/product/' . $product['slug'];
$breadcrumbs  = [
    ['name' => 'Ana Sayfa',   'url' => '/'],
    ['name' => 'Tüm Ürünler', 'url' => '/collection'],
];
if ($categoryName) {
    // kategori slug'ını bul
    $catSlug = (string) db_value('SELECT slug FROM categories WHERE id = ?', [(int) $product['category_id']]);
    if ($catSlug !== '') {
        $breadcrumbs[] = ['name' => $categoryName, 'url' => '/kategori/' . $catSlug];
    }
}
$breadcrumbs[] = ['name' => $product['name'], 'url' => $canonicalUrl];
$productData  = $product;

// Funnel — ürün görüntüleme
try {
    require_once __DIR__ . '/includes/funnel.php';
    @funnel_track('product_view', ['product_id' => (int) $product['id']]);
} catch (Throwable $e) {}
?>
<!DOCTYPE html>
<html lang="tr">
<?php include __DIR__ . '/includes/head.php'; ?>
<body>
<?php include __DIR__ . '/includes/body-start.php'; ?>

    <main id="wrapper">
<?php include __DIR__ . '/includes/header.php'; ?>

<?php include __DIR__ . '/sections/product-single.php'; ?>
<?php include __DIR__ . '/sections/product-description.php'; ?>

<?php if (!empty($productTags)): ?>
<section class="container py-3">
    <div class="d-flex flex-wrap align-items-center gap-2">
        <strong>Etiketler:</strong>
        <?php foreach ($productTags as $t): ?>
            <a href="/etiket/<?= e($t['slug']) ?>" class="badge bg-light text-dark border" style="text-decoration:none;font-size:13px;padding:6px 10px;">
                #<?= e($t['name']) ?>
            </a>
        <?php endforeach; ?>
    </div>
</section>
<?php endif; ?>

<?php if (!empty($productVariants)): ?>
<script>
window.MODANNA_VARIANTS = <?= json_encode(array_map(function($v) {
    return [
        'id' => (int)$v['id'], 'color' => $v['color'], 'size' => $v['size'],
        'sku' => $v['sku'], 'stock' => (int)$v['stock'],
        'price' => $v['sale_price'] ?? $v['price'] ?? null,
    ];
}, $productVariants), JSON_UNESCAPED_UNICODE) ?>;

// Sepete eklerken color+size'ı variant ID'ye eşle
(function(){
    function findVariant(color, size) {
        return (window.MODANNA_VARIANTS || []).find(function(v) {
            return v.color === color && v.size === size;
        });
    }
    document.addEventListener('click', function(e){
        var btn = e.target.closest('[data-add-cart-product-id], .btn-add-to-cart');
        if (!btn) return;
        var size = document.querySelector('input[name="size"]:checked')?.value
                || document.querySelector('[data-selected-size]')?.dataset.selectedSize;
        var color = document.querySelector('input[name="color"]:checked')?.value
                || document.querySelector('[data-selected-color]')?.dataset.selectedColor;
        var v = findVariant(color, size);
        if (v) {
            var form = btn.closest('form') || btn.form;
            if (form && !form.querySelector('input[name="variant_id"]')) {
                var inp = document.createElement('input');
                inp.type = 'hidden'; inp.name = 'variant_id'; inp.value = v.id;
                form.appendChild(inp);
            } else if (form) {
                form.querySelector('input[name="variant_id"]').value = v.id;
            }
        }
    }, true);
})();
</script>
<?php endif; ?>

<?php /* Sayfa kalabalığını azaltmak için Benzer Ürünler bölümü kaldırıldı.
       Birlikte Alınanlar + Son Baktıklarınız yeterli (2 bölüm) */ ?>
<?php include __DIR__ . '/sections/product-cross-sell.php'; ?>
<?php include __DIR__ . '/sections/product-recently-viewed.php'; ?>

<?php include __DIR__ . '/includes/footer.php'; ?>
    </main>

<?php include __DIR__ . '/sections/product-size-guide.php'; ?>
<?php include __DIR__ . '/sections/product-stock-notify.php'; ?>
<?php include __DIR__ . '/sections/product-price-alert.php'; ?>
<?php include __DIR__ . '/sections/product-ask-question.php'; ?>
<?php include __DIR__ . '/includes/mobile-menu.php'; ?>
<?php include __DIR__ . '/includes/bottom-toolbar.php'; ?>

<?php include __DIR__ . '/includes/scripts.php'; ?>
<?php include __DIR__ . '/sections/product-lightbox.php'; ?>
</body>
</html>
