<?php

namespace Database\Seeders;

use App\Models\PricingTier;
use App\Models\Product;
use App\Models\ProductVariant;
use Illuminate\Database\Seeder;

class ProductSeeder extends Seeder
{
    public function run(): void
    {
        $products = $this->getProducts();

        foreach ($products as $productData) {
            $product = Product::create([
                'name' => $productData['name'],
                'description' => $productData['description'],
                'fulfillment_type' => $productData['fulfillment_type'],
                'is_active' => true,
            ]);

            foreach ($productData['tiers'] as $tier) {
                PricingTier::create([
                    'product_id' => $product->id,
                    'min_qty' => $tier['min_qty'],
                    'max_qty' => $tier['max_qty'],
                    'unit_price' => $tier['unit_price'],
                ]);
            }

            foreach ($productData['variants'] as $variant) {
                ProductVariant::create([
                    'product_id' => $product->id,
                    'pattern_name' => $variant['pattern_name'],
                    'color' => $variant['color'],
                    'sku' => $variant['sku'],
                    'stock' => $variant['stock'],
                    'cost_price' => $variant['cost_price'],
                    'default_supplier_id' => $variant['supplier_id'],
                    'lead_time_days' => $variant['lead_time_days'],
                    'is_active' => true,
                ]);
            }
        }
    }

    private function getProducts(): array
    {
        $patterns = [
            'ورد جوري', 'خطوط عصرية', 'مربعات كلاسيك', 'زهور الربيع', 'موجات بحرية',
            'نجوم ذهبية', 'أوراق شجر', 'دوائر هندسية', 'فراشات ملونة', 'قلوب رومانسية',
            'تراث مصري', 'أرابيسك', 'زخرفة إسلامية', 'نقوش فرعونية', 'خطوط مائلة',
            'مثلثات حديثة', 'نقاط منتظمة', 'تموجات ناعمة', 'ريش طاووس', 'أزهار اللوتس',
            'نقشة البازلت', 'خطوط متوازية', 'فسيفساء', 'نقشة الكشمير', 'دمشقي كلاسيك',
            'ورد بلدي', 'نقشة المروحة', 'تجريدي حديث', 'بوهيمي', 'نقشة السلسلة',
            'مغربي تقليدي', 'أندلسي', 'نقشة الطاحونة', 'رخامي', 'نقشة السحاب',
            'ياباني زن', 'استوائي', 'نقشة الصدف', 'كلاسيك فيكتوري', 'نقشة الماء',
            'بساطة مودرن', 'نقشة الحبل', 'غابة استوائية', 'نقشة المعين', 'باروك',
            'نقشة القوس', 'آرت ديكو', 'نقشة النحل', 'سكندنافي', 'نقشة الشمس',
        ];

        $colors = ['أبيض', 'بيج', 'رمادي', 'أزرق سماوي', 'وردي', 'أخضر زيتوني', 'كحلي', 'عنابي', 'ذهبي', 'فضي'];

        $products = [];

        for ($i = 0; $i < 10; $i++) {
            $isOnDemand = $i >= 7;
            $supplierId = ($i % 5) + 1;
            $baseCost = rand(25, 40);

            $variants = [];
            $startIdx = $i * 5;
            for ($j = 0; $j < 5; $j++) {
                $patternIdx = $startIdx + $j;
                if ($patternIdx >= count($patterns)) break;

                $variants[] = [
                    'pattern_name' => $patterns[$patternIdx],
                    'color' => $colors[array_rand($colors)],
                    'sku' => sprintf('PRD-%03d-%03d', $i + 1, $j + 1),
                    'stock' => $isOnDemand ? 0 : rand(20, 200),
                    'cost_price' => $baseCost + rand(0, 10),
                    'supplier_id' => $supplierId,
                    'lead_time_days' => $isOnDemand ? rand(3, 7) : 0,
                ];
            }

            $products[] = [
                'name' => 'مجموعة ' . ($i + 1) . ' - ' . $patterns[$startIdx],
                'description' => 'مجموعة متنوعة تحتوي على 5 نقشات مميزة بجودة عالية',
                'fulfillment_type' => $isOnDemand ? 'on_demand' : 'in_stock',
                'tiers' => [
                    ['min_qty' => 1,  'max_qty' => 11,  'unit_price' => 55],
                    ['min_qty' => 12, 'max_qty' => 23,  'unit_price' => 50],
                    ['min_qty' => 24, 'max_qty' => 47,  'unit_price' => 45],
                    ['min_qty' => 48, 'max_qty' => null, 'unit_price' => 40],
                ],
                'variants' => $variants,
            ];
        }

        return $products;
    }
}
