-- ============================================================
-- ONCF CAMEROUN - Schéma Base de Données MySQL
-- Ordre National des Conseils Fiscaux du Cameroun
-- ============================================================

CREATE DATABASE IF NOT EXISTS oncf_cameroun CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE oncf_cameroun;

-- ============================================================
-- TABLE: users (administrateurs)
-- ============================================================
CREATE TABLE users (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    name        VARCHAR(150) NOT NULL,
    email       VARCHAR(180) NOT NULL UNIQUE,
    password    VARCHAR(255) NOT NULL,
    role        ENUM('super_admin','admin','moderateur') DEFAULT 'admin',
    avatar      VARCHAR(255) NULL,
    last_login  TIMESTAMP NULL,
    is_active   TINYINT(1) DEFAULT 1,
    created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- ============================================================
-- TABLE: categories_membres (Conseiller Fiscal, Stagiaire, Société)
-- ============================================================
CREATE TABLE categories_membres (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    code        VARCHAR(30) NOT NULL UNIQUE,
    libelle     VARCHAR(100) NOT NULL,
    couleur     VARCHAR(20) DEFAULT '#006633',
    created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- ============================================================
-- TABLE: membres (Annuaire officiel)
-- ============================================================
CREATE TABLE membres (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    numero_agrement VARCHAR(60) NOT NULL UNIQUE,
    nom             VARCHAR(100) NOT NULL,
    prenom          VARCHAR(100) NOT NULL,
    nom_cabinet     VARCHAR(200) NULL,
    categorie_id    INT UNSIGNED NOT NULL,
    photo           VARCHAR(255) NULL,
    logo_cabinet    VARCHAR(255) NULL,
    email           VARCHAR(180) NULL,
    telephone       VARCHAR(30) NULL,
    ville           VARCHAR(100) DEFAULT 'Yaoundé',
    region          VARCHAR(100) NULL,
    adresse         TEXT NULL,
    date_inscription DATE NOT NULL,
    date_prestation  DATE NULL,
    specialites     TEXT NULL COMMENT 'JSON array',
    biographie      TEXT NULL,
    linkedin        VARCHAR(255) NULL,
    statut          ENUM('actif','suspendu','radié','retraité') DEFAULT 'actif',
    created_at      TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at      TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (categorie_id) REFERENCES categories_membres(id)
) ENGINE=InnoDB;

-- ============================================================
-- TABLE: societes (Cabinets & Sociétés agréées)
-- ============================================================
CREATE TABLE societes (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    numero_agrement VARCHAR(60) NOT NULL UNIQUE,
    nom_social      VARCHAR(200) NOT NULL,
    forme_juridique VARCHAR(50) NULL,
    logo            VARCHAR(255) NULL,
    email           VARCHAR(180) NULL,
    telephone       VARCHAR(30) NULL,
    site_web        VARCHAR(255) NULL,
    adresse         TEXT NULL,
    ville           VARCHAR(100) DEFAULT 'Yaoundé',
    region          VARCHAR(100) NULL,
    dirigeant       VARCHAR(200) NULL,
    description     TEXT NULL,
    date_agrement   DATE NOT NULL,
    statut          ENUM('actif','suspendu','radié') DEFAULT 'actif',
    created_at      TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at      TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- Lien membre-société
CREATE TABLE membres_societes (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    membre_id   INT UNSIGNED NOT NULL,
    societe_id  INT UNSIGNED NOT NULL,
    role        VARCHAR(100) NULL,
    depuis      DATE NULL,
    FOREIGN KEY (membre_id)  REFERENCES membres(id)  ON DELETE CASCADE,
    FOREIGN KEY (societe_id) REFERENCES societes(id) ON DELETE CASCADE
) ENGINE=InnoDB;

-- ============================================================
-- TABLE: gouvernance (Conseil de l'Ordre)
-- ============================================================
CREATE TABLE gouvernance (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    nom         VARCHAR(100) NOT NULL,
    prenom      VARCHAR(100) NOT NULL,
    titre       VARCHAR(50) NULL COMMENT 'Dr., Pr., Me., M., Mme',
    fonction    VARCHAR(150) NOT NULL,
    photo       VARCHAR(255) NULL,
    email       VARCHAR(180) NULL,
    telephone   VARCHAR(30) NULL,
    biographie  TEXT NULL,
    mandat_debut DATE NULL,
    mandat_fin   DATE NULL,
    ordre_affichage INT DEFAULT 0,
    organe      ENUM('conseil','bureau','ag','commission') DEFAULT 'conseil',
    commission  VARCHAR(100) NULL,
    est_actif   TINYINT(1) DEFAULT 1,
    created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- ============================================================
-- TABLE: actualites (News & Événements)
-- ============================================================
CREATE TABLE actualites (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    titre       VARCHAR(255) NOT NULL,
    slug        VARCHAR(255) NOT NULL UNIQUE,
    categorie   ENUM('événement','formation','annonce','partenariat','nomination','congrès','autre') DEFAULT 'annonce',
    resume      TEXT NULL,
    contenu     LONGTEXT NULL,
    image       VARCHAR(255) NULL,
    auteur_id   INT UNSIGNED NULL,
    date_publi  DATE NOT NULL,
    est_une     TINYINT(1) DEFAULT 0 COMMENT 'Afficher en à la une',
    statut      ENUM('brouillon','publié','archivé') DEFAULT 'brouillon',
    vues        INT DEFAULT 0,
    created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (auteur_id) REFERENCES users(id) ON DELETE SET NULL
) ENGINE=InnoDB;

-- ============================================================
-- TABLE: formations (Programmes de formation)
-- ============================================================
CREATE TABLE formations (
    id                INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    titre             VARCHAR(255) NOT NULL,
    description       TEXT NULL,
    objectifs         TEXT NULL,
    public_cible      TEXT NULL,
    programme         TEXT NULL COMMENT 'JSON liste modules',
    lieu              VARCHAR(200) NULL,
    ville             VARCHAR(100) NULL,
    date_debut        DATE NOT NULL,
    date_fin          DATE NULL,
    duree_heures      INT NULL,
    places_dispo      INT NULL,
    prix              DECIMAL(10,2) NULL,
    formateur         VARCHAR(200) NULL,
    niveau            ENUM('débutant','intermédiaire','avancé','tous niveaux') DEFAULT 'tous niveaux',
    image             VARCHAR(255) NULL,
    document_programme VARCHAR(255) NULL,
    statut            ENUM('planifiée','en cours','terminée','annulée') DEFAULT 'planifiée',
    est_publié        TINYINT(1) DEFAULT 1,
    created_at        TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at        TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- ============================================================
-- TABLE: inscriptions_formations
-- ============================================================
CREATE TABLE inscriptions_formations (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    formation_id INT UNSIGNED NOT NULL,
    membre_id   INT UNSIGNED NULL,
    nom_complet VARCHAR(200) NOT NULL,
    email       VARCHAR(180) NOT NULL,
    telephone   VARCHAR(30) NULL,
    statut      ENUM('en attente','confirmée','annulée') DEFAULT 'en attente',
    created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (formation_id) REFERENCES formations(id) ON DELETE CASCADE,
    FOREIGN KEY (membre_id)    REFERENCES membres(id)    ON DELETE SET NULL
) ENGINE=InnoDB;

-- ============================================================
-- TABLE: documents (Bibliothèque documentaire)
-- ============================================================
CREATE TABLE documents (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    titre       VARCHAR(255) NOT NULL,
    description TEXT NULL,
    categorie   ENUM('texte_légal','rapport','circulaire','formulaire','guide','autre') DEFAULT 'autre',
    fichier     VARCHAR(255) NOT NULL,
    taille_ko   INT NULL,
    telechargements INT DEFAULT 0,
    est_public  TINYINT(1) DEFAULT 1,
    created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- ============================================================
-- TABLE: partenaires (Institutions partenaires)
-- ============================================================
CREATE TABLE partenaires (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    nom         VARCHAR(200) NOT NULL,
    logo        VARCHAR(255) NULL,
    site_web    VARCHAR(255) NULL,
    type        ENUM('national','international','académique','institutionnel') DEFAULT 'national',
    description TEXT NULL,
    ordre_affichage INT DEFAULT 0,
    est_actif   TINYINT(1) DEFAULT 1,
    created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- ============================================================
-- TABLE: messages_contact (Formulaire de contact)
-- ============================================================
CREATE TABLE messages_contact (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    nom         VARCHAR(100) NOT NULL,
    prenom      VARCHAR(100) NULL,
    email       VARCHAR(180) NOT NULL,
    telephone   VARCHAR(30) NULL,
    sujet       VARCHAR(200) NULL,
    message     TEXT NOT NULL,
    est_lu      TINYINT(1) DEFAULT 0,
    reponse     TEXT NULL,
    repondu_le  TIMESTAMP NULL,
    ip_address  VARCHAR(50) NULL,
    created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- ============================================================
-- TABLE: signalements (Exercice illégal)
-- ============================================================
CREATE TABLE signalements (
    id              INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    nom_declarant   VARCHAR(200) NULL,
    email_declarant VARCHAR(180) NULL,
    description     TEXT NOT NULL,
    personne_signalée VARCHAR(200) NULL,
    lieu            VARCHAR(200) NULL,
    date_faits      DATE NULL,
    preuves         VARCHAR(255) NULL,
    statut          ENUM('nouveau','en traitement','clôturé') DEFAULT 'nouveau',
    anonyme         TINYINT(1) DEFAULT 0,
    created_at      TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- ============================================================
-- TABLE: parametres_site
-- ============================================================
CREATE TABLE parametres_site (
    id      INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    cle     VARCHAR(100) NOT NULL UNIQUE,
    valeur  TEXT NULL,
    groupe  VARCHAR(50) DEFAULT 'general',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- ============================================================
-- TABLE: galerie
-- ============================================================
CREATE TABLE galerie (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    titre       VARCHAR(255) NULL,
    image       VARCHAR(255) NOT NULL,
    album       VARCHAR(100) NULL,
    date_prise  DATE NULL,
    ordre       INT DEFAULT 0,
    created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- ============================================================
-- INDEXES pour performance
-- ============================================================
CREATE INDEX idx_membres_statut    ON membres(statut);
CREATE INDEX idx_membres_ville     ON membres(ville);
CREATE INDEX idx_membres_categorie ON membres(categorie_id);
CREATE INDEX idx_actualites_statut ON actualites(statut);
CREATE INDEX idx_actualites_date   ON actualites(date_publi);
CREATE INDEX idx_actualites_slug   ON actualites(slug);
CREATE INDEX idx_gouvernance_actif ON gouvernance(est_actif);
CREATE INDEX idx_societes_statut   ON societes(statut);

-- ============================================================
-- DONNÉES INITIALES
-- ============================================================

INSERT INTO categories_membres (code, libelle, couleur) VALUES
('CF',      'Conseiller Fiscal',    '#006633'),
('CF_JR',   'Conseiller Fiscal Junior', '#1a7a4a'),
('STAGE',   'Stagiaire',            '#C9952A'),
('SOC_CF',  'Société de Conseillers Fiscaux', '#CE1126'),
('SOC_ASS', 'Société d\'Assistance Fiscale',  '#8B0000');

INSERT INTO parametres_site (cle, valeur, groupe) VALUES
('nom_organisation', 'Ordre National des Conseils Fiscaux du Cameroun', 'general'),
('sigle',            'ONCF',                'general'),
('slogan',           'Le régulateur du conseil fiscal au Cameroun', 'general'),
('adresse',          'Immeuble ONCF, Avenue Kennedy, B.P. 3456, Yaoundé, Cameroun', 'contact'),
('email',            'oncfc@oncfc.cm',    'contact'),
('email_secretariat','oncfc@oncfc.cm', 'contact'),
('telephone',        '(+237) 689 56 84 59',    'contact'),
('mobile',           '(+237) 678 54 76 05',    'contact'),
('whatsapp',         '+237 690 001 234',    'contact'),
('facebook',         '',                    'reseaux'),
('twitter',          '',                    'reseaux'),
('linkedin',         '',                    'reseaux'),
('youtube',          '',                    'reseaux'),
('annee_fondation',  '1999',               'general'),
('heure_ouverture',  'Lun–Ven : 8h–17h, Sam : 9h–13h', 'contact'),
('meta_description', 'Ordre National des Conseils Fiscaux du Cameroun - Institution professionnelle regroupant les conseillers fiscaux agréés', 'seo');

INSERT INTO users (name, email, password, role) VALUES
('Super Administrateur', 'admin@oncfc.cm', '$2y$12$YKgmN2vBNzNEiQHnG7H3UORiGUMUVxkXcFHLhNqvpW5sQi1l2S.bq', 'super_admin');
-- mot de passe: oncf@Admin2025

INSERT INTO partenaires (nom, type, ordre_affichage, est_actif) VALUES
('Direction Générale des Impôts (DGI)', 'national', 1, 1),
('Ministère des Finances du Cameroun',  'national', 2, 1),
('CEMAC', 'international', 3, 1),
('OHADA', 'international', 4, 1),
('IFAC',  'international', 5, 1),
('GICAM', 'national',      6, 1),
('Université de Yaoundé II – FSEG', 'académique', 7, 1),
('Chambre de Commerce du Cameroun',  'national',  8, 1);

INSERT INTO gouvernance (nom, prenom, titre, fonction, organe, ordre_affichage, est_actif, mandat_debut, mandat_fin) VALUES
('ABEGA NKOLO',   'Emmanuel',  'Pr.', 'Président',          'bureau', 1, 1, '2022-03-01', '2026-03-01'),
('MBAKOP ATEBA',  'Cécile',   'Dr.', '1ère Vice-Présidente','bureau', 2, 1, '2022-03-01', '2026-03-01'),
('FONING KAMGA',  'Henri',    'Me.', 'Secrétaire Général',  'bureau', 3, 1, '2022-03-01', '2026-03-01'),
('ONANA BIWOLE',  'Christelle','Mme','Trésorière',          'bureau', 4, 1, '2022-03-01', '2026-03-01'),
('NDOUMBE',       'Paul',      'M.', 'Secrétaire Adjoint',  'bureau', 5, 1, '2022-03-01', '2026-03-01'),
('TOUKAM KEMAJOU','Angèle',   'Mme','Trésorière Adjointe',  'bureau', 6, 1, '2022-03-01', '2026-03-01'),
('MBALLA ETOUNDI','Jean-Pierre','M.','Conseiller',          'conseil',7, 1, '2022-03-01', '2026-03-01'),
('NGUEMBA FOKAM', 'Marie-Claire','Mme','Conseillère',       'conseil',8, 1, '2022-03-01', '2026-03-01');

INSERT INTO membres (numero_agrement, nom, prenom, nom_cabinet, categorie_id, email, telephone, ville, date_inscription, statut) VALUES
('ONCF/CF/2001/001', 'MBALLA ETOUNDI', 'Jean-Pierre', 'Cabinet Mballa & Associés', 1, 'jp.mballa@cabinet-fiscal.cm', '+237 222 112 345', 'Yaoundé',  '2001-06-15', 'actif'),
('ONCF/CF/2003/012', 'NGUEMBA FOKAM',  'Marie-Claire','CFC Partners SARL',         1, 'mc.nguemba@cfcpartners.cm',  '+237 233 001 234', 'Douala',   '2003-04-20', 'actif'),
('ONCF/CF/2005/028', 'NDOUMBE BIYONG', 'Paul',        'Cabinet Ndoumbe Conseil',   1, 'p.ndoumbe@ndoumbeconseils.cm','+237 222 334 456','Yaoundé',  '2005-09-10', 'actif'),
('ONCF/CF/2008/045', 'TOUKAM KEMAJOU', 'Angèle',      'Toukam Fiscal Services',    1, 'a.toukam@toukamfiscal.cm',  '+237 233 445 567', 'Bafoussam','2008-01-25', 'actif'),
('ONCF/CF/2010/056', 'BIYONG EKOTTO',  'Thierry',     'Cabinet BET Conseil',       1, 't.biyong@betconseil.cm',    '+237 222 556 678', 'Yaoundé',  '2010-07-14', 'actif'),
('ONCF/CF/2012/073', 'NKEMDIRIM',      'Esther',      'NKD Fiscal SARL',           1, 'e.nkemdirim@nkdfiscal.cm', '+237 233 667 789', 'Douala',   '2012-11-03', 'actif'),
('ONCF/CF/2015/089', 'FOGUE TALLA',    'Robert',      'RT Conseillers Associés',   1, 'r.fogue@rtconseillers.cm', '+237 222 778 890', 'Yaoundé',  '2015-03-18', 'actif'),
('ONCF/CF/2018/102', 'ATEBA NGONO',    'Sylvie',      'Sylvie Ateba Conseil',      1, 's.ateba@sabconseil.cm',    '+237 233 889 901', 'Douala',   '2018-08-29', 'actif'),
('ONCF/ST/2023/003', 'KAMDEM NGOUFO',  'Boris',       NULL,                        3, 'b.kamdem@stage.cm',        '+237 677 112 223', 'Yaoundé',  '2023-01-10', 'actif'),
('ONCF/ST/2024/007', 'FOUDA MVOGO',    'Patricia',    NULL,                        3, 'p.fouda@stage.cm',         '+237 699 223 334', 'Douala',   '2024-03-05', 'actif');

INSERT INTO societes (numero_agrement, nom_social, forme_juridique, email, telephone, ville, dirigeant, date_agrement, statut) VALUES
('ONCF/SOC/2010/002', 'FISCAM SARL',             'SARL', 'contact@fiscam.cm',        '+237 222 010 020', 'Douala',   'Jean-Pierre MBALLA ETOUNDI', '2010-06-01', 'actif'),
('ONCF/SOC/2015/009', 'TAXE & CONSEIL S.A.',     'S.A.', 'contact@taxeconseil.cm',   '+237 222 015 090', 'Yaoundé',  'Paul NDOUMBE BIYONG',        '2015-02-15', 'actif'),
('ONCF/SOC/2018/015', 'AFC Cameroun SARL',        'SARL', 'contact@afccameroun.cm',   '+237 233 180 150', 'Douala',   'Marie-Claire NGUEMBA FOKAM', '2018-09-20', 'actif'),
('ONCF/SOC/2020/021', 'GEST-FISCAL & Associés',  'SCP',  'contact@gestfiscal.cm',    '+237 222 200 210', 'Yaoundé',  'Angèle TOUKAM KEMAJOU',      '2020-04-10', 'actif');

INSERT INTO actualites (titre, slug, categorie, resume, date_publi, est_une, statut, contenu) VALUES
('Assemblée Générale Annuelle 2025 de l\'ONCF Cameroun',
 'ag-annuelle-2025',
 'événement',
 'L\'Assemblée Générale Annuelle de l\'Ordre National des Conseils Fiscaux du Cameroun s\'est tenue à Yaoundé avec la participation de plus de 150 membres venus des 10 régions.',
 '2025-03-15', 1, 'publié',
 '<p>L\'Assemblée Générale Annuelle 2025 de l\'ONCF Cameroun a réuni l\'ensemble des membres actifs le 15 mars 2025 à Yaoundé. Cette session a permis de valider le rapport moral et financier, d\'examiner les perspectives pour l\'exercice 2025-2026 et d\'élire les membres du Conseil de Discipline.</p><p>Le Président a notamment souligné les progrès réalisés dans la digitalisation des services de l\'Ordre et l\'importance du renforcement des capacités des conseillers fiscaux.</p>'),

('Signature de la Convention de Partenariat ONCF–DGI',
 'convention-oncf-dgi-2025',
 'partenariat',
 'L\'ONCF Cameroun et la Direction Générale des Impôts ont signé une convention de partenariat visant à renforcer la collaboration entre les conseillers fiscaux agréés et l\'administration fiscale.',
 '2025-02-20', 0, 'publié',
 '<p>Une étape majeure dans les relations entre la profession de conseiller fiscal et l\'administration fiscale camerounaise. Cette convention prévoit notamment des mécanismes de concertation régulière et des procédures simplifiées pour les membres de l\'Ordre.</p>'),

('Formation Continue – Fiscalité dans l\'espace OHADA 2025',
 'formation-fiscalite-ohada-2025',
 'formation',
 'Une session de formation sur la fiscalité dans l\'espace OHADA a réuni 80 membres et stagiaires à Douala.',
 '2025-01-18', 0, 'publié',
 '<p>Cette formation de deux jours a abordé les règles d\'harmonisation fiscale dans l\'espace OHADA, les implications pour les cabinets de conseil fiscal et les évolutions législatives récentes. Les participants ont bénéficié d\'ateliers pratiques animés par des experts nationaux et internationaux.</p>'),

('Nomination d\'un Confrère au Poste de Directeur des Grandes Entreprises',
 'nomination-directeur-grandes-entreprises-2025',
 'nomination',
 'Le Conseil de l\'Ordre a l\'honneur d\'annoncer la nomination de l\'un de ses membres éminents au poste de Directeur des Grandes Entreprises à la DGI.',
 '2025-01-05', 0, 'publié',
 '<p>Cette nomination illustre la qualité de la formation et de l\'expertise développées par les membres de l\'ONCF Cameroun. Le Conseil félicite chaleureusement le confrère nommé et lui souhaite plein succès dans ses nouvelles responsabilités.</p>');

-- ============================================================
-- TABLES SUPPLÉMENTAIRES (Médias, Histoire, Profession)
-- ============================================================

-- Vidéos
CREATE TABLE IF NOT EXISTS videos (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    titre       VARCHAR(255) NOT NULL,
    description TEXT NULL,
    url_youtube VARCHAR(255) NULL COMMENT 'ID YouTube ou URL complète',
    fichier     VARCHAR(255) NULL COMMENT 'Vidéo uploadée',
    vignette    VARCHAR(255) NULL,
    categorie   ENUM('événement','formation','interview','congrès','autre') DEFAULT 'autre',
    duree       VARCHAR(20) NULL COMMENT 'Ex: 12:34',
    vues        INT DEFAULT 0,
    est_publié  TINYINT(1) DEFAULT 1,
    date_publi  DATE NOT NULL,
    created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- Histoire de l'Ordre (timeline)
CREATE TABLE IF NOT EXISTS histoire_timeline (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    annee       YEAR NOT NULL,
    titre       VARCHAR(255) NOT NULL,
    contenu     TEXT NULL,
    image       VARCHAR(255) NULL,
    importance  ENUM('majeur','normal') DEFAULT 'normal',
    ordre       INT DEFAULT 0,
    est_actif   TINYINT(1) DEFAULT 1,
    created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- Sections éditoriales (Mot du Président, Mission, etc.)
CREATE TABLE IF NOT EXISTS pages_contenu (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    slug        VARCHAR(100) NOT NULL UNIQUE,
    titre       VARCHAR(255) NOT NULL,
    sous_titre  VARCHAR(255) NULL,
    contenu     LONGTEXT NULL,
    image       VARCHAR(255) NULL,
    meta_desc   TEXT NULL,
    updated_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- Domaines d'intervention
CREATE TABLE IF NOT EXISTS domaines_intervention (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    titre       VARCHAR(200) NOT NULL,
    description TEXT NULL,
    icone       VARCHAR(10) NULL COMMENT 'Emoji',
    couleur     VARCHAR(20) DEFAULT '#006633',
    ordre       INT DEFAULT 0,
    est_actif   TINYINT(1) DEFAULT 1,
    created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- Albums galerie
CREATE TABLE IF NOT EXISTS albums (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    titre       VARCHAR(200) NOT NULL,
    description TEXT NULL,
    couverture  VARCHAR(255) NULL,
    date_event  DATE NULL,
    photos_count INT DEFAULT 0,
    est_publié  TINYINT(1) DEFAULT 1,
    created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- Photos (liées ou non à un album)
CREATE TABLE IF NOT EXISTS galerie_photos (
    id          INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    album_id    INT UNSIGNED NULL,
    titre       VARCHAR(255) NULL,
    image       VARCHAR(255) NOT NULL,
    legende     TEXT NULL,
    ordre       INT DEFAULT 0,
    est_publié  TINYINT(1) DEFAULT 1,
    created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (album_id) REFERENCES albums(id) ON DELETE SET NULL
) ENGINE=InnoDB;

-- Programmes de formation (données riches)

-- Mise à jour des données galerie
INSERT IGNORE INTO albums (titre, description, date_event, est_publié) VALUES
('Assemblée Générale 2025', 'Photos de l\'AG annuelle tenue à Yaoundé le 15 mars 2025', '2025-03-15', 1),
('Formation Fiscalité OHADA 2025', 'Session de formation de deux jours à Douala', '2025-01-18', 1),
('Signature Convention ONCF-DGI', 'Cérémonie officielle de signature à la DGI', '2025-02-20', 1);

-- Données timeline histoire
INSERT IGNORE INTO histoire_timeline (annee, titre, contenu, importance, ordre) VALUES
(1995, 'Création de l\'ONCF Cameroun', 'L\'Ordre National des Conseils Fiscaux du Cameroun est créé par décret présidentiel, en réponse au besoin croissant de professionnels qualifiés dans le domaine fiscal. Cette création marque une étape historique dans la structuration de la profession au Cameroun.', 'majeur', 1),
(1997, 'Première Assemblée Générale constitutive', 'Tenue à Yaoundé, cette assemblée inaugure officiellement les structures de gouvernance de l\'Ordre et adopte les premiers statuts et règlements intérieurs.', 'majeur', 2),
(2001, 'Adoption du Code de Déontologie', 'L\'Ordre se dote d\'un Code de Déontologie complet, fixant les obligations professionnelles, éthiques et disciplinaires de tous les membres.', 'normal', 3),
(2005, 'Adhésion à l\'IFAC', 'L\'ONCF Cameroun est admis comme membre associé de la Fédération Internationale des Comptables (IFAC), renforçant son rayonnement international.', 'majeur', 4),
(2010, 'Lancement de la Formation Continue', 'Mise en place du programme de formation professionnelle continue, obligatoire pour tous les membres actifs, en partenariat avec les universités camerounaises.', 'normal', 5),
(2015, 'Réforme du Règlement Intérieur', 'Une réforme majeure modernise le fonctionnement de l\'Ordre et adapte ses procédures aux évolutions du droit fiscal OHADA et camerounais.', 'normal', 6),
(2018, 'Partenariat DGI–ONCF', 'Signature d\'une convention-cadre avec la Direction Générale des Impôts, instituant un mécanisme de concertation permanent entre l\'administration fiscale et les conseillers fiscaux agréés.', 'majeur', 7),
(2022, 'Renouvellement du Conseil de l\'Ordre', 'Élection d\'un nouveau Conseil lors de l\'AG extraordinaire. Le Pr Emmanuel ABEGA NKOLO est élu Président pour un mandat 2022–2026.', 'majeur', 8),
(2025, 'Digitalisation des Services', 'Lancement du nouveau site web officiel avec annuaire numérique et portail d\'inscription en ligne, marquant l\'entrée de l\'Ordre dans l\'ère du numérique.', 'normal', 9);

-- Contenu des pages éditoriales
INSERT IGNORE INTO pages_contenu (slug, titre, sous_titre, contenu) VALUES
('mot-du-president',
 'Mot du Président',
 'Message du Président du Conseil de l\'Ordre',
 '<p>Chers confrères, chères consœurs, partenaires et amis de l\'ONCF Cameroun,</p>
<p>C\'est avec une immense fierté et un profond sentiment de responsabilité que je vous adresse ce message en ma qualité de Président du Conseil de l\'Ordre National des Conseils Fiscaux du Cameroun.</p>
<p>Depuis sa création en 1995, notre Ordre a su s\'imposer comme une institution de référence dans le paysage fiscal camerounais. Notre mission est claire : assurer la représentation, la défense et la promotion de la profession de conseiller fiscal, tout en garantissant à nos concitoyens et aux entreprises l\'accès à une expertise fiscale de qualité, intègre et responsable.</p>
<p>Les défis qui se présentent à nous sont nombreux. La complexification croissante du droit fiscal, l\'intégration régionale dans le cadre de la CEMAC et de l\'OHADA, la digitalisation des administrations fiscales, autant d\'évolutions qui exigent de nos membres une formation continue et une adaptation permanente. C\'est pourquoi nous avons fait de la formation professionnelle continue l\'une des priorités de notre mandat.</p>
<p>Nous œuvrons également à renforcer la coopération avec les institutions de l\'État, en particulier avec la Direction Générale des Impôts, et avec nos homologues des autres pays africains. Car c\'est ensemble que nous pourrons bâtir une fiscalité juste, efficace et au service du développement économique de notre pays.</p>
<p>Je vous invite à faire de l\'ONCF Cameroun votre maison, à vous impliquer activement dans nos instances et à porter haut nos valeurs communes : l\'excellence, l\'intégrité, la solidarité et le service.</p>
<p>Vive l\'ONCF Cameroun. Vive la République du Cameroun.</p>'),

('mission',
 'Mission & Valeurs',
 'Ce qui nous anime et nous guide',
 '<p>L\'Ordre National des Conseils Fiscaux du Cameroun (ONCF) est une institution professionnelle créée par l\'État camerounais pour organiser et réguler la profession de conseiller fiscal sur l\'ensemble du territoire national.</p>'),

('histoire',
 'Histoire de l\'Ordre',
 'Trente ans au service de la fiscalité camerounaise',
 '<p>L\'histoire de l\'ONCF Cameroun est intimement liée à l\'évolution du système fiscal camerounais et aux besoins croissants des entreprises et particuliers en matière de conseil spécialisé.</p>');

-- Domaines d'intervention
INSERT IGNORE INTO domaines_intervention (titre, description, icone, ordre, est_actif) VALUES
('Fiscalité des entreprises', 'Optimisation fiscale, établissement des déclarations fiscales, assistance lors des contrôles et vérifications de l\'administration fiscale. Conseil en matière d\'impôt sur les sociétés, TVA, patente.', '🏢', 1, 1),
('Fiscalité des particuliers', 'Conseils en matière d\'impôt sur le revenu, déclarations fiscales des personnes physiques, gestion du patrimoine sous l\'angle fiscal, transmission successorale.', '👤', 2, 1),
('Fiscalité internationale', 'Analyse des conventions fiscales, prix de transfert, planification fiscale internationale pour les entreprises multinationales, fiscalité des expatriés.', '🌍', 3, 1),
('Audit et contrôle fiscal', 'Audit fiscal préventif, identification des risques fiscaux, accompagnement lors des vérifications de l\'administration, régularisation des situations fiscales irrégulières.', '🔍', 4, 1),
('Contentieux fiscal', 'Assistance et représentation lors de litiges avec l\'administration fiscale, rédaction de réclamations contentieuses, recours hiérarchiques et juridictionnels.', '⚖️', 5, 1),
('Conseil en marchés publics', 'Analyse fiscale des offres dans le cadre des marchés publics, optimisation de la charge fiscale dans les soumissions, conformité fiscale des opérations publiques.', '📋', 6, 1),
('Fiscalité immobilière', 'Conseils sur les taxes foncières, TVA immobilière, droits d\'enregistrement, fiscalité des plus-values immobilières, montage fiscal des opérations immobilières.', '🏗️', 7, 1),
('Droit fiscal OHADA', 'Assistance en matière d\'harmonisation fiscale dans l\'espace OHADA, traitement fiscal des opérations de restructuration d\'entreprises, conformité SYSCOHADA.', '🤝', 8, 1);

-- Données vidéos
INSERT IGNORE INTO videos (titre, description, url_youtube, categorie, duree, date_publi, est_publié) VALUES
('Assemblée Générale ONCF 2025 — Allocution du Président', 'Discours d\'ouverture du Président Pr Emmanuel ABEGA NKOLO lors de l\'AG annuelle 2025.', 'dQw4w9WgXcQ', 'événement', '18:32', '2025-03-15', 1),
('Formation Fiscalité OHADA — Séance 1', 'Première séance de la formation sur la fiscalité dans l\'espace OHADA, animée par Dr Cécile MBAKOP ATEBA.', 'dQw4w9WgXcQ', 'formation', '45:12', '2025-01-18', 1),
('Signature Convention ONCF-DGI — Cérémonie officielle', 'Retour en images sur la cérémonie de signature de la convention de partenariat entre l\'ONCF et la DGI.', 'dQw4w9WgXcQ', 'événement', '8:45', '2025-02-20', 1);

