<?php
// 1. Configuración de entorno y zona horaria
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
date_default_timezone_set('America/Guayaquil');

if (session_status() === PHP_SESSION_NONE) { 
    session_start(); 
}

// 2. Control de Acceso y Sesión
if (!isset($_SESSION['usu_id'])) {
    http_response_code(403);
    echo '<div class="alert alert-danger small p-2 mb-0">⚠️ Error: Sesión expirada o no activa. Por favor, vuelva a iniciar sesión.</div>';
    exit();
}

$id_juez_sesion = intval($_SESSION['usu_id']);

// 3. Inclusión de la clase de Base de Datos
$ruta_conexion = dirname(__DIR__, 2) . '/modelo/Db.php';

if (!file_exists($ruta_conexion)) {
    http_response_code(500);
    echo '<div class="alert alert-danger small p-2 mb-0">❌ Error Crítico: No se encontró el archivo de conexión en: <strong>' . htmlspecialchars($ruta_conexion) . '</strong></div>';
    exit();
}

require_once($ruta_conexion);

if (!class_exists('clsbdd')) {
    http_response_code(500);
    echo '<div class="alert alert-danger small p-2 mb-0">❌ Error Crítico: La clase "clsbdd" no está definida.</div>';
    exit();
}

// 4. Validación del ID del Evento
$evp_id = isset($_GET['evp_id']) ? intval($_GET['evp_id']) : 0;

// Instanciar base de datos
try {
    $bd = new clsbdd();
} catch (Exception $e) {
    http_response_code(500);
    echo '<div class="alert alert-danger small p-2 mb-0">❌ Error al conectar a la BD: ' . htmlspecialchars($e->getMessage()) . '</div>';
    exit();
}

// VISTA A: SI NO HAY EVENTO SELECCIONADO
if ($evp_id <= 0) {
    try {
        $sql_eventos_juez = "SELECT e.evp_id, e.evp_nombre FROM bas_eventos_propios e INNER JOIN bas_jueces_eventos j ON e.evp_id = j.evp_id WHERE j.usu_id = $id_juez_sesion ORDER BY e.evp_id DESC";
        $res_eventos = $bd->ejecutar_array($sql_eventos_juez);
        ?>
        <div class="card bg-white border shadow-sm rounded-3 p-4">
            <h5 class="text-dark fw-bold mb-3"><i class="fas fa-gavel text-primary me-2"></i>Panel de Calificación Activa</h5>
            <span class="badge bg-dark mb-4 p-2 text-uppercase font-monospace" style="font-size: 0.75rem;">Área Asignada: Personalizada</span>
            <form method="GET" action="">
                <div class="mb-3">
                    <label class="form-label small fw-bold text-muted text-uppercase">Selecciona el Evento Activo</label>
                    <select class="form-select form-select-lg" id="select_evento_juez" name="evp_id" onchange="this.form.submit()">
                        <option value="">-- SELECCIONE UN EVENTO PROPIO --</option>
                        <?php
                        if (!empty($res_eventos)) {
                            foreach ($res_eventos as $row_ev) {
                                echo '<option value="' . $row_ev['evp_id'] . '">' . htmlspecialchars($row_ev['evp_nombre']) . '</option>';
                            }
                        } else {
                            echo '<option value="" disabled>No tienes eventos asignados actualmente</option>';
                        }
                        ?>
                    </select>
                </div>
            </form>
        </div>
        <?php
    } catch (Exception $e) {
        echo '<div class="alert alert-danger small p-2 mb-0">❌ Error al cargar listado de eventos: ' . htmlspecialchars($e->getMessage()) . '</div>';
    }
    exit();
}

