<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use App\Models\Order;
use App\Models\OrderItem;
use App\Models\GasOffice;
use App\Models\Cylinder;

class OrderSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        $gasOffices = GasOffice::all();

        foreach ($gasOffices as $gasOffice) {
            $cylinders = $gasOffice->cylinders;

            // إنشاء طلبات مختلفة
            $orders = [
                [
                    'customer_name' => 'أحمد محمد علي',
                    'customer_phone' => '07901111111',
                    'address' => 'بغداد - الكرادة - شارع الكرادة الداخلية - عمارة 15',
                    'total_amount' => 45000,
                    'status' => 'pending',
                    'notes' => 'يرجى التوصيل في المساء',
                    'gas_office_id' => $gasOffice->id,
                    'created_at' => now()->subHours(2),
                ],
                [
                    'customer_name' => 'فاطمة حسن محمد',
                    'customer_phone' => '07902222222',
                    'address' => 'بغداد - الجادرية - مجمع الجادرية السكني - بناية 8',
                    'total_amount' => 20000,
                    'status' => 'completed',
                    'notes' => 'تم التوصيل بنجاح',
                    'gas_office_id' => $gasOffice->id,
                    'created_at' => now()->subDay(),
                ],
                [
                    'customer_name' => 'محمد علي حسين',
                    'customer_phone' => '07903333333',
                    'address' => 'بغداد - المنصور - شارع الأميرات - بيت 25',
                    'total_amount' => 90000,
                    'status' => 'processing',
                    'notes' => 'طلب عاجل',
                    'gas_office_id' => $gasOffice->id,
                    'created_at' => now()->subHours(5),
                ],
                [
                    'customer_name' => 'علي حسن أحمد',
                    'customer_phone' => '07904444444',
                    'address' => 'بغداد - الكاظمية - شارع الإمام الكاظم',
                    'total_amount' => 30000,
                    'status' => 'pending',
                    'notes' => 'يرجى التأكد من جودة القناني',
                    'gas_office_id' => $gasOffice->id,
                    'created_at' => now()->subHours(1),
                ],
                [
                    'customer_name' => 'زينب محمد علي',
                    'customer_phone' => '07905555555',
                    'address' => 'بغداد - الرصافة - شارع الرشيد',
                    'total_amount' => 60000,
                    'status' => 'completed',
                    'notes' => 'شكراً لكم',
                    'gas_office_id' => $gasOffice->id,
                    'created_at' => now()->subDays(2),
                ],
                [
                    'customer_name' => 'حسن محمد كريم',
                    'customer_phone' => '07906666666',
                    'address' => 'بغداد - الأعظمية - شارع الأميرات',
                    'total_amount' => 15000,
                    'status' => 'cancelled',
                    'notes' => 'تم الإلغاء من قبل العميل',
                    'gas_office_id' => $gasOffice->id,
                    'created_at' => now()->subHours(3),
                ],
            ];

            foreach ($orders as $orderData) {
                $order = Order::create($orderData);

                // إضافة عناصر الطلب
                $randomCylinders = $cylinders->random(rand(1, 3));
                $totalAmount = 0;

                foreach ($randomCylinders as $cylinder) {
                    $quantity = rand(1, 4);
                    $itemTotal = $cylinder->price * $quantity;
                    $totalAmount += $itemTotal;

                    OrderItem::create([
                        'order_id' => $order->id,
                        'cylinder_id' => $cylinder->id,
                        'cylinder_name' => $cylinder->name,
                        'quantity' => $quantity,
                        'price' => $cylinder->price,
                        'total' => $itemTotal,
                    ]);
                }

                // تحديث المبلغ الإجمالي
                $order->update(['total_amount' => $totalAmount]);
            }
        }

        $this->command->info('تم إنشاء الطلبات لجميع المكاتب بنجاح!');
    }
}
