<?php

namespace Database\Seeders;

use App\Models\Customer\Customer;
use App\Models\Customer\CustomerFieldDefinition;
use App\Models\Customer\CustomerFieldValue;
use App\Models\Agency\Agency;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class CustomerCustomFieldSeeder extends Seeder
{
     public function run(): void
     {
          $agency = Agency::first();
          if (!$agency)
               return;

          // 1. Tanımlamaları yap
          $fields = [
               [
                    'field_key' => 'kan_grubu',
                    'label' => 'Kan Grubu',
                    'field_type' => 'select',
                    'options' => [
                         ['value' => 'ARH+', 'label' => 'A RH+'],
                         ['value' => 'ARH-', 'label' => 'A RH-'],
                         ['value' => 'BRH+', 'label' => 'B RH+'],
                         ['value' => 'BRH-', 'label' => 'B RH-'],
                         ['value' => '0RH+', 'label' => '0 RH+'],
                         ['value' => '0RH-', 'label' => '0 RH-'],
                         ['value' => 'ABRH+', 'label' => 'AB RH+'],
                         ['value' => 'ABRH-', 'label' => 'AB RH-'],
                    ],
                    'is_filterable' => true,
               ],
               [
                    'field_key' => 'cocuk_sayisi',
                    'label' => 'Çocuk Sayısı',
                    'field_type' => 'number',
                    'default_value' => '0',
                    'is_filterable' => true,
               ],
               [
                    'field_key' => 'pasaport_vize_durumu',
                    'label' => 'Vize Durumu',
                    'field_type' => 'text',
                    'help_text' => 'Müşterinin vize geçerliliği hakkında kısa bilgi.',
               ],
               [
                    'field_key' => 'hazne_notlari',
                    'label' => 'Özel İstekler',
                    'field_type' => 'textarea',
               ],
          ];

          foreach ($fields as $fieldData) {
               $def = CustomerFieldDefinition::updateOrCreate(
                    ['agency_id' => $agency->id, 'field_key' => $fieldData['field_key']],
                    array_merge($fieldData, ['agency_id' => $agency->id])
               );

               // 2. Müşterilere değerleri ata
               $customers = Customer::where('agency_id', $agency->id)->limit(5)->get();
               foreach ($customers as $customer) {
                    CustomerFieldValue::updateOrCreate(
                         ['customer_id' => $customer->id, 'field_definition_id' => $def->id],
                         ['value' => $this->getRandomValue($fieldData['field_key'])]
                    );
               }
          }

          $this->command->info('Müşteri özel alan tanımları ve değerleri başarıyla eklendi!');
     }

     private function getRandomValue($key)
     {
          if ($key == 'kan_grubu') {
               $vals = ['ARH+', '0RH+', 'BRH+', 'ARH-'];
               return $vals[array_rand($vals)];
          }
          if ($key == 'cocuk_sayisi') {
               return (string) rand(0, 3);
          }
          if ($key == 'pasaport_vize_durumu') {
               return 'Schengen geçerli, vizesiz gidilebilir.';
          }
          return 'Örnek not metni.';
     }
}
