Files
Sistema-Educativo-Laravel/resources/views/evaluacion/index.blade.php
T
fernando 2af36ea272 feat: módulo de evaluaciones para admin con constructor dinámico
- Modelos completos: Evaluacion, EvaluacionTipo, Pregunta, PreguntaTipo,
  PreguntaOpcion, EvaluacionSubmission, Respuesta (con $table explícito
  para nombres en español que Laravel pluraliza incorrectamente)
- Relaciones evaluaciones() añadidas a Plantel y Nivel
- EvaluacionBuilder (Livewire): constructor interactivo con preguntas
  de tipo texto libre, opción múltiple, escala 1-5/1-10 y sí/no;
  reorden con flechas, vista previa por tipo, selección de planteles
  y niveles, configuración de estado, fechas y flag de anónima
- EvaluacionController: CRUD completo + toggleStatus
- Vistas: index, create/edit (con Livewire builder), show con detalle
  de preguntas y cambio de estado
- Rutas resource /evaluacion + PATCH /evaluacion/{id}/status
- Migraciones: evaluaciones, preguntas, pregunta_opciones,
  evaluacion_submissions, respuestas, evaluacion_plantel, evaluacion_nivel
- Menú: enlace Evaluaciones en panel de Administrador

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 18:09:48 -06:00

120 lines
6.1 KiB
PHP

@extends('layouts.landing')
@section('title', 'Evaluaciones')
@section('content')
<div class="container-fluid">
@if(session('info'))
<div class="alert alert-success alert-dismissible fade show" role="alert">
{{ session('info') }}
<button type="button" class="close" data-dismiss="alert"><span>&times;</span></button>
</div>
@endif
<div class="card shadow mb-4">
<div class="card-header py-3">
<div class="d-sm-flex align-items-center justify-content-between">
<h6 class="m-0 font-weight-bold text-primary">
<i class="fas fa-clipboard-list mr-1"></i> Evaluaciones
</h6>
<a href="{{ route('evaluacion.create') }}" class="btn btn-sm btn-primary shadow-sm">
<i class="fas fa-plus fa-sm text-white-50"></i> Nueva evaluación
</a>
</div>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered table-hover">
<thead class="thead-light">
<tr>
<th>Título</th>
<th>Dirigida a</th>
<th>Estado</th>
<th class="text-center">Preguntas</th>
<th class="text-center">Respuestas</th>
<th>Vigencia</th>
<th class="text-center">Acciones</th>
</tr>
</thead>
<tbody>
@forelse($evaluaciones as $evaluacion)
<tr>
<td>
<strong>{{ $evaluacion->titulo }}</strong>
@if($evaluacion->anonima)
<span class="badge badge-secondary ml-1" title="Anónima">
<i class="fas fa-user-secret"></i>
</span>
@endif
</td>
<td>
@php $slug = $evaluacion->tipo?->slug; @endphp
@if($slug === 'docente')
<span class="badge badge-info"><i class="fas fa-chalkboard-teacher mr-1"></i>Docentes</span>
@elseif($slug === 'alumno')
<span class="badge badge-success"><i class="fas fa-user-graduate mr-1"></i>Alumnos</span>
@elseif($slug === 'administrativo')
<span class="badge badge-warning text-dark"><i class="fas fa-briefcase mr-1"></i>Administrativos</span>
@else
<span class="badge badge-light"></span>
@endif
</td>
<td>
@if($evaluacion->status === 'activa')
<span class="badge badge-success">Activa</span>
@elseif($evaluacion->status === 'borrador')
<span class="badge badge-secondary">Borrador</span>
@else
<span class="badge badge-dark">Cerrada</span>
@endif
</td>
<td class="text-center">{{ $evaluacion->preguntas_count }}</td>
<td class="text-center">{{ $evaluacion->submissions_count }}</td>
<td>
@if($evaluacion->fecha_inicio || $evaluacion->fecha_fin)
<small>
{{ $evaluacion->fecha_inicio?->format('d/m/Y') ?? '—' }}
&rarr;
{{ $evaluacion->fecha_fin?->format('d/m/Y') ?? '—' }}
</small>
@else
<small class="text-muted">Sin fecha límite</small>
@endif
</td>
<td class="text-center text-nowrap">
<a href="{{ route('evaluacion.show', $evaluacion) }}"
class="btn btn-sm btn-info" title="Ver detalle">
<i class="fas fa-eye"></i>
</a>
<a href="{{ route('evaluacion.edit', $evaluacion) }}"
class="btn btn-sm btn-primary" title="Editar">
<i class="fas fa-edit"></i>
</a>
<form action="{{ route('evaluacion.destroy', $evaluacion) }}"
method="POST" class="d-inline"
onsubmit="return confirm('¿Eliminar esta evaluación y todas sus preguntas?')">
@csrf @method('DELETE')
<button class="btn btn-sm btn-danger" title="Eliminar">
<i class="fas fa-trash"></i>
</button>
</form>
</td>
</tr>
@empty
<tr>
<td colspan="7" class="text-center text-muted py-4">
<i class="fas fa-clipboard fa-2x mb-2 d-block"></i>
No hay evaluaciones registradas.
</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
</div>
@endsection