-- ============================================================
-- V2.7 — Ayants droit (mutuelles de santé)
-- Auteur: UnionFlow Team | BCEAO/OHADA compliant
-- ============================================================

CREATE TABLE IF NOT EXISTS ayants_droit (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),

    membre_organisation_id   UUID NOT NULL,     -- membre dans le contexte org mutuelle
    prenom                   VARCHAR(100) NOT NULL,
    nom                      VARCHAR(100) NOT NULL,
    date_naissance           DATE,
    lien_parente             VARCHAR(20) NOT NULL,  -- CONJOINT|ENFANT|PARENT|AUTRE
    numero_beneficiaire      VARCHAR(50),            -- numéro pour les conventions santé
    date_debut_couverture    DATE,
    date_fin_couverture      DATE,

    -- Métadonnées BaseEntity
    actif              BOOLEAN NOT NULL DEFAULT TRUE,
    date_creation      TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    date_modification  TIMESTAMP,
    cree_par           VARCHAR(255),
    modifie_par        VARCHAR(255),
    version            BIGINT NOT NULL DEFAULT 0,

    CONSTRAINT fk_ad_membre_org FOREIGN KEY (membre_organisation_id) REFERENCES membres_organisations(id) ON DELETE CASCADE,
    CONSTRAINT chk_ad_lien_parente CHECK (lien_parente IN ('CONJOINT','ENFANT','PARENT','AUTRE'))
);

CREATE INDEX idx_ad_membre_org ON ayants_droit(membre_organisation_id);
CREATE INDEX idx_ad_couverture ON ayants_droit(date_debut_couverture, date_fin_couverture);

COMMENT ON TABLE ayants_droit IS 'Bénéficiaires d''un membre dans une mutuelle de santé (conjoint, enfants, parents)';
COMMENT ON COLUMN ayants_droit.numero_beneficiaire IS 'Numéro unique attribué pour les conventions avec les centres de santé partenaires';
