<?php
/**
 * Script used to ensure fundamental roles exist in the database.
 * Run this by visiting your_site_url/fix_roles.php
 */
require_once 'includes/db.php';

echo "<h1>Revisión y Reparación de Roles</h1>";

try {
    // 1. Verificar si la tabla 'roles' existe
    $stmt = $pdo->query("SHOW TABLES LIKE 'roles'");
    $table_exists = $stmt->rowCount() > 0;

    if (!$table_exists) {
        echo "<p>La tabla 'roles' no existe. Creándola...</p>";
        $pdo->exec("CREATE TABLE roles (
            id INT AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR(50) NOT NULL UNIQUE
        )");
        echo "<p style='color:green'>Tabla 'roles' creada exitosamente.</p>";
    } else {
        echo "<p>La tabla 'roles' ya existe.</p>";
    }

    // 2. Verificar y agregar roles predeterminados
    $default_roles = [
        ['id' => 1, 'name' => 'administrador'],
        ['id' => 2, 'name' => 'profesor'],
        ['id' => 3, 'name' => 'alumno'],
        ['id' => 4, 'name' => 'empresa'],
        ['id' => 5, 'name' => 'egresado']
    ];

    foreach ($default_roles as $role) {
        $stmt = $pdo->prepare("SELECT id FROM roles WHERE id = ? OR name = ?");
        $stmt->execute([$role['id'], $role['name']]);
        if (!$stmt->fetch()) {
            echo "<p>Insertando rol: {$role['name']} (ID: {$role['id']})...</p>";
            $stmt_insert = $pdo->prepare("INSERT INTO roles (id, name) VALUES (?, ?)");
            $stmt_insert->execute([$role['id'], $role['name']]);
        }
    }

    echo "<p style='color:green'>Roles verificados y actualizados.</p>";

    // 3. Verificar si la tabla 'users' tiene 'role_id'
    echo "<h2>Verificando tabla 'users'...</h2>";
    $stmt = $pdo->query("SHOW TABLES LIKE 'users'");
    if ($stmt->rowCount() > 0) {
        $stmt = $pdo->query("SHOW COLUMNS FROM users LIKE 'role_id'");
        if ($stmt->rowCount() == 0) {
            echo "<p>La columna 'role_id' falta en 'users'. Agregándola...</p>";
            $pdo->exec("ALTER TABLE users ADD COLUMN role_id INT NOT NULL AFTER email");
            echo "<p style='color:green'>Columna 'role_id' añadida.</p>";
        } else {
            echo "<p>Culumna 'role_id' ya existe en 'users'.</p>";
        }
    } else {
        echo "<p style='color:red'>¡ADVERTENCIA! La tabla 'users' tampoco existe. Deberías considerar ejecutar el script schema.sql completo.</p>";
    }

    // 4. Verificar tabla 'careers' (necesaria para muchos perfiles)
    echo "<h2>Verificando tabla 'careers'...</h2>";
    $stmt = $pdo->query("SHOW TABLES LIKE 'careers'");
    if ($stmt->rowCount() == 0) {
        echo "<p>La tabla 'careers' no existe. Creándola...</p>";
        $pdo->exec("CREATE TABLE careers (
            id INT AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR(100) NOT NULL UNIQUE
        )");
        echo "<p style='color:green'>Tabla 'careers' creada exitosamente.</p>";
        
        // Agregar ejemplos de carreras
        $pdo->exec("INSERT IGNORE INTO careers (name) VALUES 
            ('Enfermería Técnica'),
            ('Computación e Informática'),
            ('Contabilidad'),
            ('Construcción Civil'),
            ('Electrónica Industrial'),
            ('Mecánica de Producción')");
        echo "<p>Carreras básicas insertadas.</p>";
    } else {
        echo "<p>La tabla 'careers' ya existe.</p>";
    }

    echo "<h2>Finalizado</h2>";
    echo "<p>Intenta iniciar sesión ahora: <a href='login.php'>Volver al Login</a></p>";
    echo "<p style='color:orange'><strong>Nota:</strong> Es recomendable eliminar este archivo después de que el problema esté resuelto por seguridad.</p>";

} catch (PDOException $e) {
    echo "<div style='color:red; background:#fee; padding:10px; border:1px solid red;'>";
    echo "<h3>Error de Base de Datos:</h3>";
    echo $e->getMessage();
    echo "</div>";
}
