-- 2026-04-15
-- Complementa a formalizacao do agendamento manual no core
-- liberando a raiz TIIXHEALTH e o item Agendamento Manual
-- para empresa, unidade e profissional/parceiro no menu global.
-- Idempotente: pode rodar mais de uma vez sem duplicar registros.

START TRANSACTION;

SET @menu_id := 35;

SET @root_tiixhealth_id := (
  SELECT id
    FROM wpjy_menus_items
   WHERE menu = @menu_id
     AND slug = 'menu.adm.tiixhealth'
   ORDER BY CASE WHEN area = 'adm' THEN 0 WHEN area IS NULL OR area = '' THEN 1 ELSE 2 END, id ASC
   LIMIT 1
);

-- 1) Limpar residuos de uma versao anterior que espalhava o item
-- em Area da Empresa, Area da Unidade e Area do Parceiro.
DELETE FROM wpjy_menus_items
 WHERE menu = @menu_id
   AND slug IN (
     'menu.empresa.agendamento_manual',
     'menu.unidade.agendamento_manual',
     'menu.parceiro.agendamento_manual'
   );

DELETE FROM wpjy_grupo_permissao
 WHERE id_permissao IN (
   SELECT id
     FROM wpjy_permissoes
    WHERE slug IN (
      'menu.empresa.agendamento_manual',
      'menu.unidade.agendamento_manual',
      'menu.parceiro.agendamento_manual'
    )
 );

DELETE FROM wpjy_permissoes
 WHERE slug IN (
   'menu.empresa.agendamento_manual',
   'menu.unidade.agendamento_manual',
   'menu.parceiro.agendamento_manual'
 );

-- 2) Garantir o item filho dentro de TIIXHEALTH
INSERT INTO wpjy_menus_items
  (label, link, area, parent, sort, menu, target, icon, slug, tag, parametro_url)
SELECT
  'Agendamento Manual',
  'agendamento-manual',
  'adm',
  @root_tiixhealth_id,
  2,
  @menu_id,
  '_self',
  'lucide:calendar-plus',
  'menu.admin.agendamento_manual',
  'agendamento_manual',
  NULL
WHERE @root_tiixhealth_id IS NOT NULL
  AND NOT EXISTS (
    SELECT 1
      FROM wpjy_menus_items
     WHERE menu = @menu_id
       AND link = 'agendamento-manual'
       AND parent = @root_tiixhealth_id
  );

-- 3) Liberar a raiz TIIXHEALTH e o filho Agendamento Manual
-- para os grupos que precisam enxergar esse bloco no sidebar.
INSERT INTO wpjy_grupo_permissao (id_grupo, id_permissao)
SELECT g.id, p.id
  FROM wpjy_grupos_permissoes g
  JOIN wpjy_permissoes p
    ON p.slug IN (
      'menu.adm.tiixhealth',
      'menu.admin.agendamento_manual',
      'admin.agendamento_manual.view'
    )
 WHERE g.slug IN (
   'tiix',
   'empresa',
   'assistentes-unidade',
   'profissionais',
   'clientes',
   'corretora',
   'corretor'
 )
   AND NOT EXISTS (
     SELECT 1
       FROM wpjy_grupo_permissao gp
      WHERE gp.id_grupo = g.id
        AND gp.id_permissao = p.id
   );

COMMIT;

SELECT
  @root_tiixhealth_id AS root_tiixhealth_id;

SELECT id, label, link, area, parent, sort, slug
  FROM wpjy_menus_items
 WHERE menu = @menu_id
   AND (
     id = @root_tiixhealth_id
     OR parent = @root_tiixhealth_id
   )
 ORDER BY parent, sort, id;

SELECT p.slug, g.slug AS group_slug, g.id_contrato
  FROM wpjy_grupo_permissao gp
  JOIN wpjy_grupos_permissoes g ON g.id = gp.id_grupo
  JOIN wpjy_permissoes p ON p.id = gp.id_permissao
 WHERE p.slug IN (
   'menu.adm.tiixhealth',
   'menu.admin.agendamento_manual',
   'admin.agendamento_manual.view'
 )
   AND g.slug IN (
     'tiix',
     'empresa',
     'assistentes-unidade',
     'profissionais',
     'clientes',
     'corretora',
     'corretor'
   )
 ORDER BY p.slug, g.slug, g.id_contrato;
