-- ============================================================================
-- SCRIPT: Normalizar tecnico_id en tabla solicitudes
-- Fecha: 2026-02-03
-- Propósito: Reemplazar IDs tipo CTNET-XXX-Tec por cédulas reales
-- ============================================================================

-- ============================================================================
-- PASO 0: BACKUP DE SEGURIDAD (EJECUTAR PRIMERO)
-- ============================================================================
-- Crear tabla de respaldo antes de cualquier modificación
CREATE TABLE IF NOT EXISTS soporte_tecnico.solicitudes_backup_20260203 AS 
SELECT * FROM soporte_tecnico.solicitudes;

-- Verificar cantidad de registros respaldados
SELECT 'Registros respaldados:' as info, COUNT(*) as total 
FROM soporte_tecnico.solicitudes_backup_20260203;

-- ============================================================================
-- PASO 1: DIAGNÓSTICO PREVIO
-- ============================================================================
-- Ver estado actual de tecnico_id
SELECT 
    'ANTES DE MIGRACIÓN' as estado,
    tecnico_id,
    COUNT(*) as cantidad
FROM soporte_tecnico.solicitudes 
WHERE tecnico_id IS NOT NULL AND tecnico_id != ''
GROUP BY tecnico_id
ORDER BY cantidad DESC;

-- Mostrar mapeo a aplicar
SELECT 
    'MAPEO A APLICAR' as info,
    n.id_empleado as id_actual,
    n.cedula as cedula_nueva,
    CONCAT(n.nombres, ' ', n.apellidos) as tecnico,
    n.estatus,
    (SELECT COUNT(*) FROM soporte_tecnico.solicitudes s WHERE s.tecnico_id = n.id_empleado) as solicitudes_afectadas
FROM nominasP.nomi_general n
WHERE n.id_empleado LIKE 'CTNET%'
ORDER BY solicitudes_afectadas DESC;

-- ============================================================================
-- PASO 2: ACTUALIZACIÓN - REEMPLAZAR CTNET-XXX-Tec POR CÉDULA
-- ============================================================================

-- CTNET-F2F4C7-Tec → V-29771791 (Diego Alejandro Frey Borges) - 139 registros
UPDATE soporte_tecnico.solicitudes 
SET tecnico_id = 'V-29771791'
WHERE tecnico_id = 'CTNET-F2F4C7-Tec';

-- CTNET-FD64BA-Tec → V-26349575 (Wilber Henry Maizo) - 92 registros
UPDATE soporte_tecnico.solicitudes 
SET tecnico_id = 'V-26349575'
WHERE tecnico_id = 'CTNET-FD64BA-Tec';

-- CTNET-BDEDDD-Tec → V-27863019 (Eduardo Jesus Sandoval Fernandez) - 56 registros
UPDATE soporte_tecnico.solicitudes 
SET tecnico_id = 'V-27863019'
WHERE tecnico_id = 'CTNET-BDEDDD-Tec';

-- CTNET-FB2736-Tec → V-27050045 (Walter Manuel Pfaff Natera) - 53 registros
UPDATE soporte_tecnico.solicitudes 
SET tecnico_id = 'V-27050045'
WHERE tecnico_id = 'CTNET-FB2736-Tec';

-- CTNET-E5AE20-Tec → V-27597906 (Yorman Julian Quintero Paez) - 2 registros
UPDATE soporte_tecnico.solicitudes 
SET tecnico_id = 'V-27597906'
WHERE tecnico_id = 'CTNET-E5AE20-Tec';

-- CTNET-323AEA-Tec → V-31030538 (Daniel Alejandro Borges Garcia - RETIRADO) - 2 registros
UPDATE soporte_tecnico.solicitudes 
SET tecnico_id = 'V-31030538'
WHERE tecnico_id = 'CTNET-323AEA-Tec';

-- ============================================================================
-- PASO 3: NORMALIZAR CÉDULAS SIN PREFIJO V-
-- ============================================================================

-- Normalizar: 18143785 → V-18143785
UPDATE soporte_tecnico.solicitudes 
SET tecnico_id = CONCAT('V-', tecnico_id)
WHERE tecnico_id REGEXP '^[0-9]+$' 
  AND LENGTH(tecnico_id) BETWEEN 6 AND 9;

-- ============================================================================
-- PASO 4: VERIFICACIÓN POST-MIGRACIÓN
-- ============================================================================
SELECT 
    'DESPUÉS DE MIGRACIÓN' as estado,
    tecnico_id,
    COUNT(*) as cantidad
