-- Migración catálogo de etiquetas: tmp_etiquetas_canon → tablas DEMO_TO
-- Ejecutar en la MISMA BDD de tickets (phpMyAdmin / cliente MySQL).
-- Respaldo recomendado antes de ejecutar.
--
-- Origen : tmp_etiquetas_canon (columnas ticketEtiqueta_*)
-- Destinos:
--   1) DEMO_TO_v2_ticket_etiqueta  → editor ticket2, grilla TEV2, relaciones v2
--   2) DEMO_TO_tickets_etiquetas    → script legacy_to_demo_to.sql (relaciones DEMO_TO)
--
-- Se preservan los IDs origainales (Id_ticketEtiqueta) para que coincidan
-- con ticket_etiquetas CSV en tickets legacy / DEMO_TO_v2_ticket.

START TRANSACTION;

-- ---------------------------------------------------------------------------
-- 0) DDL mínimo v2a (si la tabla aún no existe)
-- ---------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS DEMO_TO_v2_ticket_etiqueta (
  id INT AUTO_INCREMENT PRIMARY KEY,
  estado TINYINT NOT NULL DEFAULT 1,
  timecreado DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  autor VARCHAR(100) NOT NULL DEFAULT 'sistema',
  tipo VARCHAR(60) NOT NULL,
  nombre VARCHAR(120) NOT NULL,
  icono VARCHAR(80) NULL,
  color VARCHAR(20) NULL,
  descripcion VARCHAR(255) NULL,
  UNIQUE KEY uq_v2_ticket_etiqueta_tipo_nombre (tipo, nombre),
  KEY idx_v2_ticket_etiqueta_estado (estado),
  KEY idx_v2_ticket_etiqueta_tipo (tipo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS DEMO_TO_tickets_etiquetas (
  id INT AUTO_INCREMENT PRIMARY KEY,
  estado TINYINT NOT NULL DEFAULT 1,
  timecreado DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  autor VARCHAR(100) NOT NULL,
  nombre VARCHAR(120) NOT NULL,
  tipo VARCHAR(60) NOT NULL,
  icono VARCHAR(80) NULL,
  color VARCHAR(20) NULL,
  descripcion VARCHAR(255) NULL,
  prioridad INT NOT NULL DEFAULT 100,
  UNIQUE KEY uq_demo_to_tickets_etiquetas_tipo_nombre (tipo, nombre),
  KEY idx_demo_to_tickets_etiquetas_estado (estado),
  KEY idx_demo_to_tickets_etiquetas_tipo (tipo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ---------------------------------------------------------------------------
-- 1) Catálogo v2 (principal para ticket2 / TEV2)
-- ---------------------------------------------------------------------------
INSERT INTO DEMO_TO_v2_ticket_etiqueta
  (id, estado, timecreado, autor, tipo, nombre, icono, color, descripcion)
SELECT
  src.Id_ticketEtiqueta AS id,
  CASE
    WHEN LOWER(TRIM(src.ticketEtiqueta_Estado)) IN ('activo', '1', 'si', 'sí', 'true') THEN 1
    ELSE 0
  END AS estado,
  COALESCE(src.ticketEtiqueta_Creacion, NOW()) AS timecreado,
  COALESCE(NULLIF(TRIM(src.ticketEtiqueta_Autor), ''), 'migracion_canon') AS autor,
  TRIM(src.ticketEtiqueta_Tipo) AS tipo,
  TRIM(src.ticketEtiqueta_Nombre) AS nombre,
  COALESCE(NULLIF(TRIM(src.ticketEtiqueta_Icono), ''), '') AS icono,
  COALESCE(NULLIF(TRIM(src.ticketEtiqueta_Color), ''), '') AS color,
  COALESCE(NULLIF(TRIM(src.ticketEtiqueta_Descripcion), ''), '') AS descripcion
FROM tmp_etiquetas_canon src
WHERE TRIM(COALESCE(src.ticketEtiqueta_Nombre, '')) <> ''
  AND TRIM(COALESCE(src.ticketEtiqueta_Tipo, '')) <> ''
ON DUPLICATE KEY UPDATE
  estado = VALUES(estado),
  timecreado = VALUES(timecreado),
  autor = VALUES(autor),
  tipo = VALUES(tipo),
  nombre = VALUES(nombre),
  icono = VALUES(icono),
  color = VALUES(color),
  descripcion = VALUES(descripcion);

-- ---------------------------------------------------------------------------
-- 2) Catálogo DEMO_TO legado (para legacy_to_demo_to.sql)
-- ---------------------------------------------------------------------------
INSERT INTO DEMO_TO_tickets_etiquetas
  (id, estado, timecreado, autor, nombre, tipo, icono, color, descripcion, prioridad)
SELECT
  src.Id_ticketEtiqueta AS id,
  CASE
    WHEN LOWER(TRIM(src.ticketEtiqueta_Estado)) IN ('activo', '1', 'si', 'sí', 'true') THEN 1
    ELSE 0
  END AS estado,
  COALESCE(src.ticketEtiqueta_Creacion, NOW()) AS timecreado,
  COALESCE(NULLIF(TRIM(src.ticketEtiqueta_Autor), ''), 'migracion_canon') AS autor,
  TRIM(src.ticketEtiqueta_Nombre) AS nombre,
  TRIM(src.ticketEtiqueta_Tipo) AS tipo,
  NULLIF(TRIM(src.ticketEtiqueta_Icono), '') AS icono,
  NULLIF(TRIM(src.ticketEtiqueta_Color), '') AS color,
  NULLIF(TRIM(src.ticketEtiqueta_Descripcion), '') AS descripcion,
  100 AS prioridad
FROM tmp_etiquetas_canon src
WHERE TRIM(COALESCE(src.ticketEtiqueta_Nombre, '')) <> ''
  AND TRIM(COALESCE(src.ticketEtiqueta_Tipo, '')) <> ''
ON DUPLICATE KEY UPDATE
  estado = VALUES(estado),
  timecreado = VALUES(timecreado),
  autor = VALUES(autor),
  nombre = VALUES(nombre),
  tipo = VALUES(tipo),
  icono = VALUES(icono),
  color = VALUES(color),
  descripcion = VALUES(descripcion),
  prioridad = VALUES(prioridad);

-- ---------------------------------------------------------------------------
-- 3) AUTO_INCREMENT por encima del máximo ID migrado
-- ---------------------------------------------------------------------------
SET @next_v2 = (SELECT COALESCE(MAX(id), 0) + 1 FROM DEMO_TO_v2_ticket_etiqueta);
SET @sql_v2 = CONCAT('ALTER TABLE DEMO_TO_v2_ticket_etiqueta AUTO_INCREMENT = ', @next_v2);
PREPARE stmt_v2 FROM @sql_v2;
EXECUTE stmt_v2;
DEALLOCATE PREPARE stmt_v2;

SET @next_legacy = (SELECT COALESCE(MAX(id), 0) + 1 FROM DEMO_TO_tickets_etiquetas);
SET @sql_legacy = CONCAT('ALTER TABLE DEMO_TO_tickets_etiquetas AUTO_INCREMENT = ', @next_legacy);
PREPARE stmt_legacy FROM @sql_legacy;
EXECUTE stmt_legacy;
DEALLOCATE PREPARE stmt_legacy;

COMMIT;

-- ---------------------------------------------------------------------------
-- Validación (ejecutar después del COMMIT)
-- ---------------------------------------------------------------------------
-- SELECT COUNT(*) AS origen FROM tmp_etiquetas_canon;
-- SELECT COUNT(*) AS v2 FROM DEMO_TO_v2_ticket_etiqueta;
-- SELECT COUNT(*) AS legacy FROM DEMO_TO_tickets_etiquetas;
-- SELECT id, tipo, nombre FROM DEMO_TO_v2_ticket_etiqueta ORDER BY id LIMIT 10;
