-- Seed de usuario gestor da Empresa Alpha
-- Objetivo:
-- 1) criar/atualizar um usuario WordPress
-- 2) vincular o usuario somente ao contrato da EMPRESA (64)
-- 3) aplicar grupo/area "empresa"
-- 4) aprovar a empresa para liberar a area /empresa
--
-- Login: gestor.empresa.alpha@tiix.com.br
-- Senha inicial: Tiix@2026
--
-- Observacao:
-- este seed deixa o usuario apenas no contrato 64 para evitar
-- cair em /adm/tenant-select no primeiro login.
-- Se voce estiver executando no mesmo cliente SQL apos uma falha anterior,
-- rode antes:
-- ROLLBACK;
-- Este seed nao usa transacao explicita para reduzir risco de lock wait.

SET @contract_empresa_id = 64;
SET @email = CONVERT('gestor.empresa.alpha@tiix.com.br' USING utf8mb4) COLLATE utf8mb4_unicode_520_ci;
SET @login = CONVERT('gestor.empresa.alpha@tiix.com.br' USING utf8mb4) COLLATE utf8mb4_unicode_520_ci;
SET @senha_plana = 'Tiix@2026';
SET @display_name = CONVERT('Gestor Empresa Alpha' USING utf8mb4) COLLATE utf8mb4_unicode_520_ci;
SET @first_name = CONVERT('Gestor' USING utf8mb4) COLLATE utf8mb4_unicode_520_ci;
SET @last_name = CONVERT('Empresa Alpha' USING utf8mb4) COLLATE utf8mb4_unicode_520_ci;
SET @user_nicename = CONVERT('gestor-empresa-alpha' USING utf8mb4) COLLATE utf8mb4_unicode_520_ci;
SET @group_slug_a = CONVERT('empresa' USING utf8mb4) COLLATE utf8mb4_0900_ai_ci;
SET @group_slug_b = CONVERT('empresas' USING utf8mb4) COLLATE utf8mb4_0900_ai_ci;
SET @cat_slug_status = CONVERT('empresa.aprovacao_status' USING utf8mb4) COLLATE utf8mb4_0900_ai_ci;
SET @cat_slug_aprovado_em = CONVERT('empresa.aprovado_em' USING utf8mb4) COLLATE utf8mb4_0900_ai_ci;
SET @tipo_empresa = CONVERT('EMPRESA' USING utf8mb4) COLLATE utf8mb4_0900_ai_ci;

SET @user_id = (
    SELECT ID
      FROM wpjy_users
     WHERE user_login = @login
        OR user_email = @email
     ORDER BY ID ASC
     LIMIT 1
);

INSERT INTO wpjy_users (
    user_login,
    user_pass,
    user_nicename,
    user_email,
    user_registered,
    display_name
)
SELECT
    @login,
    MD5(@senha_plana),
    @user_nicename,
    @email,
    NOW(),
    @display_name
WHERE COALESCE(@user_id, 0) = 0;

SET @user_id = (
    SELECT ID
      FROM wpjy_users
     WHERE user_login = @login
        OR user_email = @email
     ORDER BY ID ASC
     LIMIT 1
);

UPDATE wpjy_users
   SET user_pass = MD5(@senha_plana),
       user_nicename = @user_nicename,
       user_email = @email,
       display_name = @display_name
 WHERE ID = @user_id;

DELETE FROM wpjy_usermeta
 WHERE user_id = @user_id
   AND meta_key IN (
       'nickname',
       'first_name',
       'last_name',
       'wpjy_capabilities',
       'wpjy_user_level',
       'tiix_home_area',
       'papel_default'
   );

INSERT INTO wpjy_usermeta (user_id, meta_key, meta_value) VALUES
(@user_id, 'nickname', @display_name),
(@user_id, 'first_name', @first_name),
(@user_id, 'last_name', @last_name),
(@user_id, 'wpjy_capabilities', 'a:1:{s:10:"subscriber";b:1;}'),
(@user_id, 'wpjy_user_level', '0'),
(@user_id, 'tiix_home_area', 'empresa'),
(@user_id, 'papel_default', 'empresa');

