<?php

declare(strict_types=1);

namespace Database\Seeders;

use App\Models\Breed;
use App\Models\Category;
use App\Models\Producer;
use App\Models\Product;
use App\Models\User;
use Illuminate\Database\Seeder;
use Mortezaa97\Regions\Models\County;
use Mortezaa97\Regions\Models\Province;

class ProductsTableSeeder extends Seeder
{
    public function run(): void
    {
        $adminId = User::role('admin')->first()?->id;
        $user = User::role('user')->first();
        $producer = Producer::first();
        $province = Province::first();
        $county = County::where('province_id', $province?->id)->first();

        $cattleId = Category::where('slug', 'cattle')->first()?->id;
        $sheepId = Category::where('slug', 'sheep')->first()?->id;
        $camelId = Category::where('slug', 'camel')->first()?->id;
        $poultryId = Category::where('slug', 'poultry')->first()?->id;

        $products = [
            [
                'name' => 'گاو هلشتاین شیری',
                'excerpt' => 'گاو هلشتاین با تولید شیر بالا',
                'desc' => 'گاو هلشتاین با سابقه تولید خوب و سلامت کامل. آماده انتقال به محل خریدار.',
                'category_id' => $cattleId,
                'breed_id' => Breed::where('name', 'هلشتاین')->first()?->id,
                'weight' => 550,
                'weight_unit' => 'کیلوگرم',
                'age' => 36,
                'gender' => 'female',
                'price' => 150000000,
                'total_price' => 150000000,
                'image' => 'files/gav.jpg',
                'gallery' => [
                    'files/gav.jpg',
                    'files/gav-1.jpg',
                    'files/gav-2.jpg',
                    'files/gav-4.jpg',
                    'files/gav-5.jpg',
                ],
                'is_featured' => true,
            ],
            [
                'name' => 'گاو سیمنتال',
                'excerpt' => 'گاو سیمنتال دو منظوره گوشت و شیر',
                'desc' => 'گاو نژاد سیمنتال با جثه مناسب و سلامت کامل، مناسب پرواربندی و تولید شیر.',
                'category_id' => $cattleId,
                'breed_id' => Breed::where('name', 'سیمنتال')->first()?->id,
                'weight' => 620,
                'weight_unit' => 'کیلوگرم',
                'age' => 28,
                'gender' => 'male',
                'price' => 135000000,
                'total_price' => 135000000,
                'image' => 'files/gav-1.jpg',
                'gallery' => [
                    'files/gav-1.jpg',
                    'files/gav-2.jpg',
                    'files/gav-4.jpg',
                    'files/gavo-goosfand-baham.jpg',
                ],
            ],
            [
                'name' => 'گوسفند افشاری',
                'excerpt' => 'گوسفند افشاری گوشتی',
                'desc' => 'گوسفند نژاد افشاری با وزن و سلامت مطلوب.',
                'category_id' => $sheepId,
                'breed_id' => Breed::where('name', 'افشاری')->first()?->id,
                'weight' => 45,
                'weight_unit' => 'کیلوگرم',
                'age' => 18,
                'gender' => 'male',
                'price' => 8500000,
                'total_price' => 8500000,
                'image' => 'files/goosfand.jpg',
                'gallery' => [
                    'files/goosfand.jpg',
                    'files/goosfand-1.jpg',
                    'files/goosfand-2.jpg',
                    'files/goosfand-3.jpg',
                    'files/goosfand-4.jpg',
                ],
                'is_featured' => true,
            ],
            [
                'name' => 'گوسفند ماکویی',
                'excerpt' => 'گوسفند ماکویی پشمی',
                'desc' => 'گوسفند نژاد ماکویی با پشم مرغوب و سلامت کامل.',
                'category_id' => $sheepId,
                'breed_id' => Breed::where('name', 'ماکویی')->first()?->id,
                'weight' => 42,
                'weight_unit' => 'کیلوگرم',
                'age' => 20,
                'gender' => 'female',
                'price' => 7800000,
                'total_price' => 7800000,
                'image' => 'files/goosfand-2.jpg',
                'gallery' => [
                    'files/goosfand-2.jpg',
                    'files/goosfand-3.jpg',
                    'files/goosfand-4.jpg',
                    'files/gavo-goosfand-baham-1.jpg',
                ],
            ],
            [
                'name' => 'شتر یک‌کوهانه',
                'excerpt' => 'شتر سالم مناسب حمل و پرورش',
                'desc' => 'شتر یک‌کوهانه با جثه مناسب، سلامت کامل و آماده انتقال.',
                'category_id' => $camelId,
                'breed_id' => null,
                'weight' => 480,
                'weight_unit' => 'کیلوگرم',
                'age' => 48,
                'gender' => 'male',
                'price' => 95000000,
                'total_price' => 95000000,
                'image' => 'files/shotor.jpg',
                'gallery' => [
                    'files/shotor.jpg',
                    'files/shotor-1.jpg',
                ],
            ],
            [
                'name' => 'بوقلمون گوشتی',
                'excerpt' => 'بوقلمون گوشتی با وزن مطلوب',
                'desc' => 'بوقلمون گوشتی سالم، مناسب پرورش و فروش.',
                'category_id' => $poultryId,
                'breed_id' => null,
                'weight' => 8,
                'weight_unit' => 'کیلوگرم',
                'age' => 5,
                'gender' => 'male',
                'price' => 1200000,
                'total_price' => 1200000,
                'image' => 'files/booghalamoon.jpg',
                'gallery' => [
                    'files/booghalamoon.jpg',
                ],
            ],
            [
                'name' => 'بلدرچین تخم‌گذار',
                'excerpt' => 'بلدرچین تخم‌گذار سالم',
                'desc' => 'بلدرچین تخم‌گذار با تولید مناسب، مناسب واحدهای کوچک و متوسط.',
                'category_id' => $poultryId,
                'breed_id' => null,
                'weight' => 0.2,
                'weight_unit' => 'کیلوگرم',
                'age' => 3,
                'gender' => 'female',
                'price' => 85000,
                'total_price' => 85000,
                'image' => 'files/belderchin.jpg',
                'gallery' => [
                    'files/belderchin.jpg',
                ],
            ],
        ];

        foreach ($products as $productData) {
            Product::updateOrCreate(
                ['name' => $productData['name']],
                array_merge($productData, [
                    'producer_id' => $producer?->id,
                    'user_id' => $user?->id ?? $adminId,
                    'province_id' => $province?->id,
                    'county_id' => $county?->id,
                    'status' => 'active',
                    'is_active' => true,
                    'is_featured' => $productData['is_featured'] ?? false,
                    'created_by' => $adminId,
                    'updated_by' => $adminId,
                ])
            );
        }
    }
}
