<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        // Migrar departamentos
        $legacyDepartamentos = \Illuminate\Support\Facades\DB::table('scsiserinfo.tssi_mdepart')->get();
        foreach ($legacyDepartamentos as $dept) {
            \App\Models\Departamento::updateOrCreate(
                ['codigo' => $dept->cod_depart],
                ['nombre' => $dept->nombre_depart]
            );
        }

        // Migrar areas de trabajo
        $legacyAreas = \Illuminate\Support\Facades\DB::table('scsiserinfo.tssi_mareatrabajo')->get();
        foreach ($legacyAreas as $area) {
            // we will default foreign keys here if they aren't mapped properly
            \App\Models\AreaTrabajo::updateOrCreate(
                ['codigo' => $area->cod_area],
                [
                    'nombre' => $area->nombre_area
                ]
            );
        }

        // Migrar usuarios admin (ejemplo de semilla inicial)
        try {
            $legacyAdmins = \Illuminate\Support\Facades\DB::table('scsiserinfo.tssi_usuarios_admin')->get();
            foreach ($legacyAdmins as $admin) {
                \App\Models\User::updateOrCreate(
                    ['cedula' => $admin->cedula],
                    [
                        'name' => $admin->nombre ?? 'Nombre ' . $admin->cedula,
                        'apellido' => $admin->apellido ?? 'Apellido ' . $admin->cedula,
                        'cargo' => $admin->cargo ?? 'Jefe de Área',
                        'email' => $admin->cedula . '@maderasdelorinoco.gob.ve',
                        'password' => bcrypt('123456') // reset default password for migrated
                    ]
                );
            }
        } catch (\Exception $e) {
            // La base de datos legada puede no estar disponible en entorno de pruebas
            $this->command->warn('⚠️  Base de datos legada no disponible, omitiendo migración de admins.');
        }

        // Insertar usuarios de prueba con datos realistas
        $this->call(UserSeeder::class);
    }
}
