<?php
// Script d'installation de la base de données clients
require_once __DIR__ . '/../app/Core/Config.php';

echo "=== Installation Module Clients ===\n";

// Configuration de la base de données
$host = 'localhost';
$username = 'root';
$password = ''; // Mot de passe vide par défaut dans Laragon
$database = 'bd_insuite_backbone';

try {
    // Connexion sans base spécifique pour créer la DB si besoin
    $pdo = new PDO("mysql:host=$host", $username, $password, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4"
    ]);
    
    echo "✓ Connexion MySQL réussie\n";
    
    // Créer la base de données si elle n'existe pas
    $pdo->exec("CREATE DATABASE IF NOT EXISTS `$database` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
    echo "✓ Base de données '$database' créée/vérifiée\n";
    
    // Se connecter à la base spécifique
    $pdo->exec("USE `$database`");
    echo "✓ Connexion à la base '$database'\n";
    
    // Lire et exécuter le script SQL
    $sqlContent = file_get_contents(__DIR__ . '/clients_simple.sql');
    if (!$sqlContent) {
        throw new Exception("Impossible de lire le fichier clients_simple.sql");
    }
    
    // Nettoyer le contenu SQL (supprimer commentaires)
    $lines = explode("\n", $sqlContent);
    $cleanLines = [];
    foreach ($lines as $line) {
        $line = trim($line);
        if (!empty($line) && !str_starts_with($line, '--') && !str_starts_with($line, 'SELECT')) {
            $cleanLines[] = $line;
        }
    }
    $cleanSQL = implode("\n", $cleanLines);
    
    // Diviser en requêtes individuelles
    $queries = array_filter(array_map('trim', preg_split('/;(?=(?:[^\']*\'[^\']*\')*[^\']*$)/', $cleanSQL)));
    
    foreach ($queries as $query) {
        if (empty($query)) continue;
        
        try {
            $result = $pdo->exec($query);
            $queryPreview = str_replace(["\n", "\r"], ' ', substr($query, 0, 60));
            echo "✓ Requête exécutée : $queryPreview...\n";
        } catch (PDOException $e) {
            // Ignorer certaines erreurs attendues
            if (strpos($e->getMessage(), 'Duplicate key name') !== false || 
                strpos($e->getMessage(), 'already exists') !== false ||
                strpos($e->getMessage(), 'Duplicate entry') !== false) {
                echo "⚠ Info : " . $e->getMessage() . "\n";
            } else {
                throw $e; // Re-lancer l'erreur si inattendue
            }
        }
    }
    
    echo "\n=== Installation terminée avec succès ! ===\n";
    
    // Afficher un résumé
    $stmt = $pdo->query("SELECT COUNT(*) as count FROM clients");
    $count = $stmt->fetch()['count'];
    echo "📊 Clients en base : $count\n";
    
    if ($count > 0) {
        $stmt = $pdo->query("SELECT name, email, city FROM clients ORDER BY id LIMIT 3");
        echo "\n📋 Premiers clients :\n";
        while ($client = $stmt->fetch()) {
            echo "  • {$client['name']} - {$client['city']}\n";
        }
    }
    
    echo "\n🌐 Accès au module : http://localhost/Insuite_backbones/public/clients\n";
    
} catch (Exception $e) {
    echo "❌ Erreur : " . $e->getMessage() . "\n";
    exit(1);
}