-- 2026-04-15
-- Menu/ACL da disponibilidade profissional nas areas /empresa e /unidade
-- Objetivos:
-- 1) registrar telas de disponibilidade profissional
-- 2) ligar namespaces aos kits kit.empresa e kit.assistente
-- 3) adicionar itens de menu em empresa e unidade
-- 4) liberar as permissoes de menu para grupos ja vinculados aos kits

INSERT INTO wpjy_permissoes (slug, nome, descricao, id_tela, tipo)
SELECT 'empresa-disponibilidade', 'Empresa - Disponibilidade', 'Permissao de menu da disponibilidade profissional da empresa', NULL, 'menu'
WHERE NOT EXISTS (SELECT 1 FROM wpjy_permissoes WHERE slug = 'empresa-disponibilidade');

INSERT INTO wpjy_permissoes (slug, nome, descricao, id_tela, tipo)
SELECT 'menu.unidade.disponibilidade', 'Unidade - Disponibilidade', 'Permissao de menu da disponibilidade profissional da unidade', NULL, 'menu'
WHERE NOT EXISTS (SELECT 1 FROM wpjy_permissoes WHERE slug = 'menu.unidade.disponibilidade');

INSERT INTO wpjy_telas (arquivo, nome, descricao, icone, ativa, ajuda)
SELECT 'empresa/disponibilidade', 'Empresa - Disponibilidade Profissional', 'Grade operacional de disponibilidade profissional da empresa', 'ti ti-calendar-clock', 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM wpjy_telas WHERE arquivo = 'empresa/disponibilidade');

INSERT INTO wpjy_telas (arquivo, nome, descricao, icone, ativa, ajuda)
SELECT 'unidade/disponibilidade', 'Unidade - Disponibilidade Profissional', 'Grade operacional de disponibilidade profissional da unidade', 'ti ti-calendar-clock', 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM wpjy_telas WHERE arquivo = 'unidade/disponibilidade');

INSERT INTO wpjy_perm_namespaces (ns, label, descricao, escopo, ativo)
SELECT 'empresa.disponibilidade', 'Empresa: Disponibilidade', 'Disponibilidade profissional consolidada por empresa', 'contrato', 1
WHERE NOT EXISTS (SELECT 1 FROM wpjy_perm_namespaces WHERE ns = 'empresa.disponibilidade');

INSERT INTO wpjy_perm_namespaces (ns, label, descricao, escopo, ativo)
SELECT 'unidade.disponibilidade', 'Unidade: Disponibilidade', 'Disponibilidade profissional operacional por unidade', 'contrato', 1
WHERE NOT EXISTS (SELECT 1 FROM wpjy_perm_namespaces WHERE ns = 'unidade.disponibilidade');

INSERT INTO wpjy_perm_tela_namespace (padrao_arquivo, ns, sensivel)
VALUES ('pages/empresa/disponibilidade.php', 'empresa.disponibilidade', 0)
ON DUPLICATE KEY UPDATE ns = VALUES(ns), sensivel = VALUES(sensivel);

INSERT INTO wpjy_perm_tela_namespace (padrao_arquivo, ns, sensivel)
VALUES ('pages/unidade/disponibilidade.php', 'unidade.disponibilidade', 0)
ON DUPLICATE KEY UPDATE ns = VALUES(ns), sensivel = VALUES(sensivel);

INSERT INTO wpjy_perm_kit_namespace (kit_id, namespace_id, effect)
SELECT k.id, n.id, 'allow'
FROM wpjy_perm_kits k
JOIN wpjy_perm_namespaces n ON n.ns = 'empresa.disponibilidade'
WHERE k.slug = 'kit.empresa'
  AND NOT EXISTS (
    SELECT 1 FROM wpjy_perm_kit_namespace kn
    WHERE kn.kit_id = k.id
      AND kn.namespace_id = n.id
  );

INSERT INTO wpjy_perm_kit_namespace (kit_id, namespace_id, effect)
SELECT k.id, n.id, 'allow'
FROM wpjy_perm_kits k
JOIN wpjy_perm_namespaces n ON n.ns = 'unidade.disponibilidade'
WHERE k.slug = 'kit.assistente'
  AND NOT EXISTS (
    SELECT 1 FROM wpjy_perm_kit_namespace kn
    WHERE kn.kit_id = k.id
      AND kn.namespace_id = n.id
  );

INSERT INTO wpjy_perm_tela_kit_map (id_tela, kit_id, prioridade)
SELECT t.id, k.id, 100
FROM wpjy_telas t
JOIN wpjy_perm_kits k ON k.slug = 'kit.empresa'
WHERE t.arquivo = 'empresa/disponibilidade'
  AND NOT EXISTS (
    SELECT 1 FROM wpjy_perm_tela_kit_map tk
    WHERE tk.id_tela = t.id
      AND tk.kit_id = k.id
  );

