-- ============================================================
-- Migração: responsável / cuidador do associado
-- 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 -----------------------------------------------
--    Público 70+: muitas vezes quem atende o telefone e lê os
--    e-mails é um familiar/cuidador. Estes campos registram quem
--    é essa pessoa e A QUEM PERTENCE cada canal principal.
--
--    resp_nome / resp_parentesco : quem cuida do contato
--    resp_celular / resp_email   : canais PRÓPRIOS do responsável
--    celular_dono / email_dono   : 'titular' | 'responsavel' —
--        indica de quem é o celular/e-mail principal do cadastro

ALTER TABLE contatos
    ADD COLUMN IF NOT EXISTS resp_nome       VARCHAR(160) NULL                       AFTER situacao_em,
    ADD COLUMN IF NOT EXISTS resp_parentesco VARCHAR(60)  NULL                       AFTER resp_nome,
    ADD COLUMN IF NOT EXISTS resp_celular    VARCHAR(20)  NULL                       AFTER resp_parentesco,
    ADD COLUMN IF NOT EXISTS resp_email      VARCHAR(320) NULL                       AFTER resp_celular,
    ADD COLUMN IF NOT EXISTS celular_dono    VARCHAR(12) NOT NULL DEFAULT 'titular'  AFTER resp_email,
    ADD COLUMN IF NOT EXISTS email_dono      VARCHAR(12) NOT NULL DEFAULT 'titular'  AFTER celular_dono;

-- 2. Regras de negócio (aplicadas no código, registradas aqui) --
--    * Canais do responsável NÃO entram na detecção de duplicatas:
--      dois associados cuidados pela mesma pessoa compartilham o
--      telefone dela e continuam sendo duas pessoas distintas.
--    * As listas de envio continuam usando o celular/e-mail
--      principal; os campos do responsável acompanham nas
--      exportações para uso nas campanhas.
--    * Ao limpar o celular/e-mail principal, o dono volta a
--      'titular' (higiene de dados).

-- 3. Verificação pós-migração ---------------------------------
SELECT
    COUNT(*)                          AS total_contatos,
    SUM(resp_nome IS NOT NULL AND TRIM(resp_nome) <> '') AS com_responsavel,
    SUM(celular_dono = 'responsavel') AS celular_do_responsavel,
    SUM(email_dono   = 'responsavel') AS email_do_responsavel
FROM contatos;