FROM soporte_tecnico.solicitudes 
WHERE tecnico_id IS NOT NULL AND tecnico_id != ''
GROUP BY tecnico_id
ORDER BY cantidad DESC;

-- Verificar que no quedaron CTNET-XXX
SELECT 
    'VERIFICACIÓN: IDs CTNET restantes (debe ser 0)' as check_name,
    COUNT(*) as cantidad
FROM soporte_tecnico.solicitudes 
WHERE tecnico_id LIKE 'CTNET%';

-- ============================================================================
-- PASO 5: TAMBIÉN NORMALIZAR site_tasks (tareas de infraestructura)
-- ============================================================================

-- Verificar estado actual en site_tasks
SELECT 
    'site_tasks - ANTES' as tabla,
    assigned_to,
    COUNT(*) as cantidad
FROM ctnet_osp.site_tasks 
WHERE assigned_to IS NOT NULL AND assigned_to != ''
GROUP BY assigned_to;

-- Actualizar site_tasks con el mismo mapeo
UPDATE ctnet_osp.site_tasks SET assigned_to = 'V-29771791' WHERE assigned_to = 'CTNET-F2F4C7-Tec';
UPDATE ctnet_osp.site_tasks SET assigned_to = 'V-26349575' WHERE assigned_to = 'CTNET-FD64BA-Tec';
UPDATE ctnet_osp.site_tasks SET assigned_to = 'V-27863019' WHERE assigned_to = 'CTNET-BDEDDD-Tec';
UPDATE ctnet_osp.site_tasks SET assigned_to = 'V-27050045' WHERE assigned_to = 'CTNET-FB2736-Tec';
UPDATE ctnet_osp.site_tasks SET assigned_to = 'V-27597906' WHERE assigned_to = 'CTNET-E5AE20-Tec';
UPDATE ctnet_osp.site_tasks SET assigned_to = 'V-31030538' WHERE assigned_to = 'CTNET-323AEA-Tec';

-- ============================================================================
-- PASO 6: ACTUALIZAR task_technicians
-- ============================================================================
UPDATE ctnet_osp.task_technicians SET tecnico_cedula = 'V-29771791' WHERE tecnico_cedula = 'CTNET-F2F4C7-Tec';
UPDATE ctnet_osp.task_technicians SET tecnico_cedula = 'V-26349575' WHERE tecnico_cedula = 'CTNET-FD64BA-Tec';
UPDATE ctnet_osp.task_technicians SET tecnico_cedula = 'V-27863019' WHERE tecnico_cedula = 'CTNET-BDEDDD-Tec';
UPDATE ctnet_osp.task_technicians SET tecnico_cedula = 'V-27050045' WHERE tecnico_cedula = 'CTNET-FB2736-Tec';
UPDATE ctnet_osp.task_technicians SET tecnico_cedula = 'V-27597906' WHERE tecnico_cedula = 'CTNET-E5AE20-Tec';
UPDATE ctnet_osp.task_technicians SET tecnico_cedula = 'V-31030538' WHERE tecnico_cedula = 'CTNET-323AEA-Tec';

-- ============================================================================
-- RESUMEN FINAL
-- ============================================================================
SELECT '✅ MIGRACIÓN COMPLETADA' as resultado;

SELECT 
    'RESUMEN POR TÉCNICO' as info,
    s.tecnico_id as cedula,
    CONCAT(n.nombres, ' ', n.apellidos) as nombre,
    COUNT(*) as solicitudes
FROM soporte_tecnico.solicitudes s
LEFT JOIN nominasP.nomi_general n ON s.tecnico_id = n.cedula
WHERE s.tecnico_id IS NOT NULL AND s.tecnico_id != '' AND s.tecnico_id != 'todos'
GROUP BY s.tecnico_id, n.nombres, n.apellidos
ORDER BY solicitudes DESC;

-- ============================================================================
-- EN CASO DE ROLLBACK (si algo sale mal)
-- ============================================================================
-- DESCOMENTAR Y EJECUTAR SOLO SI NECESITAS REVERTIR:
-- 
-- TRUNCATE TABLE soporte_tecnico.solicitudes;
-- INSERT INTO soporte_tecnico.solicitudes SELECT * FROM soporte_tecnico.solicitudes_backup_20260203;
-- SELECT 'ROLLBACK COMPLETADO' as resultado;
