-- Migración de extension a codigo_agente en tabla tarotistas
-- Fecha: 2025-07-30
-- Este script cambia el paradigma de usar extensiones SIP a códigos de agente

-- 1. Primero, verificar el estado actual
SELECT 'Estado actual de tarotistas:' as info;
SELECT id, extension, agente_usuario, nombre FROM panel_tarot.tarotistas ORDER BY id LIMIT 10;

-- 2. Añadir nueva columna codigo_agente si no existe
ALTER TABLE panel_tarot.tarotistas 
ADD COLUMN IF NOT EXISTS codigo_agente VARCHAR(20) AFTER id;

-- 3. Migrar datos existentes si hay relación en agente_usuario
UPDATE panel_tarot.tarotistas t
SET codigo_agente = agente_usuario
WHERE agente_usuario IS NOT NULL;

-- 4. Para los que no tienen agente_usuario, intentar mapear por nombre
UPDATE panel_tarot.tarotistas t
INNER JOIN asterisk.agentes a ON LOWER(TRIM(t.nombre)) = LOWER(TRIM(a.nombre))
SET t.codigo_agente = a.usuario
WHERE t.codigo_agente IS NULL AND a.usuario IS NOT NULL;

-- 5. Verificar qué tarotistas quedan sin mapear
SELECT 'Tarotistas sin código de agente asignado:' as info;
SELECT id, extension, nombre, apellidos 
FROM panel_tarot.tarotistas 
WHERE codigo_agente IS NULL;

-- 6. Crear índice único en codigo_agente
ALTER TABLE panel_tarot.tarotistas
ADD UNIQUE INDEX uk_codigo_agente (codigo_agente);

-- 7. Actualizar la tabla de sincronización para usar codigo_agente
UPDATE asterisk.sync_tarotistas_agentes s
INNER JOIN panel_tarot.tarotistas t ON s.tarotista_id = t.id
SET s.agente_usuario = t.codigo_agente
WHERE t.codigo_agente IS NOT NULL;

-- 8. IMPORTANTE: NO eliminar la columna extension todavía
-- Mantenerla temporalmente para rollback si es necesario

-- 9. Mostrar resultado final
SELECT 'Mapeo final tarotistas -> agentes:' as info;
SELECT 
    t.id,
    t.nombre as tarotista_nombre,
    t.extension as extension_antigua,
    t.codigo_agente,
    a.usuario as agente_codigo,
    a.telefono as telefono_agente
FROM panel_tarot.tarotistas t
LEFT JOIN asterisk.agentes a ON t.codigo_agente = a.usuario
WHERE t.activo = 1
ORDER BY t.id;

-- 10. Preparar para deprecar extension
ALTER TABLE panel_tarot.tarotistas 
MODIFY COLUMN extension VARCHAR(20) NULL COMMENT 'DEPRECATED - usar codigo_agente';