<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class CatalogosSeeder extends Seeder
{
    public function run(): void
    {
        $tiposMantenimiento = [
            ['PBC', 'Preventivo basado en condicion', 'preventivo'],
            ['PPD', 'Preventivo predeterminado', 'preventivo'],
            ['CCO', 'Cambio de componente', 'preventivo'],
            ['INS', 'Inspeccion', 'preventivo'],
            ['LUB', 'Lubricacion', 'preventivo'],
            ['LIM', 'Limpieza', 'preventivo'],
            ['AJU', 'Ajuste', 'preventivo'],
            ['COR', 'Correctivo', 'correctivo'],
            ['EME', 'Correctivo de emergencia', 'correctivo'],
        ];
        foreach ($tiposMantenimiento as [$codigo, $nombre, $clase]) {
            DB::table('tipos_mantenimiento')->updateOrInsert(['codigo' => $codigo], [
                'nombre' => $nombre, 'clase' => $clase, 'activo' => 1,
                'created_at' => now(), 'updated_at' => now(),
            ]);
        }

        $frecuencias = [
            ['QUI', 'Quincenal', 15, 360],
            ['MEN', 'Mensual', 30, 720],
            ['BIM', 'Bimestral', 60, 1440],
            ['TRI', 'Trimestral', 90, 2160],
            ['SEM', 'Semestral', 180, 4320],
            ['ANU', 'Anual', 365, 8640],
            ['UNI', 'Unica', null, null],
            ['CON', 'Por condicion', null, null],
        ];
        foreach ($frecuencias as [$c, $n, $d, $h]) {
            DB::table('frecuencias')->updateOrInsert(['codigo' => $c], [
                'nombre' => $n, 'dias' => $d, 'horas_pm' => $h, 'activo' => 1,
                'created_at' => now(), 'updated_at' => now(),
            ]);
        }

        $unidades = [
            ['UND', 'Unidad'], ['KG', 'Kilogramo'], ['GR', 'Gramo'], ['LT', 'Litro'], ['ML', 'Mililitro'],
            ['M', 'Metro'], ['CM', 'Centimetro'], ['HRA', 'Hora'], ['JGO', 'Juego'], ['PAR', 'Par'],
            ['ROL', 'Rollo'], ['CJA', 'Caja'], ['GAL', 'Galon'], ['BAL', 'Balde'],
        ];
        foreach ($unidades as [$c, $n]) {
            DB::table('unidades')->updateOrInsert(['codigo' => $c], [
                'nombre' => $n, 'activo' => 1, 'created_at' => now(), 'updated_at' => now(),
            ]);
        }

        $estados = [
            ['PEN', 'Pendiente', '#6c757d', 1, 0],
            ['EPR', 'En proceso', '#0d6efd', 2, 0],
            ['EJE', 'Ejecutada', '#198754', 3, 1],
            ['VEN', 'Vencida', '#dc3545', 4, 0],
            ['REP', 'Reprogramada', '#ffc107', 5, 0],
            ['CAN', 'Cancelada', '#6c757d', 6, 1],
            ['APR', 'Aprobada', '#20c997', 7, 1],
        ];
        foreach ($estados as [$c, $n, $color, $orden, $cierra]) {
            DB::table('estados_orden')->updateOrInsert(['codigo' => $c], [
                'nombre' => $n, 'color' => $color, 'orden' => $orden, 'cierra_orden' => $cierra,
                'activo' => 1, 'created_at' => now(), 'updated_at' => now(),
            ]);
        }

        $prioridades = [
            ['BAJ', 'Baja', '#198754', 1],
            ['MED', 'Media', '#0d6efd', 2],
            ['ALT', 'Alta', '#fd7e14', 3],
            ['CRI', 'Critica', '#dc3545', 4],
        ];
        foreach ($prioridades as [$c, $n, $color, $nivel]) {
            DB::table('prioridades')->updateOrInsert(['codigo' => $c], [
                'nombre' => $n, 'color' => $color, 'nivel' => $nivel, 'activo' => 1,
                'created_at' => now(), 'updated_at' => now(),
            ]);
        }

        $lila = [
            ['L', 'Limpieza', 'fa-broom'],
            ['I', 'Inspeccion', 'fa-magnifying-glass'],
            ['LU', 'Lubricacion', 'fa-droplet'],
            ['A', 'Ajuste', 'fa-screwdriver-wrench'],
        ];
        foreach ($lila as [$c, $n, $i]) {
            DB::table('actividades_lila')->updateOrInsert(['codigo' => $c], [
                'nombre' => $n, 'icono' => $i, 'activo' => 1,
                'created_at' => now(), 'updated_at' => now(),
            ]);
        }

        $areas = [
            ['CHA', 'Chancado', 'Area de chancado'],
            ['MOL', 'Molienda', 'Molinos de bolas'],
            ['LIX', 'Lixiviacion', 'Tanques de agitacion de lixiviacion'],
            ['ADR', 'Adsorcion', 'Adsorcion en carbon activado'],
            ['DES', 'Desorcion', 'Desorcion y electrodeposicion'],
            ['REL', 'Relaves', 'Manejo de relaves y bombas'],
            ['POL', 'Polveo', 'Area de polveo'],
            ['LAB', 'Laboratorio', 'Laboratorio metalurgico'],
            ['ELE', 'Electrica', 'Area electrica e instrumentacion'],
            ['SER', 'Servicios', 'Servicios auxiliares'],
        ];
        foreach ($areas as [$c, $n, $d]) {
            DB::table('areas')->updateOrInsert(['codigo' => $c], [
                'nombre' => $n, 'descripcion' => $d, 'activo' => 1,
                'created_at' => now(), 'updated_at' => now(),
            ]);
        }
    }
}
