<?php
/**
 * Seed محصولات دمو برای فروشگاه
 * اجرا: php run-shop-seed.php
 */
declare(strict_types=1);

define('ACC_BASE_PATH', __DIR__);
require_once __DIR__ . '/standalone/bootstrap.php';

header('Content-Type: application/json; charset=utf-8');

global $wpdb;

$categories = [
    ['slug' => 'home-appliances', 'name' => 'لوازم خانگی'],
    ['slug' => 'cooling',         'name' => 'سرمایشی و گرمایشی'],
    ['slug' => 'electronics',     'name' => 'صوتی و تصویری'],
];

$products = [
    ['name' => 'کولر گازی ۱۸۰۰۰ اینچی', 'slug' => 'ac-18000', 'cat' => 'cooling', 'price' => 45000000, 'sale' => 42500000, 'sku' => 'AC-18000', 'desc' => 'کولر گازی اینورتر ۱۸ هزار با مصرف انرژی A++'],
    ['name' => 'یخچال ساید بای سامسونگ', 'slug' => 'fridge-samsung', 'cat' => 'home-appliances', 'price' => 38500000, 'sale' => 35900000, 'sku' => 'FR-SAM-01', 'desc' => 'یخچال فریزر ساید بای ۲۵ فوت'],
    ['name' => 'ماشین لباسشویی ۸ کیلویی', 'slug' => 'washer-8kg', 'cat' => 'home-appliances', 'price' => 22000000, 'sale' => null, 'sku' => 'WM-8KG', 'desc' => 'ماشین لباسشویی اتوماتیک ۸ کیلو'],
    ['name' => 'تلویزیون ۵۵ اینچ ۴K', 'slug' => 'tv-55-4k', 'cat' => 'electronics', 'price' => 18500000, 'sale' => null, 'sku' => 'TV-55-4K', 'desc' => 'تلویزیون هوشمند ۵۵ اینچ Ultra HD'],
    ['name' => 'مایکروویو ۳۰ لیتری', 'slug' => 'microwave-30', 'cat' => 'home-appliances', 'price' => 5200000, 'sale' => 4800000, 'sku' => 'MW-30', 'desc' => 'مایکروویو ۳۰ لیتری با گریل'],
    ['name' => 'جاروبرقی ۲۲۰۰ وات', 'slug' => 'vacuum-2200', 'cat' => 'home-appliances', 'price' => 4800000, 'sale' => null, 'sku' => 'VC-2200', 'desc' => 'جاروبرقی سایکلون قدرتمند'],
    ['name' => 'آبگرمکن ۱۵ لیتری', 'slug' => 'water-heater-15', 'cat' => 'home-appliances', 'price' => 6500000, 'sale' => null, 'sku' => 'WH-15', 'desc' => 'آبگرمکن برقی ۱۵ لیتری'],
    ['name' => 'پکیج دیواری ۲۴ هزار', 'slug' => 'boiler-24k', 'cat' => 'cooling', 'price' => 15000000, 'sale' => 14200000, 'sku' => 'BL-24K', 'desc' => 'پکیج گرمایشی دیواری ۲۴ هزار'],
    ['name' => 'اسپیکر بلوتوثی', 'slug' => 'speaker-bt', 'cat' => 'electronics', 'price' => 3200000, 'sale' => null, 'sku' => 'SP-BT', 'desc' => 'اسپیکر قابل حمل با باس قوی'],
    ['name' => 'کولر آبی ۷۵۰۰', 'slug' => 'evap-7500', 'cat' => 'cooling', 'price' => 8900000, 'sale' => null, 'sku' => 'EV-7500', 'desc' => 'کولر آبی ۷۵۰۰ مترمکعب'],
    ['name' => 'اجاق گاز چهار شعله', 'slug' => 'stove-4', 'cat' => 'home-appliances', 'price' => 7800000, 'sale' => 7200000, 'sku' => 'ST-4', 'desc' => 'اجاق گاز استیل چهار شعله'],
    ['name' => 'هدفون بی‌سیم', 'slug' => 'headphone-wl', 'cat' => 'electronics', 'price' => 4500000, 'sale' => null, 'sku' => 'HP-WL', 'desc' => 'هدفون بی‌سیم نویزکنسلینگ'],
];

$cat_ids = [];
$created_cats = 0;
$created_products = 0;
$skipped = 0;

function shop_next_id(string $table, string $col = 'ID'): int {
    global $wpdb;
    $max = (int) $wpdb->get_var("SELECT COALESCE(MAX({$col}), 0) FROM {$table}");
    return $max + 1;
}