// VISTA B: SI YA SELECCIONÓ UN EVENTO
try {
    $sql_permiso = "SELECT 1 FROM bas_jueces_eventos WHERE evp_id = $evp_id AND usu_id = $id_juez_sesion LIMIT 1";
    $res_permiso = $bd->ejecutar_array($sql_permiso);
    
    if (empty($res_permiso)) {
        echo '<div class="alert alert-danger small p-3 mb-0 text-center fw-bold"><i class="fas fa-shield-alt me-2"></i> Acceso Denegado.</div>';
        exit(); 
    }
    
    $sql_evento = "SELECT * FROM bas_eventos_propios WHERE evp_id = $evp_id LIMIT 1";
    $res_evento = $bd->ejecutar_array($sql_evento);

    if (!empty($res_evento) && $evento = $res_evento[0]) {
        // Seleccionamos tanto el niv_id como el ins_id relacional
        $sql_escaleta = "SELECT n.niv_id, a.ins_id, a.ins_nombre_academia, n.niv_categoria, n.niv_rango, n.niv_orden_salida,
                        COUNT(c.cal_id) as ya_calificado
                 FROM bas_inscripciones_niveles n 
                 INNER JOIN bas_academias_inscritas a ON n.ins_id = a.ins_id 
                 LEFT JOIN bas_calificaciones_jueces c ON a.ins_id = c.ins_id AND c.usu_id = $id_juez_sesion
                 WHERE a.evp_id = $evp_id 
                 GROUP BY n.niv_id, a.ins_id
                 ORDER BY n.niv_orden_salida ASC, n.niv_id ASC";
        
        $res_escaleta = $bd->ejecutar_array($sql_escaleta);
        ?>
        <div class="d-flex justify-content-between align-items-center mb-3 pb-2 border-bottom">
            <div>
                <h5 class="text-dark fw-bold mb-0">Mesa Técnica: <?= htmlspecialchars($evento['evp_nombre']) ?></h5>
                <p class="text-muted small mb-0">Sede: <?= htmlspecialchars($evento['evp_lugar']) ?> | Fecha: <?= date('d/m/Y', strtotime($evento['evp_fecha'])) ?></p>
            </div>
        </div>

        <div class="row g-3">
            <div class="col-md-4">
                <div class="card h-100 bg-white border shadow-sm rounded-3">
                    <div class="card-body p-3">
                        <h6 class="fw-bold text-dark mb-3"><i class="fas fa-info-circle text-primary me-2"></i>Indicaciones</h6>
                        <p class="text-muted small mb-2">Haga clic sobre cualquier fila del cronograma de participantes para proceder a calificar.</p>
                        <p class="text-muted small mb-0">Las filas en color grisáceo representan participantes que usted ya evaluó, pero puede volver a editarlas si el sistema lo permite.</p>
                    </div>
                </div>
            </div>

            <div class="col-md-8">
                <div class="card bg-white border shadow-sm rounded-3">
                    <div class="card-body p-3">
                        <h6 class="fw-bold text-dark mb-3"><i class="fas fa-list-ol text-primary me-2"></i>Cronograma de Participantes</h6>
                        <div class="table-responsive">
                            <table class="table table-sm table-hover align-middle mb-0">
                                <thead class="table-light small text-uppercase">
                                    <tr>
                                        <th style="width: 15%;">Orden</th>
                                        <th style="width: 60%;">Participante / Categoría</th>
                                        <th class="text-end" style="width: 25%;">Estado</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php 
                                    if (!empty($res_escaleta)) {
                                        foreach ($res_escaleta as $part) {
                                            $ins_id_real = intval($part['ins_id']);
                                            $ya_evaluado = (intval($part['ya_calificado']) > 0);
                                            
                                            $badge_estado = $ya_evaluado ? '<span class="badge bg-success">Calificado</span>' : '<span class="badge bg-light text-dark border">Pendiente</span>';
                                            $atributos_fila = $ya_evaluado ? 'style="opacity: 0.65; background-color: #f8f9fa;"' : '';
                                            ?>
                                            <!-- Guardamos el ID real de inscripción en el atributo data-ins-id -->
                                            <tr <?= $atributos_fila ?> data-ins-id="<?= $ins_id_real ?>">
                                                <td class="fw-bold text-primary">#<?= str_pad($part['niv_orden_salida'], 3, '0', STR_PAD_LEFT) ?></td>
                                                <td>
                                                    <div class="fw-bold text-dark"><?= htmlspecialchars($part['ins_nombre_academia']) ?></div>
                                                    <small class="text-muted"><?= htmlspecialchars($part['niv_categoria']) ?> - <?= htmlspecialchars($part['niv_rango']) ?></small>
                                                </td>
                                                <td class="text-end"><?= $badge_estado ?></td>
                                            </tr>
                                        <?php }
                                    } else {
                                        echo '<tr><td colspan="3" class="text-center text-muted py-3">No hay participantes registrados en este evento.</td></tr>';
                                    }
                                    ?>
                                </tbody>
                            </table>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <?php
    } else {
        echo '<div class="alert alert-danger">No se encontraron registros del evento.</div>';
    }
} catch (Exception $e) {
    echo '<div class="alert alert-danger">Error: ' . htmlspecialchars($e->getMessage()) . '</div>';
}
?>