-- 2026-04-14
-- Libera /cliente/perfil-usuario no modelo legado + modelo novo (kit.cliente)
-- Idempotente: pode rodar mais de uma vez sem duplicar registros.

START TRANSACTION;

-- 1) Tela
INSERT INTO wpjy_telas (arquivo, nome, descricao, icone, ativa, ajuda)
SELECT 'perfil-usuario.php', 'Perfil do Usuario', 'Perfil do usuario na area do cliente', 'ti ti-user-circle', 1, NULL
WHERE NOT EXISTS (
  SELECT 1
  FROM wpjy_telas
  WHERE arquivo = 'perfil-usuario.php'
);

-- 2) Permissao de tela
INSERT INTO wpjy_permissoes (slug, nome, descricao, id_tela, tipo)
SELECT 'cliente.perfil_usuario.view', 'Perfil do Usuario', 'Acesso a tela Perfil do Usuario', t.id, 'tela'
FROM wpjy_telas t
WHERE t.arquivo = 'perfil-usuario.php'
  AND NOT EXISTS (
    SELECT 1
    FROM wpjy_permissoes
    WHERE slug = 'cliente.perfil_usuario.view'
  );

-- 3) Permissao de menu
INSERT INTO wpjy_permissoes (slug, nome, descricao, id_tela, tipo)
SELECT 'menu.cliente.perfil_usuario', 'Menu - Perfil do Usuario', 'Exibir item do menu Perfil do Usuario na area do cliente', NULL, 'menu'
WHERE NOT EXISTS (
  SELECT 1
  FROM wpjy_permissoes
  WHERE slug = 'menu.cliente.perfil_usuario'
);

-- 4) Item de menu na Area do Cliente
INSERT INTO wpjy_menus_items
  (label, link, area, parent, sort, menu, target, icon, slug, tag, parametro_url)
SELECT
  'Perfil do Usuario',
  'perfil-usuario',
  'cliente',
  504,
  29,
  35,
  '_self',
  'ti ti-user-circle',
  'menu.cliente.perfil_usuario',
  'cliente_perfil_usuario',
  NULL
WHERE NOT EXISTS (
  SELECT 1
  FROM wpjy_menus_items
  WHERE menu = 35
    AND area = 'cliente'
    AND link = 'perfil-usuario'
);

-- 5) Libera a permissao legado para o grupo clientes
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 ('cliente.perfil_usuario.view', 'menu.cliente.perfil_usuario')
WHERE g.slug = 'clientes'
  AND NOT EXISTS (
    SELECT 1
    FROM wpjy_grupo_permissao gp
    WHERE gp.id_grupo = g.id
      AND gp.id_permissao = p.id
  );

-- 6) Namespace do modelo novo
INSERT INTO wpjy_perm_namespaces (ns, label, descricao, escopo, ativo)
SELECT 'cliente.perfil-usuario', 'Cliente / Perfil Usuario', 'Tela de perfil do usuario na area do cliente', 'contrato', 1
WHERE NOT EXISTS (
  SELECT 1
  FROM wpjy_perm_namespaces
  WHERE ns = 'cliente.perfil-usuario'
);

-- 7) Mapeamento tela -> namespace
INSERT INTO wpjy_perm_tela_namespace (padrao_arquivo, ns, sensivel)
SELECT 'pages/cliente/perfil-usuario.php', 'cliente.perfil-usuario', 0
WHERE NOT EXISTS (
  SELECT 1
  FROM wpjy_perm_tela_namespace
  WHERE padrao_arquivo = 'pages/cliente/perfil-usuario.php'
);

-- 8) Allow no kit.cliente
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 = 'cliente.perfil-usuario'
WHERE k.slug = 'kit.cliente'
  AND NOT EXISTS (
    SELECT 1
    FROM wpjy_perm_kit_namespace kn
    WHERE kn.kit_id = k.id
      AND kn.namespace_id = n.id
  );

-- 9) Opcional, mas recomendado: tela -> kit
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.cliente'
WHERE t.arquivo = 'perfil-usuario.php'
  AND NOT EXISTS (
    SELECT 1
    FROM wpjy_perm_tela_kit_map tk
    WHERE tk.id_tela = t.id
      AND tk.kit_id = k.id
  );

COMMIT;
