-- ============================================================================
-- Migration 002 — Composition du comité, départements, Commission
-- d'Organisation Locale (COL), enrichissement du PAO, activités réalisées
-- avec rapport/PV obligatoire et réconciliation planifié/réalisé.
-- À exécuter sur une base ayant déjà schema.sql + migrations précédentes.
-- ============================================================================

-- --------------------------------------------------------------------------
-- 1. Départements / commissions locales (Chorale, Huissiers, Sport et
--    Culture, Jeunes filles et dames, etc.)
-- --------------------------------------------------------------------------

CREATE TABLE clj_departements (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    clj_id          INT UNSIGNED NOT NULL,
    nom             VARCHAR(150) NOT NULL,
    description     TEXT NULL,
    statut          ENUM('actif','inactif') NOT NULL DEFAULT 'actif',
    FOREIGN KEY (clj_id) REFERENCES clj(id) ON DELETE CASCADE
) ENGINE=InnoDB;

CREATE TABLE clj_departement_membres (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    departement_id  INT UNSIGNED NOT NULL,
    user_id         INT UNSIGNED NOT NULL,
    role            VARCHAR(100) NULL,  -- ex: Responsable, Membre
    date_debut      DATE NOT NULL,
    date_fin        DATE NULL,
    FOREIGN KEY (departement_id) REFERENCES clj_departements(id) ON DELETE CASCADE,
    FOREIGN KEY (user_id) REFERENCES users(id)
) ENGINE=InnoDB;

-- --------------------------------------------------------------------------
-- 2. Commission d'Organisation Locale (COL) — aide le comité à réaliser
--    les activités, à l'image de la COZ mais au niveau du CLJ.
-- --------------------------------------------------------------------------

CREATE TABLE clj_col_membres (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    clj_id          INT UNSIGNED NOT NULL,
    user_id         INT UNSIGNED NOT NULL,
    statut          ENUM('permanent','renfort') NOT NULL DEFAULT 'permanent',
    poste           VARCHAR(100) NULL,
    date_debut      DATE NOT NULL,
    date_fin        DATE NULL,
    FOREIGN KEY (clj_id) REFERENCES clj(id) ON DELETE CASCADE,
    FOREIGN KEY (user_id) REFERENCES users(id)
) ENGINE=InnoDB;

-- --------------------------------------------------------------------------
-- 3. Enrichissement du PAO : lieu, responsable, budget, résultats attendus,
--    fréquence — nécessaires pour un vrai plan d'action opérationnel.
-- --------------------------------------------------------------------------

ALTER TABLE pao_activite
    ADD COLUMN lieu               VARCHAR(150) NULL AFTER date_prevue,
    ADD COLUMN frequence          VARCHAR(100) NULL AFTER lieu,
    ADD COLUMN responsable_id     INT UNSIGNED NULL AFTER frequence,
    ADD COLUMN budget_alloue      DECIMAL(12,2) NULL AFTER responsable_id,
    ADD COLUMN resultats_attendus TEXT NULL AFTER budget_alloue,
    ADD FOREIGN KEY (responsable_id) REFERENCES users(id);

-- --------------------------------------------------------------------------
-- 4. Activités réalisées, avec rapport/PV OBLIGATOIRE, et rattachement
--    optionnel à une activité du PAO pour permettre la réconciliation :
--      - planifiées ET réalisées   : pao_activite avec une ligne liée ici
--      - planifiées NON réalisées  : pao_activite passée, sans ligne liée
--      - réalisées NON planifiées  : ligne ici avec pao_activite_id = NULL
-- --------------------------------------------------------------------------

CREATE TABLE activites_realisees (
    id                   INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    clj_id               INT UNSIGNED NOT NULL,
    pao_activite_id      INT UNSIGNED NULL,  -- NULL = activité non planifiée au départ
    titre                VARCHAR(200) NOT NULL,
    date_realisation     DATE NOT NULL,
    lieu                 VARCHAR(150) NULL,
    secteur              VARCHAR(150) NULL,  -- axe stratégique, utile si non rattachée à un PAO
    responsable_id       INT UNSIGNED NULL,
    resultats_obtenus    TEXT NULL,
    rapport_pv           TEXT NOT NULL,      -- obligatoire : compte-rendu / PV de l'activité
    rapport_fichier_url  VARCHAR(255) NULL,  -- si le PV existe aussi en pièce jointe
    budget_reel          DECIMAL(12,2) NULL,
    FOREIGN KEY (clj_id) REFERENCES clj(id) ON DELETE CASCADE,
    FOREIGN KEY (pao_activite_id) REFERENCES pao_activite(id),
    FOREIGN KEY (responsable_id) REFERENCES users(id)
) ENGINE=InnoDB;
