<?php
require __DIR__ . '/app/Core/Database.php';
use App\Core\Database;

try {
    $pdo = Database::pdo();
    
    echo "=== DIAGNOSTIC: Modification d'utilisateurs terrain ===\n\n";
    
    // 1. Lister tous les utilisateurs
    echo "1. Tous les utilisateurs:\n";
    $stmt = $pdo->query("SELECT id, name, email, role_key, active FROM users ORDER BY id");
    $allUsers = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    foreach ($allUsers as $u) {
        echo sprintf("   ID:%-2d | %-20s | %-30s | %-12s | Active:%d\n", 
            $u['id'], $u['name'], $u['email'], $u['role_key'], $u['active']);
    }
    
    echo "\n2. Test de modification directe (base de données):\n";
    
    if (!empty($allUsers)) {
        $testUser = $allUsers[count($allUsers) - 1]; // Dernier utilisateur
        $userId = $testUser['id'];
        $originalName = $testUser['name'];
        $testName = "TEST_" . time();
        
        echo "   Testons la modification de l'utilisateur ID {$userId} ({$originalName})\n";
        echo "   Nouveau nom: {$testName}\n";
        
        // Tentative de modification
        $updateStmt = $pdo->prepare('UPDATE users SET name = ? WHERE id = ?');
        $result = $updateStmt->execute([$testName, $userId]);
        
        if ($result) {
            echo "   ✅ Exécution de la requête réussie\n";
            
            // Vérifier
            $checkStmt = $pdo->prepare('SELECT name FROM users WHERE id = ?');
            $checkStmt->execute([$userId]);
            $updated = $checkStmt->fetch(PDO::FETCH_ASSOC);
            echo "   Vérification: Nouveau nom en DB = {$updated['name']}\n";
            
            if ($updated['name'] === $testName) {
                echo "   ✅ Les données ont bien été modifiées\n";
                
                // Rollback
                $rbStmt = $pdo->prepare('UPDATE users SET name = ? WHERE id = ?');
                $rbStmt->execute([$originalName, $userId]);
                echo "   (Rollback effectué)\n";
            } else {
                echo "   ❌ Les données N'ONT PAS été modifiées\n";
            }
        } else {
            echo "   ❌ Erreur lors de l'exécution: \n";
            print_r($updateStmt->errorInfo());
        }
    }
    
    echo "\n3. Vérifier la connexion à la DB:\n";
    echo "   PDO Driver: " . $pdo->getAttribute(PDO::ATTR_DRIVER_NAME) . "\n";
    echo "   Status OK ✅\n";
    
} catch (Exception $e) {
    echo "❌ Erreur: " . $e->getMessage() . "\n";
}
?>
?>
