<?php
/**
 * Script simple para corregir usuarios con rol NULL o vacío
 * Versión simplificada sin transacciones
 */

require_once 'config.php';
require_once 'auth.php';

checkLogin();
if (($_SESSION['role'] ?? '') !== 'admin') {
    die('Solo el administrador puede ejecutar este script');
}

try {
    $pdo = getDBConnection();
    if (!$pdo) {
        die('Error de conexión a la base de datos');
    }

    echo "<h2>Corrección Simple de Roles</h2>";
    
    // Actualizar directamente todos los usuarios con rol NULL o vacío
    // Si tienen ship_id, asignar 'sub-adm', si no, 'user'
    $sql = "UPDATE users 
            SET role = CASE 
                WHEN (ship_id IS NOT NULL AND ship_id != '') THEN 'sub-adm'
                ELSE 'user'
            END
            WHERE (role IS NULL OR role = '' OR role = 'NULL') AND username != 'admin'";
    
    $stmt = $pdo->prepare($sql);
    $stmt->execute();
    $rowsAffected = $stmt->rowCount();
    
    echo "<p style='color: green; font-size: 18px;'><strong>✓ Se actualizaron {$rowsAffected} usuarios</strong></p>";
    
    // Verificar resultados
    echo "<h3>Usuarios actualizados:</h3>";
    $stmt = $pdo->query("SELECT id, username, role, ship_id, status FROM users WHERE role = 'sub-adm' OR (role = 'user' AND (role IS NULL OR role = '')) ORDER BY id");
    $users = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    if (count($users) > 0) {
        echo "<table border='1' cellpadding='5' style='border-collapse: collapse;'>";
        echo "<tr><th>ID</th><th>Usuario</th><th>Rol</th><th>Ship ID</th><th>Status</th></tr>";
        foreach ($users as $user) {
            echo "<tr>";
            echo "<td>{$user['id']}</td>";
            echo "<td><strong>{$user['username']}</strong></td>";
            echo "<td>{$user['role']}</td>";
            echo "<td>" . ($user['ship_id'] ?? 'N/A') . "</td>";
            echo "<td>{$user['status']}</td>";
            echo "</tr>";
        }
        echo "</table>";
    }
    
    // Resumen final
    echo "<h3>Resumen de roles:</h3>";
    $stmt = $pdo->query("SELECT role, COUNT(*) as count FROM users GROUP BY role ORDER BY role");
    $roles = $stmt->fetchAll(PDO::FETCH_ASSOC);
    echo "<table border='1' cellpadding='5' style='border-collapse: collapse;'>";
    echo "<tr><th>Rol</th><th>Cantidad</th></tr>";
    foreach ($roles as $role) {
        $roleName = $role['role'] ?? 'NULL';
        echo "<tr>";
        echo "<td><strong>{$roleName}</strong></td>";
        echo "<td>{$role['count']}</td>";
        echo "</tr>";
    }
    echo "</table>";
    
    echo "<br><p style='color: red;'><strong>IMPORTANTE:</strong> Elimina este archivo después de ejecutarlo.</p>";
    
} catch (Exception $e) {
    echo "<p style='color: red;'>Error: " . htmlspecialchars($e->getMessage()) . "</p>";
    echo "<p>Error Info: " . json_encode($pdo->errorInfo()) . "</p>";
}
?>

