-- Base de données pour l'association Star Wars
-- Création des tables

-- Table des membres
CREATE TABLE IF NOT EXISTS membres (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nom VARCHAR(100) NOT NULL,
    prenom VARCHAR(100) NOT NULL,
    email VARCHAR(150) UNIQUE NOT NULL,
    password VARCHAR(255),
    telephone VARCHAR(20),
    adresse TEXT,
    code_postal VARCHAR(10),
    ville VARCHAR(100),
    droit_image BOOLEAN DEFAULT 0,
    date_inscription DATETIME DEFAULT CURRENT_TIMESTAMP,
    statut_adhesion ENUM('en_attente', 'valide', 'expire') DEFAULT 'en_attente',
    date_debut_adhesion DATE,
    date_fin_adhesion DATE,
    helloasso_payment_id VARCHAR(100),
    notes TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_email (email),
    INDEX idx_statut (statut_adhesion)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Table des événements/soirées
CREATE TABLE IF NOT EXISTS evenements (
    id INT AUTO_INCREMENT PRIMARY KEY,
    titre VARCHAR(200) NOT NULL,
    description TEXT,
    date_evenement DATETIME NOT NULL,
    lieu VARCHAR(200),
    tarif DECIMAL(10,2) DEFAULT 4.00,
    places_limitees BOOLEAN DEFAULT 0,
    nombre_places INT,
    statut ENUM('ouvert', 'complet', 'annule', 'termine') DEFAULT 'ouvert',
    helloasso_event_slug VARCHAR(150),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_date (date_evenement),
    INDEX idx_statut (statut)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Table des inscriptions aux événements
CREATE TABLE IF NOT EXISTS inscriptions_evenements (
    id INT AUTO_INCREMENT PRIMARY KEY,
    membre_id INT NOT NULL,
    evenement_id INT NOT NULL,
    statut_paiement ENUM('en_attente', 'paye', 'annule') DEFAULT 'en_attente',
    helloasso_payment_id VARCHAR(100),
    date_inscription DATETIME DEFAULT CURRENT_TIMESTAMP,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (membre_id) REFERENCES membres(id) ON DELETE CASCADE,
    FOREIGN KEY (evenement_id) REFERENCES evenements(id) ON DELETE CASCADE,
    UNIQUE KEY unique_inscription (membre_id, evenement_id),
    INDEX idx_statut_paiement (statut_paiement)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Table des administrateurs
CREATE TABLE IF NOT EXISTS administrateurs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE NOT NULL,
    password VARCHAR(255) NOT NULL,
    email VARCHAR(150) NOT NULL,
    role ENUM('admin', 'moderateur') DEFAULT 'moderateur',
    last_login DATETIME,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_username (username)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Table des logs HelloAsso (pour synchronisation)
CREATE TABLE IF NOT EXISTS helloasso_logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    type ENUM('adhesion', 'evenement') NOT NULL,
    helloasso_id VARCHAR(100) NOT NULL,
    data JSON,
    traite BOOLEAN DEFAULT 0,
    date_reception DATETIME DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_traite (traite),
    INDEX idx_helloasso_id (helloasso_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Insertion d'un admin par défaut (mot de passe: admin123 - À CHANGER IMMÉDIATEMENT)
INSERT INTO administrateurs (username, password, email, role) 
VALUES ('admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'admin@votre-association.fr', 'admin');

-- Note: Le mot de passe par défaut est "admin123" - CHANGEZ-LE immédiatement après la première connexion!
