-- Sincroniza o Caua nos dois niveis:
-- 1) usuario_contratos
-- 2) parceiros_profissionais_contratos
--
-- Usa os contratos:
-- 64 = Empresa Alpha
-- 65 = Unidade Centro

START TRANSACTION;

SET @prof_email = 'caua_benicio_mendes@sercoti.com.br';
SET @contrato_empresa = 64;
SET @contrato_unidade = 65;

SET @profissional_id = (
    SELECT p.id
    FROM wpjy_parceiros_profissionais p
    WHERE p.email = @prof_email
    ORDER BY p.id DESC
    LIMIT 1
);

SET @user_id_wp = (
    SELECT p.user_id
    FROM wpjy_parceiros_profissionais p
    WHERE p.id = @profissional_id
    LIMIT 1
);

-- 1) garante o vinculo do usuario com empresa e unidade
INSERT IGNORE INTO wpjy_usuario_contratos (id_usuario, id_contrato)
SELECT @user_id_wp, @contrato_empresa
WHERE @user_id_wp IS NOT NULL
  AND @user_id_wp > 0;

INSERT IGNORE INTO wpjy_usuario_contratos (id_usuario, id_contrato)
SELECT @user_id_wp, @contrato_unidade
WHERE @user_id_wp IS NOT NULL
  AND @user_id_wp > 0;

-- 2) garante o vinculo explicito do profissional com empresa e unidade
INSERT INTO wpjy_parceiros_profissionais_contratos (
    id_profissional,
    id_contrato,
    tipo_vinculo,
    principal,
    ativo,
    origem
)
SELECT
    @profissional_id,
    @contrato_empresa,
    'EMPRESA',
    0,
    1,
    'manual'
WHERE @profissional_id IS NOT NULL
  AND @profissional_id > 0
ON DUPLICATE KEY UPDATE
    tipo_vinculo = VALUES(tipo_vinculo),
    ativo = 1,
    origem = 'manual';

INSERT INTO wpjy_parceiros_profissionais_contratos (
    id_profissional,
    id_contrato,
    tipo_vinculo,
    principal,
    ativo,
    origem
)
SELECT
    @profissional_id,
    @contrato_unidade,
    'UNIDADE',
    1,
    1,
    'manual'
WHERE @profissional_id IS NOT NULL
  AND @profissional_id > 0
ON DUPLICATE KEY UPDATE
    tipo_vinculo = VALUES(tipo_vinculo),
    principal = 1,
    ativo = 1,
    origem = 'manual';

-- se existir outra unidade principal para o mesmo profissional, desmarca
UPDATE wpjy_parceiros_profissionais_contratos
SET principal = 0
WHERE id_profissional = @profissional_id
  AND tipo_vinculo = 'UNIDADE'
  AND id_contrato <> @contrato_unidade;

COMMIT;

-- Conferencia final
SELECT
    p.id AS profissional_id,
    p.nome_completo,
    p.user_id AS user_id_wp,
    uc.id_contrato,
    c.tipo,
    COALESCE(c.nome_fantasia, c.nome) AS contrato_nome,
    c.contrato_pai,
    COALESCE(cp.nome_fantasia, cp.nome) AS contrato_pai_nome
FROM wpjy_parceiros_profissionais p
LEFT JOIN wpjy_usuario_contratos uc
       ON uc.id_usuario = p.user_id
LEFT JOIN wpjy_contratos c
       ON c.id = uc.id_contrato
LEFT JOIN wpjy_contratos cp
       ON cp.id = c.contrato_pai
WHERE p.id = @profissional_id
ORDER BY uc.id_contrato;

SELECT
    ppc.id_profissional,
    ppc.id_contrato,
    ppc.tipo_vinculo,
    ppc.principal,
    ppc.ativo,
    ppc.origem,
    COALESCE(c.nome_fantasia, c.nome) AS contrato_nome,
    c.tipo AS contrato_tipo
FROM wpjy_parceiros_profissionais_contratos ppc
JOIN wpjy_contratos c
  ON c.id = ppc.id_contrato
WHERE ppc.id_profissional = @profissional_id
ORDER BY
    FIELD(ppc.tipo_vinculo, 'EMPRESA', 'UNIDADE'),
    ppc.id_contrato;

SELECT *
FROM vw_parceiros_profissionais_contratos_ativos
WHERE id_profissional = @profissional_id
ORDER BY principal DESC, contrato_unidade_id;