INSERT INTO wpjy_perm_tela_kit_map (id_tela, kit_id, prioridade)
SELECT t.id, k.id, 100
FROM wpjy_telas t
JOIN wpjy_perm_kits k ON k.slug = 'kit.assistente'
WHERE t.arquivo = 'unidade/disponibilidade'
  AND NOT EXISTS (
    SELECT 1 FROM wpjy_perm_tela_kit_map tk
    WHERE tk.id_tela = t.id
      AND tk.kit_id = k.id
  );

INSERT INTO wpjy_menus_items
  (label, link, area, parent, sort, menu, target, icon, slug, tag, parametro_url)
SELECT 'Disponibilidade', 'disponibilidade', 'empresa', root.id, 3, 35, '_self', 'ti ti-calendar-clock', 'empresa-disponibilidade', 'empresa_disponibilidade', NULL
FROM (
  SELECT id
  FROM wpjy_menus_items
  WHERE menu = 35
    AND slug = 'menu.area-da-empresa.35.18'
  ORDER BY id ASC
  LIMIT 1
) root
WHERE NOT EXISTS (
  SELECT 1 FROM wpjy_menus_items
  WHERE menu = 35
    AND area = 'empresa'
    AND link = 'disponibilidade'
);

INSERT INTO wpjy_menus_items
  (label, link, area, parent, sort, menu, target, icon, slug, tag, parametro_url)
SELECT 'Disponibilidade', 'disponibilidade', 'unidade', root.id, 2, 35, '_self', 'ti ti-calendar-clock', 'menu.unidade.disponibilidade', 'unidade_disponibilidade', NULL
FROM (
  SELECT id
  FROM wpjy_menus_items
  WHERE menu = 35
    AND slug = 'menu.area-da-unidade'
  ORDER BY id ASC
  LIMIT 1
) root
WHERE NOT EXISTS (
  SELECT 1 FROM wpjy_menus_items
  WHERE menu = 35
    AND area = 'unidade'
    AND link = 'disponibilidade'
);

INSERT INTO wpjy_grupo_permissao (id_grupo, id_permissao)
SELECT g.id, p.id
FROM wpjy_grupos_permissoes g
JOIN wpjy_perm_group_kit gk ON gk.group_id = g.id
JOIN wpjy_perm_kits k ON k.id = gk.kit_id AND k.slug = 'kit.empresa'
JOIN wpjy_permissoes p ON p.slug = 'empresa-disponibilidade'
WHERE NOT EXISTS (
  SELECT 1 FROM wpjy_grupo_permissao gp
  WHERE gp.id_grupo = g.id
    AND gp.id_permissao = p.id
);

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 = 'empresa-disponibilidade'
JOIN wpjy_perm_kits k ON k.slug = 'kit.empresa'
JOIN wpjy_perm_contract_kit ck
  ON ck.id_contrato = g.id_contrato
 AND ck.kit_id = k.id
 AND ck.ativo = 1
WHERE g.slug IN ('empresa', 'empresas')
  AND NOT EXISTS (
    SELECT 1 FROM wpjy_grupo_permissao gp
    WHERE gp.id_grupo = g.id
      AND gp.id_permissao = p.id
  );

INSERT INTO wpjy_grupo_permissao (id_grupo, id_permissao)
SELECT g.id, p.id
FROM wpjy_grupos_permissoes g
JOIN wpjy_perm_group_kit gk ON gk.group_id = g.id
JOIN wpjy_perm_kits k ON k.id = gk.kit_id AND k.slug = 'kit.assistente'
JOIN wpjy_permissoes p ON p.slug = 'menu.unidade.disponibilidade'
WHERE NOT EXISTS (
  SELECT 1 FROM wpjy_grupo_permissao gp
  WHERE gp.id_grupo = g.id
    AND gp.id_permissao = p.id
);

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 = 'menu.unidade.disponibilidade'
JOIN wpjy_perm_kits k ON k.slug = 'kit.assistente'
JOIN wpjy_perm_contract_kit ck
  ON ck.id_contrato = g.id_contrato
 AND ck.kit_id = k.id
 AND ck.ativo = 1
WHERE g.slug IN ('assistentes-unidade', 'assistente')
  AND NOT EXISTS (
    SELECT 1 FROM wpjy_grupo_permissao gp
    WHERE gp.id_grupo = g.id
      AND gp.id_permissao = p.id
  );
