@extends('admin.layouts.app') @section('title', 'Participantes — ' . $concurso->nombre) @section('styles') @endsection @section('content') {{-- ═══════ HERO ═══════ --}}
{{ $concurso->sigla ?? 'Concurso' }} · {{ $concurso->anio }}

Participantes

{{ $concurso->nombre }}

@if($concurso->estado === 'borrador') {{-- Concurso en borrador: mostrar botón Publicar --}} Publicar Resultados @else {{-- Ya publicado: Ver resultado + botón para actualizar enlace --}} Ver Público Actualizar Enlace @endif Agregar Participante
{{-- ═══════ STATS ═══════ --}} @php $totalP = $participantes->count(); $clasif = $participantes->where('clasificado', true)->count(); $maxNota = $participantes->max('nota_calculada') ?? 0; $notaMax = $concurso->puntajeMaximo(); $promedio = $totalP > 0 ? round($participantes->avg('nota_calculada'), 1) : 0; @endphp
{{ $totalP }}
Participantes
{{ $clasif }}
Clasificados
{{ $maxNota }}
Puntaje más alto
{{ $notaMax }}
Puntaje máximo
{{ $promedio }}
Promedio
{{-- ═══════ CONTROLES ═══════ --}}
{{-- ═══════ TABLA ═══════ --}}
@for($i = 1; $i <= $concurso->num_preguntas; $i++) @endfor @forelse($participantes as $rank => $p) @php $respIndexed = $p->respuestas->keyBy('pregunta_numero'); $preguntasMap = $concurso->preguntas->keyBy('numero'); $esClas = $p->clasificado ?? false; $nota = $p->nota_calculada; $pct = $notaMax > 0 ? ($nota / $notaMax) * 100 : 0; $notaColor = $pct >= 80 ? '#1a237e' : ($pct >= 50 ? '#0288d1' : ($pct >= 30 ? '#00897b' : '#64748b')); @endphp {{-- Ranking --}} {{-- Nombre --}} {{-- Sección --}} {{-- Género --}} {{-- Respuestas --}} @for($i = 1; $i <= $concurso->num_preguntas; $i++) @php $resp = $respIndexed->get($i); $corrPrg = $preguntasMap->get($i); $alumVal = $resp ? trim((string)$resp->respuesta_alumno) : null; $corrVal = $corrPrg ? trim((string)$corrPrg->respuesta_correcta) : null; $esCorr = ($alumVal !== null && $alumVal !== '' && $alumVal === $corrVal); @endphp @endfor {{-- Nota --}} {{-- Tiempo --}} {{-- Observación --}} {{-- Acciones --}} @empty @endforelse
# Apellidos y Nombres Secc. Gén. P{{ $i }}
{{ $concurso->preguntas->firstWhere('numero', $i)?->respuesta_correcta ?? '?' }}
NOTA Tiempo Observación Acciones
@if($rank === 0) 1 @elseif($rank === 1) 2 @elseif($rank === 2) 3 @else {{ $rank + 1 }} @endif {{ strtoupper($p->apellidos) }} {{ $p->nombres }}
@if($esClas) Clas. @endif @if($p->clasificado_mujer ?? false) ♀ Clas. @endif @if($p->clasificado_varon ?? false) ♂ Clas. @endif @if($p->clasificado_general ?? false) Gral. @endif
{{ $p->grado }}{{ $p->seccion }} @if($p->genero === 'F') @elseif($p->genero === 'M') @else @endif @if($alumVal === null || $alumVal === '') @elseif($esCorr) {{ $alumVal }} ✓ @else {{ $alumVal }} ✗ @endif {{ $nota }}
/ {{ $notaMax }}
@if($p->tiempo) {{ substr($p->tiempo,0,5) }} @else @endif {{ $p->observacion ?? '—' }}
@csrf @method('DELETE')
Sin participantes aún
Agregar el primero
{{-- ══════════════════════ MODAL CARGA MASIVA ══════════════════════ --}} @endsection @section('scripts') @endsection