<?php
// sitemap.php - రూట్ ఫోల్డర్ లో పెట్టండి
require_once 'config/config.php';
require_once 'database/Database.php';

// అవుట్‌పుట్ ఫార్మాట్ XML గా సెట్ చేయడం
header("Content-Type: text/xml;charset=iso-8859-1");

// డేటాబేస్ కనెక్షన్
$db = Database::getInstance()->getConnection();

// బేస్ URL ని కరెక్ట్ గా సెట్ చేయడం
$siteUrl = BASE_URL;
if (substr($siteUrl, -1) !== '/') {
    $siteUrl .= '/';
}

echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";

// ----------------------------------------------------
// 1. STATIC PAGES (హోమ్, అబౌట్, కాంటాక్ట్ తదితరాలు)
// ----------------------------------------------------
$staticPages = [
    '' => ['priority' => '1.0', 'changefreq' => 'weekly'],
    'shop' => ['priority' => '0.9', 'changefreq' => 'daily'],
    'about' => ['priority' => '0.8', 'changefreq' => 'monthly'],
    'contact' => ['priority' => '0.8', 'changefreq' => 'monthly'],
    'privacy' => ['priority' => '0.5', 'changefreq' => 'yearly'],
    'terms' => ['priority' => '0.5', 'changefreq' => 'yearly'],
    'refund' => ['priority' => '0.5', 'changefreq' => 'yearly']
];

foreach ($staticPages as $page => $data) {
    echo "  <url>\n";
    echo "    <loc>" . htmlspecialchars($siteUrl . $page) . "</loc>\n";
    echo "    <changefreq>" . $data['changefreq'] . "</changefreq>\n";
    echo "    <priority>" . $data['priority'] . "</priority>\n";
    echo "  </url>\n";
}

// ----------------------------------------------------
// 2. DYNAMIC CATEGORIES (డేటాబేస్ నుండి)
// ----------------------------------------------------
try {
    $catStmt = $db->query("SELECT slug FROM categories WHERE status = 'active'");
    while ($cat = $catStmt->fetch(PDO::FETCH_ASSOC)) {
        echo "  <url>\n";
        echo "    <loc>" . htmlspecialchars($siteUrl . 'shop?category=' . $cat['slug']) . "</loc>\n";
        echo "    <changefreq>weekly</changefreq>\n";
        echo "    <priority>0.8</priority>\n";
        echo "  </url>\n";
    }
} catch (PDOException $e) {
    // కేటగిరీ టేబుల్ లేకపోతే లైట్ తీసుకోండి
}

// ----------------------------------------------------
// 3. DYNAMIC PRODUCTS (డేటాబేస్ నుండి)
// ----------------------------------------------------
try {
    // కేవలం పబ్లిష్ అయిన ప్రొడక్ట్స్ మాత్రమే లాగుతాం
    $prodStmt = $db->query("SELECT slug, updated_at, created_at FROM products WHERE status = 'published'");
    while ($prod = $prodStmt->fetch(PDO::FETCH_ASSOC)) {
        // లాస్ట్ అప్‌డేట్ అయిన టైమ్ లేదా క్రియేట్ అయిన టైమ్ (Google కి అర్థమవ్వడానికి ISO 8601 ఫార్మాట్)
        $date = !empty($prod['updated_at']) ? $prod['updated_at'] : $prod['created_at'];
        $lastmod = date('c', strtotime($date));

        echo "  <url>\n";
        echo "    <loc>" . htmlspecialchars($siteUrl . 'product/' . $prod['slug']) . "</loc>\n";
        echo "    <lastmod>" . $lastmod . "</lastmod>\n";
        echo "    <changefreq>weekly</changefreq>\n";
        echo "    <priority>0.7</priority>\n";
        echo "  </url>\n";
    }
} catch (PDOException $e) {
    // ప్రొడక్ట్ టేబుల్ లేకపోతే లైట్ తీసుకోండి
}

echo "</urlset>";
?>