<?php

namespace Database\Seeders;

use App\Models\Ajustador;
use App\Models\Broker;
use App\Models\Caso;
use App\Models\Cliente;
use App\Models\PersonalZurich;
use App\Models\Taller;
use App\Models\Tenant;
use App\Models\Vehiculo;
use Illuminate\Database\Seeder;

class SistemaSiniestrosSeeder extends Seeder
{
    public function run(): void
    {
        // Aseguradoras
        $zurich = Tenant::create([
            'id_externo' => '001',
            'nombre' => 'Zurich Seguros',
            'ruc' => '1790000000001',
            'telefono' => '02-1234567',
            'email' => 'contacto@zurich.com',
            'tipo' => 'empresa',
        ]);

        $latina = Tenant::create([
            'id_externo' => '002',
            'nombre' => 'Seguros Latina',
            'ruc' => '1790000000002',
            'telefono' => '02-2345678',
            'email' => 'contacto@latina.com',
            'tipo' => 'empresa',
        ]);

        $hispana = Tenant::create([
            'id_externo' => '003',
            'nombre' => 'Seguros Hispana',
            'ruc' => '1790000000003',
            'telefono' => '02-3456789',
            'email' => 'contacto@hispana.com',
            'tipo' => 'empresa',
        ]);

        // Brokers
        $broker1 = Broker::create([
            'tenant_id' => $zurich->id,
            'ruc' => '1790000001001',
            'razon_social' => 'Corredores Asociados S.A.',
            'telefono' => '02-1111111',
            'email' => 'info@corredores.asociados.com',
        ]);

        $broker2 = Broker::create([
            'tenant_id' => $zurich->id,
            'ruc' => '1790000001002',
            'razon_social' => 'Seguros Premium Cía. Ltda.',
            'telefono' => '02-2222222',
            'email' => 'info@segurospremium.com',
        ]);

        // Ajustadores
        $ajustador1 = Ajustador::create([
            'tenant_id' => $zurich->id,
            'codigo_sistema' => 'ADJ-001',
            'nombre' => 'Juan Pérez',
            'ruc' => '1790000002001',
            'tipo' => 'liviano',
            'telefono' => '099-1111111',
            'email' => 'jperez@ajustador.com',
            'ciudad' => 'Quito',
        ]);

        $ajustador2 = Ajustador::create([
            'tenant_id' => $zurich->id,
            'codigo_sistema' => 'ADJ-002',
            'nombre' => 'María García',
            'ruc' => '1790000002002',
            'tipo' => 'pesado',
            'telefono' => '099-2222222',
            'email' => 'mgarcia@ajustador.com',
            'ciudad' => 'Guayaquil',
        ]);

        // Talleres
        $taller1 = Taller::create([
            'tenant_id' => $zurich->id,
            'codigo_sistema' => 'TAL-001',
            'ruc' => '1790000003001',
            'razon_social' => 'Automotores del Valle',
            'ciudad' => 'Quito',
            'telefono' => '02-3333333',
            'email' => 'contacto@automotores.com',
            'tipo' => 'dealer',
        ]);

        $taller2 = Taller::create([
            'tenant_id' => $zurich->id,
            'codigo_sistema' => 'TAL-002',
            'ruc' => '1790000003002',
            'razon_social' => 'Servicios Automotrices C.A.',
            'ciudad' => 'Guayaquil',
            'telefono' => '04-4444444',
            'email' => 'contacto@servautomotrices.com',
            'tipo' => 'taller_asegurado',
        ]);

        // Personal Zurich
        $personal1 = PersonalZurich::create([
            'tenant_id' => $zurich->id,
            'codigo_sistema' => 'PZ-001',
            'nombre' => 'Carlos Mendoza',
            'cargo' => 'Ejecutivo de Siniestros',
            'email' => 'cmendoza@zurich.com',
            'telefono' => '099-3333333',
            'rol' => 'ejecutivo',
        ]);

        $personal2 = PersonalZurich::create([
            'tenant_id' => $zurich->id,
            'codigo_sistema' => 'PZ-002',
            'nombre' => 'Ana López',
            'cargo' => 'Directora de Siniestros',
            'email' => 'alopez@zurich.com',
            'telefono' => '099-4444444',
            'rol' => 'director',
        ]);

        // Casos de ejemplo
        for ($i = 1; $i <= 15; $i++) {
            $cliente = Cliente::create([
                'tenant_id' => $zurich->id,
                'nombre' => "Cliente Ejemplo $i",
                'telefono' => "099-888888$i",
                'email' => "cliente$i@email.com",
                'tipo_identificacion' => 'P',
                'ruc' => "1790000100$i",
                'ciudad' => $i % 2 == 0 ? 'Quito' : 'Guayaquil',
            ]);

            $vehiculo = Vehiculo::create([
                'tenant_id' => $zurich->id,
                'placa' => "ABC-{$i}234",
                'marca' => ['Toyota', 'Honda', 'Ford', 'Chevrolet', 'Nissan'][$i % 5],
                'modelo' => ['Corolla', 'Civic', 'Mustang', 'Spark', 'Sentra'][$i % 5],
                'anio' => 2020 + ($i % 5),
                'color' => ['Negro', 'Blanco', 'Gris', 'Azul', 'Rojo'][$i % 5],
                'tipo' => 'liviano',
                'valor_asegurado' => 25000 + ($i * 5000),
            ]);

            $estados = ['pendiente_coordinacion', 'coordinado', 'analisis', 'mesa_compras', 'en_reparacion', 'facturacion', 'finalizado'];
            $estado = $estados[$i % 7];

            Caso::create([
                'tenant_id' => $zurich->id,
                'numero_reclamo' => 'REC-2026-'.str_pad($i, 4, '0', STR_PAD_LEFT),
                'numero_caso_sias' => "SIAS-$i",
                'fecha_siniestro' => now()->subDays($i),
                'cobertura' => $i % 2 == 0 ? 'DP' : 'RC',
                'estado_actual' => $estado,
                'observaciones' => "Caso de ejemplo $i",
                'cliente_id' => $cliente->id,
                'vehiculo_id' => $vehiculo->id,
                'aseguradora_id' => $zurich->id,
                'broker_id' => $broker1->id,
                'ajustador_id' => $ajustador1->id,
                'taller_id' => $taller1->id,
                'ejecutivo_id' => $personal1->id,
            ]);
        }

        echo "Seed completado: 1 aseguradora, 2 brokers, 2 ajustadores, 2 talleres, 2 personal, 15 casos\n";
    }
}
