-- ============================================================
-- Migração: ciclo de vida do associado (situação / óbito)
-- Data   : 2026-07-20
-- Requer : MySQL 8.0+ / MariaDB 10.3+ (ADD COLUMN IF NOT EXISTS)
-- Seguro : idempotente — pode ser executado mais de uma vez.
--          O sistema também aplica estas colunas sozinho
--          (auto-migração no model Contact), este arquivo serve
--          para execução manual/documentação.
-- ============================================================

-- 1. Estrutura -----------------------------------------------
--    situacao        : 'ativo' | 'falecido' | 'desligado'
--    data_obito      : data do falecimento (quando conhecida)
--    situacao_fonte  : quem informou / origem (texto livre)
--    situacao_em     : quando a situação foi alterada

ALTER TABLE contatos
    ADD COLUMN IF NOT EXISTS situacao       VARCHAR(20) NOT NULL DEFAULT 'ativo' AFTER opt_out,
    ADD COLUMN IF NOT EXISTS data_obito     DATE NULL                            AFTER situacao,
    ADD COLUMN IF NOT EXISTS situacao_fonte VARCHAR(120) NULL                    AFTER data_obito,
    ADD COLUMN IF NOT EXISTS situacao_em    DATETIME NULL                        AFTER situacao_fonte;

-- 2. Regras de negócio (aplicadas no código, registradas aqui) --
--    * Falecidos e desligados saem de TODAS as listas de envio,
--      segmentos (aniversariantes, a validar, desatualizados) e
--      dos indicadores de qualidade — mas o registro é mantido
--      (histórico, auditoria e trilha LGPD preservados).
--    * Importação/enriquecimento NUNCA altera nem "ressuscita"
--      um contato falecido/desligado: a linha é ignorada e
--      reportada ao usuário.
--    * Merge automático de duplicatas só ocorre entre contatos
--      ATIVOS e com matrículas compatíveis (iguais ou vazias).

-- 3. Verificação pós-migração ---------------------------------
SELECT
    COUNT(*)                    AS total_contatos,
    SUM(situacao = 'ativo')     AS ativos,
    SUM(situacao = 'falecido')  AS falecidos,
    SUM(situacao = 'desligado') AS desligados
FROM contatos;
-- Logo após a migração, todos devem estar como 'ativo'.
