-- 2026-04-15
-- Menu/ACL da tela de leads da area /unidade
-- Inclui fallback para grupos operacionais quando wpjy_perm_group_kit estiver vazio

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

INSERT INTO wpjy_menus_items
  (label, link, area, parent, sort, menu, target, icon, slug, tag, parametro_url)
SELECT 'Leads', 'leads', 'unidade', root.id, 4, 35, '_self', 'ti ti-chart-funnel', 'menu.unidade.leads', 'unidade_leads', 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 = 'leads'
);

UPDATE wpjy_menus_items
   SET sort = 5
 WHERE menu = 35
   AND area = 'unidade'
   AND link = 'niveis';

INSERT INTO wpjy_telas (arquivo, nome, descricao, icone, ativa, ajuda)
SELECT 'unidade/leads', 'Unidade - Leads', 'Leads da unidade operacional', 'ti ti-chart-funnel', 1, NULL
WHERE NOT EXISTS (SELECT 1 FROM wpjy_telas WHERE arquivo = 'unidade/leads');

INSERT INTO wpjy_perm_namespaces (ns, label, descricao, escopo, ativo)
SELECT 'unidade.leads', 'Unidade: Leads', 'Leads vinculados ao contrato da unidade', 'contrato', 1
WHERE NOT EXISTS (SELECT 1 FROM wpjy_perm_namespaces WHERE ns = 'unidade.leads');

INSERT INTO wpjy_perm_tela_namespace (padrao_arquivo, ns, sensivel)
VALUES ('pages/unidade/leads.php', 'unidade.leads', 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 = 'unidade.leads'
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.assistente'
WHERE t.arquivo = 'unidade/leads'
  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_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.leads'
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.leads'
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
  );
