<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use App\Models\User;
use App\Models\GasOffice;
use App\Models\GasCylinder;
use Illuminate\Support\Facades\Hash;

class GasOfficeManagementSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        // إنشاء مستخدمين لمكاتب الغاز
        $gasManagers = [
            [
                'name' => 'أحمد محمد الغازي',
                'email' => 'ahmed.gas@example.com',
                'password' => Hash::make('password'),
                'phone' => '0501234567',
                'user_type' => 'gas_manager',
                'service_type' => 'gas',
                'status' => 'active',
                'is_verified' => true,
            ],
            [
                'name' => 'محمد علي الغازي',
                'email' => 'mohamed.gas@example.com',
                'password' => Hash::make('password'),
                'phone' => '0501234568',
                'user_type' => 'gas_manager',
                'service_type' => 'gas',
                'status' => 'active',
                'is_verified' => true,
            ],
            [
                'name' => 'علي حسن الغازي',
                'email' => 'ali.gas@example.com',
                'password' => Hash::make('password'),
                'phone' => '0501234569',
                'user_type' => 'gas_manager',
                'service_type' => 'gas',
                'status' => 'active',
                'is_verified' => true,
            ],
        ];

        foreach ($gasManagers as $managerData) {
            $manager = User::create($managerData);

            // إنشاء مكتب غاز لكل مدير
            $gasOffice = GasOffice::create([
                'name' => 'مكتب غاز ' . $manager->name,
                'description' => 'مكتب غاز يوفر جميع أنواع قناني الغاز بأسعار منافسة وخدمة توصيل سريعة',
                'address' => 'شارع الملك فهد، الرياض',
                'latitude' => 24.7136 + (rand(-10, 10) / 100),
                'longitude' => 46.6753 + (rand(-10, 10) / 100),
                'phone' => $manager->phone,
                'email' => $manager->email,
                'owner_id' => $manager->id,
                'is_active' => true,
                'is_open' => true,
                'opening_time' => '08:00:00',
                'closing_time' => '22:00:00',
                'delivery_fee' => 25.00,
                'delivery_time_minutes' => 30,
                'minimum_order' => 50.00,
                'service_areas' => ['الرياض', 'الدرعية', 'الخرج'],
                'rating' => 4.5,
                'rating_count' => 150,
            ]);

            // إنشاء قناني غاز للمكتب
            $this->createGasCylinders($gasOffice);
        }

        // إنشاء مكاتب غاز إضافية
        $additionalOffices = [
            [
                'name' => 'مكتب غاز النور',
                'description' => 'مكتب غاز معتمد يقدم خدمة 24/7 مع ضمان الجودة',
                'address' => 'شارع التحلية، جدة',
                'latitude' => 21.4858 + (rand(-10, 10) / 100),
                'longitude' => 39.1925 + (rand(-10, 10) / 100),
                'phone' => '0501234570',
                'email' => 'noor.gas@example.com',
                'is_active' => true,
                'is_open' => true,
                'opening_time' => '06:00:00',
                'closing_time' => '23:00:00',
                'delivery_fee' => 30.00,
                'delivery_time_minutes' => 25,
                'minimum_order' => 75.00,
                'service_areas' => ['جدة', 'مكة', 'الطائف'],
                'rating' => 4.8,
                'rating_count' => 200,
            ],
            [
                'name' => 'مكتب غاز السلام',
                'description' => 'مكتب غاز يقدم خدمة التوصيل السريع مع ضمان السلامة',
                'address' => 'شارع الملك خالد، الدمام',
                'latitude' => 26.4207 + (rand(-10, 10) / 100),
                'longitude' => 50.0888 + (rand(-10, 10) / 100),
                'phone' => '0501234571',
                'email' => 'salam.gas@example.com',
                'is_active' => true,
                'is_open' => true,
                'opening_time' => '07:00:00',
                'closing_time' => '21:00:00',
                'delivery_fee' => 20.00,
                'delivery_time_minutes' => 35,
                'minimum_order' => 60.00,
                'service_areas' => ['الدمام', 'الخبر', 'الظهران'],
                'rating' => 4.3,
                'rating_count' => 120,
            ],
        ];

        foreach ($additionalOffices as $officeData) {
            $gasOffice = GasOffice::create($officeData);
            $this->createGasCylinders($gasOffice);
        }
    }

    /**
     * إنشاء قناني غاز لمكتب معين
     */
    private function createGasCylinders(GasOffice $gasOffice): void
    {
        $gasCylinders = [
            [
                'name' => 'قنينة غاز طبخ 12 كجم - حديد',
                'description' => 'قنينة غاز للطبخ المنزلي من الحديد - مناسبة للاستخدام اليومي',
                'price' => 18000.00,
                'size' => '12 كجم',
                'type' => 'طبخ',
                'material' => 'حديد',
                'brand' => 'أرامكو',
                'stock_quantity' => 100,
                'weight_kg' => 12.0,
                'safety_instructions' => 'يجب تخزينها في مكان جيد التهوية وبعيد عن مصادر الحرارة',
                'gas_office_id' => $gasOffice->id,
            ],
            [
                'name' => 'قنينة غاز طبخ 12 كجم - بلاستيك',
                'description' => 'قنينة غاز للطبخ المنزلي من البلاستيك - خفيفة الوزن',
                'price' => 15000.00,
                'size' => '12 كجم',
                'type' => 'طبخ',
                'material' => 'بلاستيك',
                'brand' => 'سابك',
                'stock_quantity' => 80,
                'weight_kg' => 8.0,
                'safety_instructions' => 'يجب تخزينها في مكان جيد التهوية - خفيفة الوزن',
                'gas_office_id' => $gasOffice->id,
            ],
            [
                'name' => 'قنينة غاز طبخ 25 كجم - حديد',
                'description' => 'قنينة غاز كبيرة للطبخ التجاري من الحديد - مناسبة للمطاعم',
                'price' => 34000.00,
                'size' => '25 كجم',
                'type' => 'طبخ',
                'material' => 'حديد',
                'brand' => 'أرامكو',
                'stock_quantity' => 75,
                'weight_kg' => 25.0,
                'safety_instructions' => 'يجب تخزينها في مكان جيد التهوية وبعيد عن مصادر الحرارة',
                'gas_office_id' => $gasOffice->id,
            ],
            [
                'name' => 'قنينة غاز طبخ 25 كجم - بلاستيك',
                'description' => 'قنينة غاز كبيرة للطبخ التجاري من البلاستيك - خفيفة الوزن',
                'price' => 30000.00,
                'size' => '25 كجم',
                'type' => 'طبخ',
                'material' => 'بلاستيك',
                'brand' => 'سابك',
                'stock_quantity' => 60,
                'weight_kg' => 20.0,
                'safety_instructions' => 'يجب تخزينها في مكان جيد التهوية - خفيفة الوزن',
                'gas_office_id' => $gasOffice->id,
            ],
            [
                'name' => 'قنينة غاز تدفئة 50 كجم - حديد',
                'description' => 'قنينة غاز للتدفئة المنزلية من الحديد - مناسبة للمنازل الكبيرة',
                'price' => 60000.00,
                'size' => '50 كجم',
                'type' => 'تدفئة',
                'material' => 'حديد',
                'brand' => 'أرامكو',
                'stock_quantity' => 50,
                'weight_kg' => 50.0,
                'safety_instructions' => 'يجب تخزينها في مكان جيد التهوية وبعيد عن مصادر الحرارة',
                'gas_office_id' => $gasOffice->id,
            ],
            [
                'name' => 'قنينة غاز تدفئة 50 كجم - بلاستيك',
                'description' => 'قنينة غاز للتدفئة المنزلية من البلاستيك - خفيفة الوزن',
                'price' => 55000.00,
                'size' => '50 كجم',
                'type' => 'تدفئة',
                'material' => 'بلاستيك',
                'brand' => 'سابك',
                'stock_quantity' => 40,
                'weight_kg' => 40.0,
                'safety_instructions' => 'يجب تخزينها في مكان جيد التهوية - خفيفة الوزن',
                'gas_office_id' => $gasOffice->id,
            ],
            [
                'name' => 'قنينة غاز صناعي 100 كجم - حديد',
                'description' => 'قنينة غاز للاستخدام الصناعي من الحديد - مناسبة للمصانع',
                'price' => 112000.00,
                'size' => '100 كجم',
                'type' => 'صناعي',
                'material' => 'حديد',
                'brand' => 'أرامكو',
                'stock_quantity' => 25,
                'weight_kg' => 100.0,
                'safety_instructions' => 'يجب تخزينها في مكان مخصص ومجهز بأجهزة السلامة',
                'gas_office_id' => $gasOffice->id,
            ],
            [
                'name' => 'قنينة غاز صناعي 100 كجم - بلاستيك',
                'description' => 'قنينة غاز للاستخدام الصناعي من البلاستيك - خفيفة الوزن',
                'price' => 100000.00,
                'size' => '100 كجم',
                'type' => 'صناعي',
                'material' => 'بلاستيك',
                'brand' => 'سابك',
                'stock_quantity' => 20,
                'weight_kg' => 80.0,
                'safety_instructions' => 'يجب تخزينها في مكان مخصص ومجهز بأجهزة السلامة - خفيفة الوزن',
                'gas_office_id' => $gasOffice->id,
            ],
        ];

        foreach ($gasCylinders as $cylinderData) {
            GasCylinder::create($cylinderData);
        }
    }
}
