-- ============================================================================
-- Compliance CFP — Tipo de registro profissional (ROADMAP item #5)
-- ----------------------------------------------------------------------------
-- Adiciona campos de registro profissional ao perfil. Necessário pra emissão
-- de recibos/laudos válidos (CFP exige tipo, número e UF do conselho).
--
-- Conselhos comuns no Brasil:
--   CRP     — Psicólogo
--   CRM     — Médico
--   CRFa    — Fonoaudiólogo
--   CREFITO — Fisioterapeuta / Terapeuta Ocupacional
--   CRESS   — Assistente Social
--   CRN     — Nutricionista
--   RMS     — Residência Multiprofissional (Saúde)
--   outro   — Catch-all (campo livre na UI)
-- ============================================================================

BEGIN;

ALTER TABLE public.profiles
    ADD COLUMN IF NOT EXISTS professional_registration_type text,
    ADD COLUMN IF NOT EXISTS professional_registration_number text,
    ADD COLUMN IF NOT EXISTS professional_registration_uf text;

-- CHECK não pode ser ADD IF NOT EXISTS — guard com DO block
DO $$
BEGIN
    IF NOT EXISTS (
        SELECT 1 FROM pg_constraint
        WHERE conname = 'profiles_registration_type_check'
    ) THEN
        ALTER TABLE public.profiles
            ADD CONSTRAINT profiles_registration_type_check CHECK (
                professional_registration_type IS NULL
                OR professional_registration_type = ANY (ARRAY[
                    'CRP',
                    'CRM',
                    'CRFa',
                    'CREFITO',
                    'CRESS',
                    'CRN',
                    'RMS',
                    'outro'
                ])
            );
    END IF;
END $$;

-- UF check (regex pra 2 chars uppercase ou NULL)
DO $$
BEGIN
    IF NOT EXISTS (
        SELECT 1 FROM pg_constraint
        WHERE conname = 'profiles_registration_uf_check'
    ) THEN
        ALTER TABLE public.profiles
            ADD CONSTRAINT profiles_registration_uf_check CHECK (
                professional_registration_uf IS NULL
                OR professional_registration_uf ~ '^[A-Z]{2}$'
            );
    END IF;
END $$;

COMMENT ON COLUMN public.profiles.professional_registration_type IS
    'Tipo de registro profissional. Obrigatório pra emitir recibos/laudos. ROADMAP item #5.';
COMMENT ON COLUMN public.profiles.professional_registration_number IS
    'Número do registro (ex: 06/12345 ou 123456). Formato livre — UI ajuda com mask se relevante.';
COMMENT ON COLUMN public.profiles.professional_registration_uf IS
    'UF do conselho (2 chars uppercase). Alguns conselhos exigem regionalização (CRP 06/SP, CRP 03/BA).';

COMMIT;
