<?php
// Script pour créer les tables utilisateurs et autres tables de base
require_once __DIR__ . '/../app/Core/Config.php';

echo "=== Création des tables utilisateurs ===\n";

$host = 'localhost';
$username = 'root';
$password = '';
$database = 'bd_insuite_backbone';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$database", $username, $password, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4"
    ]);
    
    echo "✓ Connexion réussie\n";
    
    // Table users
    $pdo->exec("
        CREATE TABLE IF NOT EXISTS `users` (
            `id` INT(11) NOT NULL AUTO_INCREMENT,
            `username` VARCHAR(50) NOT NULL UNIQUE,
            `email` VARCHAR(100) NOT NULL UNIQUE,
            `password` VARCHAR(255) NOT NULL,
            `full_name` VARCHAR(100),
            `role` VARCHAR(20) DEFAULT 'technicien',
            `active` TINYINT(1) DEFAULT 1,
            `last_login` TIMESTAMP NULL,
            `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            `updated_at` TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP,
            PRIMARY KEY (`id`),
            KEY `idx_username` (`username`),
            KEY `idx_email` (`email`),
            KEY `idx_role` (`role`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
    ");
    echo "✓ Table 'users' créée\n";
    
    // Table settings
    $pdo->exec("
        CREATE TABLE IF NOT EXISTS `settings` (
            `id` INT(11) NOT NULL AUTO_INCREMENT,
            `key_name` VARCHAR(100) NOT NULL UNIQUE,
            `value` TEXT,
            `description` TEXT,
            `type` VARCHAR(20) DEFAULT 'string',
            `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            `updated_at` TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP,
            PRIMARY KEY (`id`),
            UNIQUE KEY `idx_key` (`key_name`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
    ");
    echo "✓ Table 'settings' créée\n";
    
    // Insérer utilisateur admin par défaut (mot de passe: admin123)
    $adminPassword = password_hash('admin123', PASSWORD_DEFAULT);
    $pdo->exec("
        INSERT IGNORE INTO users (id, username, email, password, full_name, role) VALUES
        (1, 'admin', 'admin@novalink.ci', '$adminPassword', 'Administrateur Système', 'admin'),
        (2, 'agent1', 'agent@novalink.ci', '$adminPassword', 'Agent Commercial', 'agent'),
        (3, 'technicien1', 'tech@novalink.ci', '$adminPassword', 'Technicien Terrain', 'technicien')
    ");
    echo "✓ Utilisateurs de base créés\n";
    
    // Insérer paramètres de base
    $pdo->exec("
        INSERT IGNORE INTO settings (key_name, value, description, type) VALUES
        ('app_name', 'NOVALINK', 'Nom de l\\'application', 'string'),
        ('timezone', 'Africa/Abidjan', 'Fuseau horaire par défaut', 'string'),
        ('locale', 'fr_FR', 'Langue par défaut', 'string'),
        ('currency', 'XOF', 'Devise par défaut', 'string'),
        ('company_name', 'NOVALINK SARL', 'Nom de l\\'entreprise', 'string')
    ");
    echo "✓ Paramètres de base créés\n";
    
    // Table roles (optionnelle)
    $pdo->exec("
        CREATE TABLE IF NOT EXISTS `roles` (
            `id` INT(11) NOT NULL AUTO_INCREMENT,
            `key_name` VARCHAR(50) NOT NULL UNIQUE,
            `label` VARCHAR(100) NOT NULL,
            `description` TEXT,
            `permissions` JSON,
            `active` TINYINT(1) DEFAULT 1,
            PRIMARY KEY (`id`),
            UNIQUE KEY `idx_key` (`key_name`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
    ");
    
    $pdo->exec("
        INSERT IGNORE INTO roles (key_name, label, description) VALUES
        ('admin', 'Administrateur', 'Accès complet au système'),
        ('manager', 'Manager', 'Gestion des équipes et incidents'),
        ('superviseur', 'Superviseur', 'Supervision des interventions'),
        ('agent', 'Agent Commercial', 'Gestion des clients et devis'),
        ('technicien', 'Technicien', 'Intervention terrain')
    ");
    echo "✓ Table 'roles' créée\n";
    
    echo "\n=== Résumé ===\n";
    
    $stmt = $pdo->query("SELECT COUNT(*) FROM users");
    echo "👥 Utilisateurs : " . $stmt->fetchColumn() . "\n";
    
    $stmt = $pdo->query("SELECT COUNT(*) FROM settings");
    echo "⚙️ Paramètres : " . $stmt->fetchColumn() . "\n";
    
    $stmt = $pdo->query("SELECT COUNT(*) FROM roles");
    echo "🔐 Rôles : " . $stmt->fetchColumn() . "\n";
    
    echo "\n📋 Comptes créés :\n";
    echo "  • admin / admin123 (Administrateur)\n";
    echo "  • agent1 / admin123 (Agent)\n";
    echo "  • technicien1 / admin123 (Technicien)\n";
    
    echo "\n✅ Tables utilisateurs créées !\n";
    
} catch (Exception $e) {
    echo "❌ Erreur : " . $e->getMessage() . "\n";
    exit(1);
}