-- ============================================================================
-- Migration 003 — Niveau CZJ complet : départements zonaux, coordination COZ
-- (3 membres) + sous-commissions permanentes, PAO Zonal avec ses propres
-- activités enrichies, activités réalisées + rapport obligatoire, patrimoine
-- utilisable au niveau CZJ.
-- ============================================================================

-- --------------------------------------------------------------------------
-- 1. Départements zonaux (Chorale zonale, Groupe de louange zonal, Sport et
--    Culture, Coordination des mouvements de jeunes filles et dames...)
-- --------------------------------------------------------------------------

CREATE TABLE czj_departements (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    nom             VARCHAR(150) NOT NULL,
    description     TEXT NULL,
    statut          ENUM('actif','inactif') NOT NULL DEFAULT 'actif'
) ENGINE=InnoDB;

CREATE TABLE czj_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,
    date_debut      DATE NOT NULL,
    date_fin        DATE NULL,
    FOREIGN KEY (departement_id) REFERENCES czj_departements(id) ON DELETE CASCADE,
    FOREIGN KEY (user_id) REFERENCES users(id)
) ENGINE=InnoDB;

-- --------------------------------------------------------------------------
-- 2. COZ : distinction coordination (3 membres qui supervisent) vs le reste
--    des jeunes cooptés, + sous-commissions permanentes (structure standing,
--    différente des commissions_execution qui sont propres à un mandat).
-- --------------------------------------------------------------------------

ALTER TABLE coz_membres
    ADD COLUMN est_coordinateur BOOLEAN NOT NULL DEFAULT FALSE AFTER poste,
    ADD COLUMN clj_origine_id INT UNSIGNED NULL COMMENT 'CLJ depuis lequel le jeune a été coopté' AFTER user_id,
    ADD FOREIGN KEY (clj_origine_id) REFERENCES clj(id);

CREATE TABLE coz_sous_commissions (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    nom             VARCHAR(150) NOT NULL,   -- ex: Logistique, Communication, Accueil, Sécurité
    description     TEXT NULL,
    statut          ENUM('actif','inactif') NOT NULL DEFAULT 'actif'
) ENGINE=InnoDB;

CREATE TABLE coz_sous_commission_membres (
    id                  INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    sous_commission_id  INT UNSIGNED NOT NULL,
    coz_membre_id       INT UNSIGNED NOT NULL,  -- doit être un membre déjà coopté dans coz_membres
    date_debut          DATE NOT NULL,
    date_fin            DATE NULL,
    FOREIGN KEY (sous_commission_id) REFERENCES coz_sous_commissions(id) ON DELETE CASCADE,
    FOREIGN KEY (coz_membre_id) REFERENCES coz_membres(id) ON DELETE CASCADE
) ENGINE=InnoDB;

-- --------------------------------------------------------------------------
-- 3. PAO Zonal : le CZJ a son propre plan d'action, distinct de la simple
--    consolidation des PAO des CLJ (qui reste possible via pao_czj_axe_id
--    sur pao_activite, déjà en place).
-- --------------------------------------------------------------------------

CREATE TABLE pao_czj_activite (
    id                  INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    pao_czj_axe_id      INT UNSIGNED NOT NULL,
    nom                 VARCHAR(200) NOT NULL,
    description         TEXT NULL,
    date_prevue         DATE NULL,
    lieu                VARCHAR(150) NULL,
    frequence           VARCHAR(100) NULL,
    responsable_id      INT UNSIGNED NULL,
    budget_alloue       DECIMAL(12,2) NULL,
    resultats_attendus  TEXT NULL,
    statut              ENUM('planifie','en_cours','realise','reporte','annule') NOT NULL DEFAULT 'planifie',
    taux_realisation    TINYINT UNSIGNED NOT NULL DEFAULT 0,
    FOREIGN KEY (pao_czj_axe_id) REFERENCES pao_czj_axe(id) ON DELETE CASCADE,
    FOREIGN KEY (responsable_id) REFERENCES users(id)
) ENGINE=InnoDB;

-- --------------------------------------------------------------------------
-- 4. Activités réalisées au niveau zonal, rapport/PV OBLIGATOIRE, même
--    logique de réconciliation que pour les CLJ.
-- --------------------------------------------------------------------------

CREATE TABLE czj_activites_realisees (
    id                   INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    pao_czj_activite_id  INT UNSIGNED NULL,
    titre                VARCHAR(200) NOT NULL,
    date_realisation     DATE NOT NULL,
    lieu                 VARCHAR(150) NULL,
    secteur              VARCHAR(150) NULL,
    responsable_id       INT UNSIGNED NULL,
    resultats_obtenus    TEXT NULL,
    rapport_pv           TEXT NOT NULL,
    rapport_fichier_url  VARCHAR(255) NULL,
    budget_reel          DECIMAL(12,2) NULL,
    FOREIGN KEY (pao_czj_activite_id) REFERENCES pao_czj_activite(id),
    FOREIGN KEY (responsable_id) REFERENCES users(id)
) ENGINE=InnoDB;

-- --------------------------------------------------------------------------
-- 5. Patrimoine utilisable aussi au niveau CZJ (jusqu'ici réservé aux CLJ).
-- --------------------------------------------------------------------------

ALTER TABLE patrimoine
    MODIFY COLUMN clj_id INT UNSIGNED NULL,
    ADD COLUMN portee ENUM('CLJ','CZJ') NOT NULL DEFAULT 'CLJ' AFTER id;
