2af36ea272
- 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>
65 lines
1.6 KiB
PHP
65 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Evaluacion;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Controller;
|
|
|
|
class EvaluacionController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$evaluaciones = Evaluacion::with('tipo')
|
|
->withCount(['preguntas', 'submissions'])
|
|
->latest()
|
|
->get();
|
|
|
|
return view('evaluacion.index', compact('evaluaciones'));
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
return view('evaluacion.create');
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
// Manejado por Livewire EvaluacionBuilder
|
|
}
|
|
|
|
public function show(Evaluacion $evaluacion)
|
|
{
|
|
$evaluacion->load(['tipo', 'preguntas.tipo', 'preguntas.opciones', 'planteles', 'niveles']);
|
|
|
|
return view('evaluacion.show', compact('evaluacion'));
|
|
}
|
|
|
|
public function edit(Evaluacion $evaluacion)
|
|
{
|
|
$evaluacion->load(['preguntas.opciones', 'planteles', 'niveles']);
|
|
|
|
return view('evaluacion.create', compact('evaluacion'));
|
|
}
|
|
|
|
public function update(Request $request, Evaluacion $evaluacion)
|
|
{
|
|
// Manejado por Livewire EvaluacionBuilder
|
|
}
|
|
|
|
public function destroy(Evaluacion $evaluacion)
|
|
{
|
|
$evaluacion->delete();
|
|
|
|
return redirect()->route('evaluacion.index')->with('info', 'Evaluación eliminada.');
|
|
}
|
|
|
|
public function toggleStatus(Request $request, Evaluacion $evaluacion)
|
|
{
|
|
$request->validate(['status' => 'required|in:borrador,activa,cerrada']);
|
|
$evaluacion->update(['status' => $request->status]);
|
|
|
|
return back()->with('info', 'Estado actualizado.');
|
|
}
|
|
}
|