DELETE FROM wpjy_user_dados
 WHERE user_id = @user_id;

INSERT INTO wpjy_user_dados (
    user_id,
    nome,
    email,
    contrato
) VALUES (
    @user_id,
    @display_name,
    @email,
    @contract_empresa_id
);

DELETE FROM wpjy_usuario_contratos
 WHERE id_usuario = @user_id;

INSERT INTO wpjy_usuario_contratos (
    id_usuario,
    id_contrato
) VALUES (
    @user_id,
    @contract_empresa_id
);

SET @group_empresa_id = (
    SELECT id
      FROM wpjy_grupos_permissoes
     WHERE (slug = @group_slug_a OR slug = @group_slug_b)
       AND (id_contrato = @contract_empresa_id OR id_contrato = 0 OR id_contrato IS NULL)
     ORDER BY CASE WHEN id_contrato = @contract_empresa_id THEN 0 ELSE 1 END, id ASC
     LIMIT 1
);

DELETE FROM wpjy_usuario_grupo_permissao
 WHERE id_usuario = @user_id;

INSERT INTO wpjy_usuario_grupo_permissao (
    id_usuario,
    id_grupo
)
SELECT @user_id, @group_empresa_id
 WHERE COALESCE(@group_empresa_id, 0) > 0;

SET @cat_status_id = (
    SELECT id
      FROM wpjy_contratos_dados_categorias
     WHERE slug = @cat_slug_status
       AND tipo_contrato = @tipo_empresa
       AND (id_contrato_base = 57 OR id_contrato_base = 0 OR id_contrato_base IS NULL)
     ORDER BY CASE WHEN id_contrato_base = 57 THEN 0 ELSE 1 END, id ASC
     LIMIT 1
);

SET @cat_aprovado_em_id = (
    SELECT id
      FROM wpjy_contratos_dados_categorias
     WHERE slug = @cat_slug_aprovado_em
       AND tipo_contrato = @tipo_empresa
       AND (id_contrato_base = 57 OR id_contrato_base = 0 OR id_contrato_base IS NULL)
     ORDER BY CASE WHEN id_contrato_base = 57 THEN 0 ELSE 1 END, id ASC
     LIMIT 1
);

DELETE FROM wpjy_contratos_dados
 WHERE id_contrato = @contract_empresa_id
   AND (
       categoria_id = @cat_status_id
       OR categoria_id = @cat_aprovado_em_id
   );

INSERT INTO wpjy_contratos_dados (id_contrato, categoria_id, valor)
SELECT @contract_empresa_id, @cat_status_id, 'approved'
 WHERE COALESCE(@cat_status_id, 0) > 0;

INSERT INTO wpjy_contratos_dados (id_contrato, categoria_id, valor)
SELECT @contract_empresa_id, @cat_aprovado_em_id, NOW()
 WHERE COALESCE(@cat_aprovado_em_id, 0) > 0;

SELECT
    u.ID,
    u.user_login,
    u.user_email,
    home.meta_value AS tiix_home_area,
    papel.meta_value AS papel_default
FROM wpjy_users u
LEFT JOIN wpjy_usermeta home
       ON home.user_id = u.ID
      AND home.meta_key = 'tiix_home_area'
LEFT JOIN wpjy_usermeta papel
       ON papel.user_id = u.ID
      AND papel.meta_key = 'papel_default'
WHERE u.ID = @user_id;

SELECT
    uc.id_usuario,
    uc.id_contrato,
    c.tipo,
    c.nome_fantasia
FROM wpjy_usuario_contratos uc
JOIN wpjy_contratos c
  ON c.id = uc.id_contrato
WHERE uc.id_usuario = @user_id;
