-- =============================================================================
-- Dashboard V2 — habilitación del módulo
-- Base: asercolg_po (conexión `mysql`) · MariaDB 10.6
-- Ver specs/SPEC_Dashboard_V2.MD §10.4
-- =============================================================================
--
-- Sin estos dos pasos el módulo NO aparece en el menú, aunque las rutas existan:
--   1. una fila en `menus` con la ruta del contenedor iframe
--   2. el id de esa fila agregado al JSON `compania.aplicaciones` de cada
--      compañía que deba verlo
--
-- No se tocan los menús 141, 142 ni 146 (la V1): ambas versiones conviven hasta
-- que el piloto valide. La V1 se retira en la Etapa 3.
--
-- Este script es idempotente: se puede volver a correr sin duplicar nada.
--
-- SE APLICA DESPUÉS de dashboard_v2_catalogo.sql y dashboard_v2_catalogo_ans.sql.
--
-- =============================================================================
-- PASO 0 — Estado antes (ejecutar y guardar la salida)
-- =============================================================================

SELECT id, nombre, ruta, depende, orden, perfiles, estado
  FROM `menus`
 WHERE ruta LIKE '%dashboard%'
 ORDER BY id;

-- =============================================================================
-- PASO 1 — El menú
-- =============================================================================
--
-- `depende`, `orden` y `perfiles` se copian del menú 142 («Estadísticas», la
-- entrada real de la V1) para que el módulo aparezca junto a él, bajo el nodo
-- 141 «Dashboard». OJO: el 141 es un nodo PADRE sin ruta, no la entrada.
--
-- El 146 («Dashboard.») apunta a la misma ruta desde otro punto del árbol; se
-- deja como está.
--
-- Ajustar `perfiles` a los del piloto antes de correr si no deben verlo todos.

INSERT INTO `menus` (`nombre`, `ruta`, `depende`, `orden`, `perfiles`, `estado`)
SELECT 'Torre de Control V2', '/dashboard/v2', m.`depende`, m.`orden`, m.`perfiles`, 1
  FROM `menus` m
 WHERE m.`id` = 142
   AND NOT EXISTS (SELECT 1 FROM `menus` x WHERE x.`ruta` = '/dashboard/v2');

SELECT id AS id_menu_v2, nombre, ruta, depende, orden, perfiles, estado
  FROM `menus`
 WHERE ruta = '/dashboard/v2';

-- =============================================================================
-- PASO 2 — Habilitarlo al cliente piloto
-- =============================================================================
--
-- Reemplazar 41 por el grupo empresarial del piloto (§12 · P7).
--
-- `compania.aplicaciones` es un JSON con los ids de menú visibles. Se AÑADE el
-- nuevo sin quitar ninguno: la V1 sigue disponible durante la convivencia.

SET @grupo := 41;
SET @menu  := (SELECT id FROM `menus` WHERE ruta = '/dashboard/v2' LIMIT 1);

-- Estado antes, para poder revertir.
SELECT id, razon_social, aplicaciones
  FROM `compania`
 WHERE id_grupo_empresarial = @grupo AND inactivo = 0;

-- Los ids se guardan como NÚMEROS: `[1,2,3,4,5,...]`. Verificado en el grupo 41.
UPDATE `compania`
   SET `aplicaciones` = JSON_ARRAY_APPEND(
         COALESCE(NULLIF(`aplicaciones`, ''), '[]'), '$', @menu)
 WHERE `id_grupo_empresarial` = @grupo
   AND `inactivo` = 0
   AND @menu IS NOT NULL
   AND NOT JSON_CONTAINS(
         COALESCE(NULLIF(`aplicaciones`, ''), '[]'),
         CAST(@menu AS JSON));

-- =============================================================================
-- PASO 3 — Verificación
-- =============================================================================

SELECT c.id, c.razon_social,
       JSON_CONTAINS(COALESCE(NULLIF(c.aplicaciones, ''), '[]'),
                     CAST(@menu AS JSON)) AS ve_el_v2
  FROM `compania` c
 WHERE c.id_grupo_empresarial = @grupo AND c.inactivo = 0;

-- Esperado: ve_el_v2 = 1 en todas las compañías activas del grupo.
--
-- Para revertir: quitar el id del JSON y poner el menú en estado 0.
--   UPDATE `compania`
--      SET `aplicaciones` = JSON_REMOVE(`aplicaciones`,
--            JSON_UNQUOTE(JSON_SEARCH(`aplicaciones`, 'one', @menu)))
--    WHERE `id_grupo_empresarial` = @grupo AND `inactivo` = 0;
--   UPDATE `menus` SET `estado` = 0 WHERE `ruta` = '/dashboard/v2';
