<?php
/**
 * Script para modificar el ENUM del campo 'role' y agregar 'sub-adm'
 * Este es el problema real: el ENUM solo permite 'admin' y 'user'
 */

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');
    }

    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    echo "<h2>Modificación del ENUM del campo 'role'</h2>";
    
    echo "<h3>Problema identificado:</h3>";
    echo "<p style='color: red; font-size: 16px;'>El campo 'role' es un ENUM que solo permite 'admin' y 'user'.<br>";
    echo "Por eso no se puede guardar 'sub-adm'. Necesitamos modificar el ENUM para incluir 'sub-adm'.</p>";
    
    // Verificar estructura actual
    echo "<h3>Estructura actual del campo 'role':</h3>";
    $stmt = $pdo->query("SHOW COLUMNS FROM users WHERE Field = 'role'");
    $column = $stmt->fetch(PDO::FETCH_ASSOC);
    echo "<p><strong>Tipo actual:</strong> {$column['Type']}</p>";
    
    // Modificar el ENUM para incluir 'sub-adm'
    echo "<h3>Modificando el ENUM...</h3>";
    
    try {
        // Opción 1: Modificar el ENUM para incluir 'sub-adm'
        $sql = "ALTER TABLE users MODIFY COLUMN role ENUM('admin', 'user', 'sub-adm') DEFAULT 'user'";
        $pdo->exec($sql);
        echo "<p style='color: green; font-size: 18px;'><strong>✓ ENUM modificado correctamente</strong></p>";
        
        // Verificar la nueva estructura
        $stmt = $pdo->query("SHOW COLUMNS FROM users WHERE Field = 'role'");
        $newColumn = $stmt->fetch(PDO::FETCH_ASSOC);
        echo "<p><strong>Nuevo tipo:</strong> {$newColumn['Type']}</p>";
        
        // Ahora actualizar el usuario Jonathan
        echo "<h3>Actualizando usuario 'Jonathan'...</h3>";
        $updateStmt = $pdo->prepare("UPDATE users SET role = 'sub-adm' WHERE id = 2");
        $updateStmt->execute();
        $rowsAffected = $updateStmt->rowCount();
        
        if ($rowsAffected > 0) {
            echo "<p style='color: green;'>✓ Usuario actualizado. Filas afectadas: {$rowsAffected}</p>";
        } else {
            echo "<p style='color: orange;'>Usuario ya tenía el rol correcto o no se pudo actualizar.</p>";
        }
        
        // Verificar estado final
        echo "<h3>Estado final de todos los usuarios:</h3>";
        $stmt = $pdo->query("SELECT id, username, role, ship_id, status FROM users ORDER BY id");
        $users = $stmt->fetchAll(PDO::FETCH_ASSOC);
        
        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) {
            $bgColor = '';
            if ($user['role'] === 'sub-adm') {
                $bgColor = 'background-color: #d4edda;';
            } elseif ($user['role'] === 'admin') {
                $bgColor = 'background-color: #cce5ff;';
            }
            echo "<tr style='{$bgColor}'>";
            echo "<td>{$user['id']}</td>";
            echo "<td><strong>{$user['username']}</strong></td>";
            echo "<td>{$user['role']}</td>";
            echo "<td>" . ($user['ship_id'] ?? 'NULL') . "</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 "<p style='color: green; font-size: 18px; margin-top: 20px;'><strong>✓ ¡Problema resuelto! El ENUM ahora incluye 'sub-adm' y el usuario ha sido actualizado.</strong></p>";
        
    } catch (PDOException $e) {
        echo "<p style='color: red;'>Error al modificar el ENUM: " . htmlspecialchars($e->getMessage()) . "</p>";
        echo "<p>Intenta ejecutar manualmente en phpMyAdmin:</p>";
        echo "<pre style='background: #f4f4f4; padding: 10px; border: 1px solid #ddd;'>ALTER TABLE users MODIFY COLUMN role ENUM('admin', 'user', 'sub-adm') DEFAULT 'user';</pre>";
        echo "<p>Y luego:</p>";
        echo "<pre style='background: #f4f4f4; padding: 10px; border: 1px solid #ddd;'>UPDATE users SET role = 'sub-adm' WHERE id = 2;</pre>";
    }
    
    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>";
}
?>

