<?php
declare(strict_types=1);

require_once __DIR__ . '/includes/bootstrap.php';

$ctx = omr_context('ver');
$conn = $ctx['conn'];
$idConcurso = (int)$ctx['id_concurso'];
$idGrupoFijo = (int)$ctx['id_grupo_fijo'];
$idSalonFijo = (int)$ctx['id_salon_fijo'];

$estado = strtoupper(trim((string)($_GET['estado'] ?? 'TODOS')));
if (!in_array($estado, ['TODOS', 'PROCESADO', 'OBSERVADO', 'ERROR'], true)) {
    $estado = 'TODOS';
}

$q = trim((string)($_GET['q'] ?? ''));

$sql = "
    SELECT
        o.*,
        p.apellidos_nombres,
        p.documento,
        g.nombre AS grupo_nombre,
        s.nombre_salon
    FROM concurso_omr_procesamientos o
    LEFT JOIN concurso_participantes p ON p.id_participante = o.id_participante
    LEFT JOIN concurso_grupos g ON g.id_grupo = o.id_grupo
    LEFT JOIN concurso_salones s ON s.id_salon = o.id_salon
    WHERE o.id_concurso = ?
";

$types = 'i';
$params = [$idConcurso];

if ($idGrupoFijo > 0) {
    $sql .= " AND o.id_grupo = ? ";
    $types .= 'i';
    $params[] = $idGrupoFijo;
}

if ($idSalonFijo > 0) {
    $sql .= " AND o.id_salon = ? ";
    $types .= 'i';
    $params[] = $idSalonFijo;
}

if ($estado !== 'TODOS') {
    $sql .= " AND o.estado = ? ";
    $types .= 's';
    $params[] = $estado;
}

if ($q !== '') {
    $like = '%' . $q . '%';
    $sql .= " AND (o.dni_leido LIKE ? OR p.apellidos_nombres LIKE ? OR o.archivo_original LIKE ?) ";
    $types .= 'sss';
    $params[] = $like;
    $params[] = $like;
    $params[] = $like;
}

$sql .= " ORDER BY o.created_at DESC, o.id_procesamiento DESC LIMIT 300";

$rows = [];
$stmt = mysqli_prepare($conn, $sql);
if ($stmt) {
    $refs = [];
    $refs[] = &$types;
    foreach ($params as $k => $v) {
        $params[$k] = $v;
        $refs[] = &$params[$k];
    }
    call_user_func_array([$stmt, 'bind_param'], $refs);
    mysqli_stmt_execute($stmt);
    $res = mysqli_stmt_get_result($stmt);

    while ($row = mysqli_fetch_assoc($res)) {
        $rows[] = $row;
    }

    mysqli_stmt_close($stmt);
}

omr_page_header('Historial OMR', $ctx);
?>

<div class="card">
    <form method="get" class="row">
        <input type="hidden" name="id_concurso" value="<?php echo $idConcurso; ?>">
        <div class="field">
            <label>Estado</label>
            <select name="estado">
                <?php foreach (['TODOS', 'PROCESADO', 'OBSERVADO', 'ERROR'] as $e): ?>
                    <option value="<?php echo $e; ?>" <?php echo $estado === $e ? 'selected' : ''; ?>><?php echo $e; ?></option>
                <?php endforeach; ?>
            </select>
        </div>
        <div class="field">
            <label>Buscar</label>
            <input type="text" name="q" value="<?php echo omr_h($q); ?>" placeholder="DNI, nombre o archivo">
        </div>
        <div>
            <button class="btn" type="submit">Filtrar</button>
            <a class="btn light" href="procesar.php?id_concurso=<?php echo $idConcurso; ?>">Procesar</a>
        </div>
    </form>
</div>

<div class="card">
    <h2 style="margin-top:0;">Ultimas lecturas</h2>
    <div style="overflow:auto;">
        <table>
            <thead>
                <tr>
                    <th>Fecha</th>
                    <th>Estado</th>
                    <th>DNI / participante</th>
                    <th>Grado / salon</th>
                    <th>Tipo</th>
                    <th>Resultado</th>
                    <th>Archivo</th>
                    <th>Observacion</th>
                </tr>
            </thead>
            <tbody>
                <?php if (empty($rows)): ?>
                    <tr><td colspan="8">No hay lecturas OMR para este filtro.</td></tr>
                <?php endif; ?>

                <?php foreach ($rows as $row): ?>
                    <?php
                    $estadoRow = (string)$row['estado'];
                    $badge = $estadoRow === 'PROCESADO' ? 'b-ok' : ($estadoRow === 'OBSERVADO' ? 'b-warn' : 'b-err');
                    ?>
                    <tr>
                        <td><?php echo omr_h($row['created_at']); ?></td>
                        <td>
                            <span class="badge <?php echo $badge; ?>"><?php echo omr_h($estadoRow); ?></span>
                            <?php if ((int)$row['aplicado_resultado'] === 1): ?><br><span class="badge b-blue">Ranking</span><?php endif; ?>
                        </td>
                        <td>
                            <strong><?php echo omr_h($row['dni_leido'] ?: '-'); ?></strong><br>
                            <span class="muted small"><?php echo omr_h($row['apellidos_nombres'] ?: 'No vinculado'); ?></span>
                        </td>
                        <td>
                            <?php echo omr_h($row['grupo_nombre'] ?: '-'); ?><br>
                            <span class="muted small"><?php echo omr_h($row['nombre_salon'] ?: 'Sin salon'); ?></span>
                        </td>
                        <td><?php echo omr_h($row['tipo_leido'] ?: '-'); ?></td>
                        <td>
                            C: <?php echo (int)$row['correctas']; ?> |
                            I: <?php echo (int)$row['incorrectas']; ?> |
                            B: <?php echo (int)$row['blanco']; ?> |
                            D: <?php echo (int)$row['dobles']; ?><br>
                            <strong><?php echo number_format((float)$row['puntaje'], 2, '.', ''); ?></strong>
                        </td>
                        <td>
                            <?php echo omr_h($row['archivo_original']); ?>
                            <?php if (!empty($row['pagina'])): ?><br><span class="muted small">Pag. <?php echo (int)$row['pagina']; ?></span><?php endif; ?>
                        </td>
                        <td><?php echo omr_h($row['observacion']); ?></td>
                    </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
    </div>
</div>

<?php omr_page_footer(); ?>