function shop_term_exists(string $slug): ?int {
    global $wpdb;
    $row = $wpdb->get_row(
        "SELECT t.term_id FROM {$wpdb->prefix}terms t
         INNER JOIN {$wpdb->prefix}term_taxonomy tt ON t.term_id = tt.term_id
         WHERE t.slug = '{$slug}' AND tt.taxonomy = 'product_cat' LIMIT 1"
    );
    return $row ? (int) $row->term_id : null;
}

function shop_product_exists(string $slug): bool {
    global $wpdb;
    $n = (int) $wpdb->get_var(
        "SELECT COUNT(*) FROM {$wpdb->prefix}posts WHERE post_name = '{$slug}' AND post_type = 'product'"
    );
    return $n > 0;
}

// ── دسته‌بندی‌ها ──
foreach ($categories as $cat) {
    $existing = shop_term_exists($cat['slug']);
    if ($existing) {
        $cat_ids[$cat['slug']] = $existing;
        continue;
    }

    $term_id = shop_next_id("{$wpdb->prefix}terms", 'term_id');
    $tt_id   = shop_next_id("{$wpdb->prefix}term_taxonomy", 'term_taxonomy_id');

    $wpdb->insert("{$wpdb->prefix}terms", [
        'term_id' => $term_id,
        'name'    => $cat['name'],
        'slug'    => $cat['slug'],
    ]);
    $wpdb->insert("{$wpdb->prefix}term_taxonomy", [
        'term_taxonomy_id' => $tt_id,
        'term_id'          => $term_id,
        'taxonomy'         => 'product_cat',
        'description'      => '',
        'parent'           => 0,
        'count'            => 0,
    ]);

    $cat_ids[$cat['slug']] = $term_id;
    $created_cats++;
}

// ── محصولات ──
foreach ($products as $p) {
    if (shop_product_exists($p['slug'])) {
        $skipped++;
        continue;
    }

    $post_id = shop_next_id("{$wpdb->prefix}posts");
    $now     = date('Y-m-d H:i:s');

    $wpdb->insert("{$wpdb->prefix}posts", [
        'ID'                => $post_id,
        'post_author'       => 1,
        'post_date'         => $now,
        'post_date_gmt'     => $now,
        'post_content'      => $p['desc'],
        'post_title'        => $p['name'],
        'post_excerpt'      => $p['desc'],
        'post_status'       => 'publish',
        'comment_status'    => 'closed',
        'ping_status'       => 'closed',
        'post_name'         => $p['slug'],
        'post_modified'     => $now,
        'post_modified_gmt' => $now,
        'post_type'         => 'product',
    ]);

    $meta = [
        '_price'         => (string) ($p['sale'] ?? $p['price']),
        '_regular_price' => (string) $p['price'],
        '_sale_price'    => $p['sale'] ? (string) $p['sale'] : '',
        '_sku'           => $p['sku'],
        '_stock_status'  => 'instock',
        '_stock'         => '50',
    ];

    foreach ($meta as $key => $val) {
        $wpdb->insert("{$wpdb->prefix}postmeta", [
            'post_id'    => $post_id,
            'meta_key'   => $key,
            'meta_value' => $val,
        ]);
    }

    // اتصال به دسته
    $cat_id = $cat_ids[$p['cat']] ?? null;
    if ($cat_id) {
        $tt_row = $wpdb->get_row(
            "SELECT term_taxonomy_id FROM {$wpdb->prefix}term_taxonomy
             WHERE term_id = {$cat_id} AND taxonomy = 'product_cat' LIMIT 1"
        );
        if ($tt_row) {
            $wpdb->insert("{$wpdb->prefix}term_relationships", [
                'object_id'        => $post_id,
                'term_taxonomy_id' => (int) $tt_row->term_taxonomy_id,
            ]);
            $wpdb->query(
                "UPDATE {$wpdb->prefix}term_taxonomy SET count = count + 1
                 WHERE term_taxonomy_id = " . (int) $tt_row->term_taxonomy_id
            );
        }
    }

    $created_products++;
}

$total = (int) $wpdb->get_var(
    "SELECT COUNT(*) FROM {$wpdb->prefix}posts WHERE post_type = 'product' AND post_status = 'publish'"
);

echo json_encode([
    'success'          => true,
    'created_cats'     => $created_cats,
    'created_products' => $created_products,
    'skipped'          => $skipped,
    'total_products'   => $total,
    'shop_url'         => '/acc-engine/shop.php',
    'api_url'          => '/acc-engine/api.php/acc/v1/public/products',
], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
