@extends('public.layouts.app') @section('title', 'Resultados ' . $concurso->nombre . ($concurso->anio ? ' ' . $concurso->anio : '')) @section('styles') @endsection @section('content') @php $secciones = $participantes->pluck('seccion')->filter()->unique()->sort()->values(); $total = $participantes->count(); $totalClasif = $participantes->where('clasificado', true)->count(); $maxNota = $participantes->max('nota_calculada') ?? 0; $puntajeMax = $concurso->puntajeMaximo(); @endphp {{-- ===== HERO ===== --}}
{{ $concurso->sigla ?? 'CONCURSO' }} @if($concurso->patrocinador) — {{ $concurso->patrocinador }} @endif
@if($concurso->etapa)
{{ $concurso->etapa }}
@endif

{{ $concurso->sigla ?? $concurso->nombre }} @if($concurso->patrocinador) {{ $concurso->patrocinador }} @endif @if($concurso->anio) {{ $concurso->anio }} @endif @if($concurso->grado || $concurso->nivel_educativo)
{{ $concurso->grado }} {{ $concurso->nivel_educativo }} @if($concurso->categoria) — Categoría {{ $concurso->categoria }} @endif @endif

{{ $concurso->nombre }} @if($concurso->etapa)  ·  {{ $concurso->etapa }} @endif @if($concurso->nivel)  ·  {{ $concurso->nivel }} @endif @if($concurso->categoria)  ·  Categoría {{ $concurso->categoria }} @endif  ·  Resultados oficiales

{{ $total }}
Participantes
{{ $totalClasif }}
Clasificados
{{ $concurso->num_preguntas }}
Preguntas
{{ $puntajeMax }}
Puntaje Máx.
{{ $concurso->puntos_por_pregunta }}
Pts por Preg.
@if($concurso->etapa)
{{ $concurso->etapa }}
{{ $concurso->nivel }}
@endif
{{-- ===== CONTENIDO PRINCIPAL ===== --}}
{{-- INFO CARDS --}}
{{ $total }}
Total Participantes
{{ $totalClasif }}
Clasificados Sig. Etapa
{{ $maxNota }}
Puntaje Máximo Logrado
@if($secciones->count() > 1)
{{ $secciones->map(fn($s) => $concurso->grado . $s)->join(' / ') }}
Secciones Participantes
@endif
{{-- CLASIFICADOS --}} @if($totalClasif > 0)
Estudiantes Clasificados a la Siguiente Etapa
@php $clasifGral = $participantes->where('clasificado_general', true); $clasifMujer = $participantes->where('clasificado_mujer', true); $clasifVaron = $participantes->where('clasificado_varon', true); @endphp {{-- General --}} @if($clasifGral->count() > 0)
⭐ Clasificados (General)
@foreach($clasifGral->values() as $rank => $p)
{{ $rank + 1 }}
{{ strtoupper($p->apellidos) }} {{ $p->nombres }} {{ $p->grado }}{{ $p->seccion }} @if($p->tiempo) {{ substr($p->tiempo,0,5) }}@endif {{ $p->nota_calculada }} pts
@endforeach
@endif {{-- Por género --}} @if($clasifMujer->count() > 0)
♀ Mujeres Clasificadas
@foreach($clasifMujer->values() as $rank => $p)
{{ $rank + 1 }}
{{ strtoupper($p->apellidos) }} {{ $p->nombres }} {{ $p->grado }}{{ $p->seccion }} @if($p->tiempo) {{ substr($p->tiempo,0,5) }}@endif {{ $p->nota_calculada }} pts
@endforeach
@endif @if($clasifVaron->count() > 0)
♂ Varones Clasificados
@foreach($clasifVaron->values() as $rank => $p)
{{ $rank + 1 }}
{{ strtoupper($p->apellidos) }} {{ $p->nombres }} {{ $p->grado }}{{ $p->seccion }} @if($p->tiempo) {{ substr($p->tiempo,0,5) }}@endif {{ $p->nota_calculada }} pts
@endforeach
@endif
@endif {{-- CONTROLES --}}
Filtrar: @foreach($secciones as $secc) @endforeach
{{-- TABLA PRINCIPAL --}}
{{-- HEADER CON RESPUESTAS CORRECTAS --}}
Respuestas Correctas Oficiales: @foreach($concurso->preguntas as $preg)   P{{ $preg->numero }}: {{ $preg->respuesta_correcta }} @if(!$loop->last)  |  @endif @endforeach Cada correcta = {{ $concurso->puntos_por_pregunta }} pts  |  Máximo: {{ $puntajeMax }} pts
@foreach($concurso->preguntas as $preg) @endforeach @foreach($concurso->preguntas as $preg) @endforeach @foreach($participantes as $rank => $p) @php $esClasif = $p->clasificado ?? false; $respIndex = $p->respuestas->keyBy('pregunta_numero'); $nota = $p->nota_calculada; $pct = $puntajeMax > 0 ? ($nota / $puntajeMax) * 100 : 0; $notaClass = $pct >= 80 ? 'nota-high' : ($pct >= 50 ? 'nota-mid' : ($pct >= 20 ? 'nota-low' : 'nota-zero')); $rankClass = $rank === 0 ? 'rank-1' : ($rank === 1 ? 'rank-2' : ($rank === 2 ? 'rank-3' : 'rank-other')); @endphp {{-- Respuestas por pregunta --}} @foreach($concurso->preguntas as $preg) @php $r = $respIndex->get($preg->numero); $alumno = $r ? trim((string)$r->respuesta_alumno) : null; $corr = trim((string)$preg->respuesta_correcta); $ok = $alumno !== null && $alumno !== '' && $alumno === $corr; @endphp @endforeach {{-- NOTA --}} {{-- TIEMPO --}} @endforeach
Estudiante SECCIÓN Respuesta del alumno (✓ = correcto · ✗ = incorrecto) Resultado
Resp. correcta →{{ $preg->respuesta_correcta }}/ {{ $puntajeMax }} pts
Apellidos y Nombres GRADOP{{ $preg->numero }}NOTA FINAL Tiempo
{{ $rank + 1 }} {{ strtoupper($p->apellidos) }} {{ $p->nombres }} @if($esClasif) @endif {{ $p->grado }}{{ $p->seccion }} @if($alumno === null || $alumno === '') @elseif($ok) {{ $alumno }} @else {{ $alumno }} @endif {{ $nota }} @if($p->tiempo) {{ substr($p->tiempo, 0, 5) }} @else — @endif
{{-- Fecha publicación --}} @if($concurso->fecha_concurso)
Fecha del concurso: {{ $concurso->fecha_concurso->format('d/m/Y') }}
@endif
@endsection @section('scripts') @endsection