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>
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
<?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.');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class EvaluacionResponderController extends Controller
|
||||
{
|
||||
//
|
||||
}
|
||||
Reference in New Issue
Block a user