<?php

namespace Database\Seeders;

use App\Models\CentroCosto;
use App\Models\Empleado;
use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;

class DatabaseSeeder extends Seeder
{
    public function run(): void
    {
        // -------------------------------------------------------
        // USUARIO ADMINISTRADOR
        // -------------------------------------------------------
        User::create([
            'name'     => 'Administrador FEDEF',
            'email'    => 'admin@fedef-co.com',
            'password' => Hash::make('Fedef2024*'),
            'rol'      => 'admin',
        ]);

        // -------------------------------------------------------
        // EMPLEADOS (datos reales de Hoja11 del Excel)
        // -------------------------------------------------------
        $empleados = [
            ['nombre' => 'Carlos Parra',           'cedula' => '79618754',   'cargo' => 'Gerente'],
            ['nombre' => 'Catalina Sepulveda',      'cedula' => '52534905',   'cargo' => ''],
            ['nombre' => 'Diego Ardila',            'cedula' => '1010245878', 'cargo' => ''],
            ['nombre' => 'Mónica Fernández',        'cedula' => '52282734',   'cargo' => ''],
            ['nombre' => 'Daniela Prieto',          'cedula' => '1022439694', 'cargo' => ''],
            ['nombre' => 'Natalia Ortiz',           'cedula' => '1030670533', 'cargo' => ''],
            ['nombre' => 'Paola Ramirez',           'cedula' => '1031143276', 'cargo' => ''],
            ['nombre' => 'Laura Zambrano',          'cedula' => '1018475200', 'cargo' => ''],
            ['nombre' => 'Rocio Rojas',             'cedula' => '1069726522', 'cargo' => ''],
            ['nombre' => 'Wilder Gomez',            'cedula' => '1014193186', 'cargo' => ''],
            ['nombre' => 'Monica Garcia',           'cedula' => '1069733350', 'cargo' => ''],
            ['nombre' => 'Karen Bermudez',          'cedula' => '1015483732', 'cargo' => ''],
            ['nombre' => 'Lucy Anzola',             'cedula' => '1033800499', 'cargo' => ''],
            ['nombre' => 'Julian Rozo',             'cedula' => '1020836099', 'cargo' => ''],
            ['nombre' => 'Angie Cuervo',            'cedula' => '1000854198', 'cargo' => ''],
            ['nombre' => 'Cesar David Parra',       'cedula' => '1010217391', 'cargo' => ''],
            ['nombre' => 'Joan Sebastian Ramirez',  'cedula' => '1010040579', 'cargo' => ''],
            ['nombre' => 'Linda Isabel Pinto',      'cedula' => '52869807',   'cargo' => ''],
            ['nombre' => 'Julio Alberto Cañas',     'cedula' => '1026287903', 'cargo' => ''],
            ['nombre' => 'Arley Basto Rivera',      'cedula' => '1120872020', 'cargo' => ''],
            ['nombre' => 'Luz Elena Gonzalez',      'cedula' => '21182199',   'cargo' => ''],
        ];

        foreach ($empleados as $i => $datos) {
            Empleado::create(array_merge($datos, [
                'salario'            => 0,
                'medicina_prepagada' => 0,
                'alimentacion'       => 0,
                'zafiro'             => 0,
                'activo'             => true,
            ]));
        }

        // -------------------------------------------------------
        // CENTROS DE COSTO (datos reales de Hoja25 del Excel)
        // -------------------------------------------------------
        $centros = [
            // Productivos
            ['codigo' => 'ADM',  'nombre' => 'Administración',                          'area' => 'Gestión',        'es_exento' => false, 'orden' => 1,
             'descripcion' => 'Actividades de planeación, coordinación y control general de la organización.'],
            ['codigo' => 'MKT',  'nombre' => 'Mercadeo estratégico',                    'area' => 'Gestión',        'es_exento' => false, 'orden' => 2,
             'descripcion' => 'Acciones de posicionamiento, comunicación y relacionamiento con grupos de interés.'],
            ['codigo' => 'GBP',  'nombre' => 'Generación de buenas prácticas',          'area' => 'Gestión',        'es_exento' => false, 'orden' => 3,
             'descripcion' => 'Desarrollo de metodologías y estándares para fortalecer procesos internos.'],
            ['codigo' => 'PROP', 'nombre' => 'Propuestas',                              'area' => 'Comercial',      'es_exento' => false, 'orden' => 4,
             'descripcion' => 'Elaboración de propuestas técnicas y económicas para clientes potenciales.'],
            ['codigo' => 'GCOM', 'nombre' => 'Gestión Comercial',                       'area' => 'Comercial',      'es_exento' => false, 'orden' => 5,
             'descripcion' => 'Actividades de prospección, negociación y cierre de negocios con clientes.'],
            ['codigo' => 'GIT',  'nombre' => 'Costo Gestión IT',                        'area' => 'Tecnología',     'es_exento' => false, 'orden' => 6,
             'descripcion' => 'Gestión y soporte de infraestructura tecnológica, software y sistemas de información.'],
            ['codigo' => 'SSTA', 'nombre' => 'Gestión SSTA',                            'area' => 'SSTA',           'es_exento' => false, 'orden' => 7,
             'descripcion' => 'Actividades de Seguridad y Salud en el Trabajo y Ambiente.'],
            ['codigo' => 'PGA',  'nombre' => 'PGA',                                     'area' => 'SSTA',           'es_exento' => false, 'orden' => 8,
             'descripcion' => 'Programa de Gestión Ambiental.'],
            ['codigo' => 'PGR',  'nombre' => 'PGR',                                     'area' => 'SSTA',           'es_exento' => false, 'orden' => 9,
             'descripcion' => 'Programa de Gestión de Residuos.'],
            ['codigo' => 'PGS',  'nombre' => 'PGS',                                     'area' => 'SSTA',           'es_exento' => false, 'orden' => 10,
             'descripcion' => 'Programa de Gestión de Seguridad.'],
            ['codigo' => 'PPB',  'nombre' => 'Programa de promoción/bienestar',         'area' => 'RRHH',           'es_exento' => false, 'orden' => 11,
             'descripcion' => 'Actividades de bienestar laboral, promoción de la salud y calidad de vida del personal.'],
            ['codigo' => 'CSST', 'nombre' => 'Capacitación SSTA',                       'area' => 'SSTA',           'es_exento' => false, 'orden' => 12,
             'descripcion' => 'Formación en temas de Seguridad, Salud y Ambiente para el personal.'],
            ['codigo' => 'CTEC', 'nombre' => 'Capacitación Técnica',                    'area' => 'RRHH',           'es_exento' => false, 'orden' => 13,
             'descripcion' => 'Cursos y entrenamientos para el desarrollo de competencias técnicas del personal.'],
            ['codigo' => 'RREC', 'nombre' => 'Recursos (Humanos y físicos)',            'area' => 'Gestión',        'es_exento' => false, 'orden' => 14,
             'descripcion' => 'Gestión del talento humano y de los recursos físicos necesarios para la operación.'],
            ['codigo' => 'PCE',  'nombre' => 'Proyectos cerrados',                      'area' => 'Proyectos',      'es_exento' => false, 'orden' => 15,
             'descripcion' => 'Horas dedicadas a cierre técnico, documental y financiero de proyectos concluidos.'],
            ['codigo' => 'PEJ',  'nombre' => 'Proyectos en Ejecución',                  'area' => 'Proyectos',      'es_exento' => false, 'orden' => 16,
             'descripcion' => 'Horas trabajadas en proyectos activos. Incluye código GsA-xxx (administrativos) y GsT-xxx (técnicos).'],
            ['codigo' => 'GIN',  'nombre' => 'Gestión Interna',                         'area' => 'Gestión',        'es_exento' => false, 'orden' => 17,
             'descripcion' => 'Actividades internas de planeación, coordinación y apoyo no asociadas a proyectos específicos.'],

            // Exentos (no cuentan en distribución por CC)
            ['codigo' => 'LIC_CAL', 'nombre' => 'Licencias por calamidad',             'area' => 'RRHH',           'es_exento' => true,  'orden' => 18,
             'descripcion' => 'Ausencias autorizadas por situaciones de calamidad doméstica del trabajador.'],
            ['codigo' => 'LIC_NR',  'nombre' => 'Licencias NO remuneradas',             'area' => 'RRHH',           'es_exento' => true,  'orden' => 19,
             'descripcion' => 'Permisos sin goce de sueldo concedidos al trabajador.'],
            ['codigo' => 'INCAP',   'nombre' => 'Incapacidades',                        'area' => 'RRHH',           'es_exento' => true,  'orden' => 20,
             'descripcion' => 'Días de incapacidad médica reconocidos por EPS o ARL.'],
            ['codigo' => 'COMP',    'nombre' => 'Compensatorios',                       'area' => 'RRHH',           'es_exento' => true,  'orden' => 21,
             'descripcion' => 'Días compensatorios por trabajo en festivos o dominicales.'],
            ['codigo' => 'VAC',     'nombre' => 'Vacaciones',                           'area' => 'RRHH',           'es_exento' => true,  'orden' => 22,
             'descripcion' => 'Período legal de descanso remunerado del trabajador.'],
            ['codigo' => 'TM',      'nombre' => 'Tiempos Muertos',                      'area' => 'Operación',      'es_exento' => true,  'orden' => 23,
             'descripcion' => 'Tiempo sin actividad productiva asignable, por esperas o situaciones ajenas al empleado.'],
        ];

        foreach ($centros as $datos) {
            CentroCosto::create(array_merge($datos, ['activo' => true, 'proceso' => null]));
        }
    }
}
