-- =====================================================
-- Script de création des tables pour le site omag.ma
-- Base de données: omag
-- =====================================================

USE omag;
GO

-- =====================================================
-- Table: actualites (unifiée pour tous les types)
-- Types: evenement, mise_a_jour, article, annonce
-- =====================================================
IF NOT EXISTS (SELECT *
FROM sys.tables
WHERE name = 'actualites')
BEGIN
    CREATE TABLE actualites
    (
        id INT IDENTITY(1,1) PRIMARY KEY,

        -- Informations communes
        type NVARCHAR(50) NOT NULL DEFAULT 'article',
        -- evenement, mise_a_jour, article, annonce
        titre NVARCHAR(255) NOT NULL,
        description NVARCHAR(MAX),
        contenu NVARCHAR(MAX),
        -- Contenu HTML détaillé
        image_url NVARCHAR(500),
        actif BIT DEFAULT 1,
        date_publication DATE DEFAULT GETDATE(),

        -- Champs spécifiques aux événements
        date_evenement DATE NULL,
        heure NVARCHAR(20) NULL,
        lieu NVARCHAR(255) NULL,
        adresse_complete NVARCHAR(500) NULL,
        intervenant NVARCHAR(255) NULL,
        programme NVARCHAR(MAX) NULL,
        inscription_ouverte BIT DEFAULT 0,
        date_limite_inscription DATE NULL,

        -- Champs spécifiques aux mises à jour
        version NVARCHAR(50) NULL,
        lien_telechargement NVARCHAR(500) NULL,

        -- Métadonnées
        ordre_affichage INT DEFAULT 0,
        -- Pour trier manuellement
        created_at DATETIME DEFAULT GETDATE(),
        updated_at DATETIME DEFAULT GETDATE()
    );

    -- Index pour améliorer les performances
    CREATE INDEX IX_actualites_type ON actualites(type);
    CREATE INDEX IX_actualites_actif ON actualites(actif);
    CREATE INDEX IX_actualites_date_publication ON actualites(date_publication DESC);

    PRINT 'Table actualites créée avec succès';
END
ELSE
BEGIN
    PRINT 'Table actualites existe déjà';
END


-- =====================================================
-- Table: inscriptions_evenements
-- =====================================================
IF NOT EXISTS (SELECT *
FROM sys.tables
WHERE name = 'inscriptions_evenements')
BEGIN
    CREATE TABLE inscriptions_evenements
    (
        id INT IDENTITY(1,1) PRIMARY KEY,
        actualite_id INT NOT NULL,
        -- Reference vers l'événement dans actualites
        entreprise NVARCHAR(255) NOT NULL,
        adresse NVARCHAR(500),
        ville NVARCHAR(100),
        telephone_entreprise NVARCHAR(50),
        nom NVARCHAR(100) NOT NULL,
        prenom NVARCHAR(100) NOT NULL,
        email NVARCHAR(255) NOT NULL,
        telephone NVARCHAR(50),
        fonction NVARCHAR(100),
        date_inscription DATETIME DEFAULT GETDATE(),
        CONSTRAINT FK_inscriptions_actualite FOREIGN KEY (actualite_id)
            REFERENCES actualites(id) ON DELETE CASCADE
    );

    -- Index pour améliorer les performances
    CREATE INDEX IX_inscriptions_actualite_id ON inscriptions_evenements(actualite_id);
    CREATE INDEX IX_inscriptions_email ON inscriptions_evenements(email);

    PRINT 'Table inscriptions_evenements créée avec succès';
END
ELSE
BEGIN
    PRINT 'Table inscriptions_evenements existe déjà';
END


-- =====================================================
-- Supprimer l'ancienne table evenements si elle existe
-- =====================================================
IF EXISTS (SELECT *
FROM sys.tables
WHERE name = 'evenements')
BEGIN
    DROP TABLE evenements;
    PRINT 'Ancienne table evenements supprimée';
END


-- =====================================================
-- Insertion de l'événement du 17 décembre 2024
-- =====================================================
IF NOT EXISTS (SELECT *
FROM actualites
WHERE titre LIKE '%Table Ronde%Délais de Paiement%')
BEGIN
    INSERT INTO actualites
        (
        type,
        titre,
        description,
        contenu,
        date_publication,
        date_evenement,
        heure,
        lieu,
        adresse_complete,
        intervenant,
        programme,
        actif,
        inscription_ouverte,
        date_limite_inscription,
        ordre_affichage
        )
    VALUES
        (
            'evenement',
            'Table Ronde & Démonstration Omag - Délais de Paiement',
            'Dans le cadre de la table ronde organisée par la Chambre de Commerce, d''Industrie et de Services sur les délais de paiement, nous avons le plaisir de vous inviter à un événement exceptionnel alliant expertise juridique et solutions pratiques.',
            NULL,
            GETDATE(),
            '2024-12-17',
            '14h30',
            'Chambre de Commerce, d''Industrie et de Services - Kénitra',
            'CCIS Kénitra',
            'Mohammed Amine Ouezzani, Expert-Comptable',
            '<h4>1. Table ronde : Le cadre légal des délais de paiement</h4>
<p>Animée par Mohammed Amine Ouezzani, Expert-Comptable</p>
<ul>
<li>Présentation de la réglementation en vigueur</li>
<li>Obligations légales et bonnes pratiques</li>
<li>Enjeux pour les entreprises</li>
</ul>

<h4>2. Démonstration pratique : Omag en action</h4>
<ul>
<li>Comment le logiciel Omag vous accompagne au quotidien</li>
<li>Gestion automatisée des délais de paiement</li>
<li>Mise en conformité simplifiée</li>
<li>Cas pratiques et fonctionnalités clés</li>
</ul>',
            1,
            1,
            '2024-12-16',
            1
    );
    PRINT 'Événement du 17 décembre 2024 inséré avec succès';
END


-- =====================================================
-- Exemple: Insertion d'une mise à jour (optionnel)
-- =====================================================
/*
INSERT INTO actualites (type, titre, description, version, actif, date_publication)
VALUES (
    'mise_a_jour',
    'Omag Version 6.5 disponible',
    'Nouvelle version avec gestion automatisée des délais de paiement et nombreuses améliorations.',
    '6.5',
    1,
    GETDATE()
);
*/

-- =====================================================
-- Vérification
-- =====================================================
SELECT *
FROM actualites;
GO
