<?php
// Ce script recrée la base de données à partir de zéro

// Inclure les fichiers nécessaires
require_once './config.php';

echo '<h1>Recréation de la base de données</h1>';

// Vérifier si le fichier de base de données existe et le supprimer
$dbFile = __DIR__ . '/database/association.db';
if (file_exists($dbFile)) {
    // Faire une sauvegarde du fichier existant
    copy($dbFile, $dbFile . '.backup.' . time());
    unlink($dbFile);
    echo '<div style="color: green;">Base de données existante sauvegardée et supprimée.</div>';
}

// Créer une nouvelle base de données
try {
    $db = new PDO('sqlite:' . $dbFile);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // Exécuter le fichier schema.sql
    $schemaFile = __DIR__ . '/database/schema.sql';
    if (file_exists($schemaFile)) {
        $schema = file_get_contents($schemaFile);
        $db->exec($schema);
        echo '<div style="color: green;">Schéma de base de données recréé avec succès.</div>';
    } else {
        echo '<div style="color: red;">Fichier schema.sql non trouvé!</div>';
    }
    
    // Créer la table settings si elle n'existe pas dans le schéma
    $query = "SELECT name FROM sqlite_master WHERE type='table' AND name='settings'";
    $result = $db->query($query)->fetchColumn();
    
    if (!$result) {
        $query = "CREATE TABLE IF NOT EXISTS settings (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            name TEXT NOT NULL,
            email TEXT,
            phone TEXT,
            address TEXT,
            city TEXT,
            description TEXT,
            founding_date TEXT,
            logo TEXT,
            created_at TEXT,
            updated_at TEXT
        )";
        $db->exec($query);
        echo '<div style="color: green;">Table settings créée avec succès.</div>';
    }
    
    // Insérer des données par défaut dans la table settings
    $query = "INSERT INTO settings (name, email, phone, address, city, description, founding_date, created_at, updated_at)
              VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
    $stmt = $db->prepare($query);
    $now = date('Y-m-d H:i:s');
    $stmt->execute([
        'الجمعية الرياضية',
        'contact@association.ma',
        '+212600000000',
        'عنوان الجمعية',
        'المدينة',
        'وصف الجمعية الرياضية',
        '2023-01-01',
        $now,
        $now
    ]);
    
    echo '<div style="color: green;">Données initiales insérées avec succès.</div>';
    
    // Exécuter d'autres fichiers de schéma si nécessaire
    $otherSchemaFiles = [
        __DIR__ . '/database/finance_tables.sql',
        __DIR__ . '/database/financial_settings.sql',
        __DIR__ . '/database/notifications_table.sql'
    ];
    
    foreach ($otherSchemaFiles as $file) {
        if (file_exists($file)) {
            $schema = file_get_contents($file);
            $db->exec($schema);
            echo '<div style="color: green;">Fichier ' . basename($file) . ' exécuté avec succès.</div>';
        }
    }
    
    // Afficher un récapitulatif des tables créées
    $query = "SELECT name FROM sqlite_master WHERE type='table'";
    $tables = $db->query($query)->fetchAll(PDO::FETCH_COLUMN);
    
    echo '<h2>Tables disponibles dans la base de données:</h2>';
    echo '<ul>';
    foreach ($tables as $table) {
        echo '<li>' . $table . '</li>';
    }
    echo '</ul>';
    
    // Fermer proprement la connexion
    $db = null;
    
    echo '<h2>Base de données recréée avec succès!</h2>';
    echo '<a href="settings/association.php" class="btn btn-primary">Aller à la page des paramètres</a>';
    
} catch (PDOException $e) {
    echo '<div style="color: red; font-weight: bold;">Erreur: ' . $e->getMessage() . '</div>';
}
?>
