<?php
require __DIR__ . '/app/Core/Database.php';
use App\Core\Database;

$pdo = Database::pdo();

echo "=== DIAGNOSTIC: Structure de la table users ===\n\n";

try {
    // Récupérer les colonnes de la table users
    $stmt = $pdo->query("DESCRIBE users");
    $columns = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    echo "Colonnes de la table users:\n";
    echo str_repeat("=", 80) . "\n";
    printf("%-20s | %-15s | %-10s | %-8s | %-20s\n", "Colonne", "Type", "Null", "Clé", "Défaut");
    echo str_repeat("=", 80) . "\n";
    
    foreach ($columns as $col) {
        $key = $col['Key'] ?: '-';
        $null = $col['Null'] === 'YES' ? 'OUI' : 'NON';
        $default = $col['Default'] ?: '-';
        printf("%-20s | %-15s | %-10s | %-8s | %-20s\n", 
               $col['Field'], $col['Type'], $null, $key, $default);
    }
    
    echo "\n";
    
    // Chercher la colonne de mot de passe
    $hasPasswordHash = false;
    $hasPassword = false;
    $passwordColumn = null;
    
    foreach ($columns as $col) {
        if ($col['Field'] === 'password_hash') {
            $hasPasswordHash = true;
        }
        if ($col['Field'] === 'password') {
            $hasPassword = true;
            $passwordColumn = 'password';
        }
        if (strpos($col['Field'], 'password') !== false) {
            $passwordColumn = $col['Field'];
        }
    }
    
    echo "État des colonnes de mot de passe:\n";
    echo "  password_hash: " . ($hasPasswordHash ? "✅ Existe" : "❌ N'existe pas") . "\n";
    echo "  password: " . ($hasPassword ? "✅ Existe" : "❌ N'existe pas") . "\n";
    
    if (!$hasPasswordHash && !$hasPassword) {
        echo "\n⚠ PROBLÈME: Aucune colonne de mot de passe trouvée!\n";
    } elseif ($hasPassword && !$hasPasswordHash) {
        echo "\n⚠ PROBLÈME: La colonne s'appelle 'password' et non 'password_hash'\n";
        echo "   Le contrôleur doit être corrigé pour utiliser 'password'\n";
    } elseif ($hasPasswordHash) {
        echo "\n✅ La colonne 'password_hash' est présente et correcte\n";
    }
    
    // Afficher un exemple de requête qui fonctionne
    echo "\n=== TEST DE REQUÊTE ===\n";
    $testStmt = $pdo->prepare("INSERT INTO users(name,email,password_hash,role_key,active) VALUES(?,?,?,?,1)");
    $testEmail = "test_" . time() . "@test.com";
    $testPass = password_hash("test123", PASSWORD_DEFAULT);
    
    try {
        $testStmt->execute(["Test User", $testEmail, $testPass, "agent"]);
        echo "✅ INSERT réussit avec 'password_hash'\n";
        
        // Supprimer le test
        $pdo->prepare("DELETE FROM users WHERE email = ?")->execute([$testEmail]);
        echo "   (Ligne de test supprimée)\n";
    } catch (\Exception $e) {
        echo "❌ INSERT échoue: " . $e->getMessage() . "\n";
    }
    
} catch (Exception $e) {
    echo "❌ Erreur: " . $e->getMessage() . "\n";
}
?>
