You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

210 lines
10 KiB
PHP

<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\AcademiaController;
use App\Http\Controllers\VinculacionController;
use App\Http\Controllers\Administracion\administradorController;
use App\Http\Controllers\Administracion\AreaController;
use App\Http\Controllers\Administracion\CursoController;
use App\Http\Controllers\Administracion\PreguntaController;
use App\Http\Controllers\Administracion\ProcesoController;
use App\Http\Controllers\PostulanteAuthController;
use App\Http\Controllers\ExamenController;
use App\Http\Controllers\Administracion\ReglaAreaProcesoController;
use App\Http\Controllers\Administracion\ProcesoAdmisionController;
use App\Http\Controllers\Administracion\ProcesoAdmisionDetalleController;
use App\Http\Controllers\Administracion\PostulanteController;
use App\Http\Controllers\Administracion\CalificacionController;
use App\Http\Controllers\Administracion\NoticiaController;
use App\Http\Controllers\Administracion\ProcesoAdmisionResultadoArchivoController;
use App\Http\Controllers\WebController;
Route::get('/user', function (Request $request) {
return $request->user();
})->middleware('auth:sanctum');
Route::post('/register', [AuthController::class, 'register']);
Route::post('/login', [AuthController::class, 'login']);
Route::middleware('auth:sanctum')->group(function () {
Route::post('/logout', [AuthController::class, 'logout']);
Route::get('/me', [AuthController::class, 'me']);
Route::post('/refresh-token', [AuthController::class, 'refresh']);
});
Route::middleware(['auth:sanctum'])->prefix('procesos')->group(function () {
Route::get('/', [ProcesoController::class, 'index']);
Route::post('/', [ProcesoController::class, 'store']);
Route::get('{id}', [ProcesoController::class, 'show']);
Route::put('{id}', [ProcesoController::class, 'update']);
Route::delete('{id}', [ProcesoController::class, 'destroy']);
Route::patch('{id}/toggle-activo', [ProcesoController::class, 'toggleActivo']);
});
Route::middleware(['auth:sanctum'])->prefix('admin')->group(function () {
Route::get('/areas', [AreaController::class, 'index']);
Route::post('/areas', [AreaController::class, 'store']);
Route::get('/areas/{id}', [AreaController::class, 'show']);
Route::put('/areas/{id}', [AreaController::class, 'update']);
Route::delete('/areas/{id}', [AreaController::class, 'destroy']);
Route::patch('/areas/{id}/toggle', [AreaController::class, 'toggleEstado']);
Route::post('/areas/{area}/vincular-cursos', [AreaController::class, 'vincularCursosArea']);
Route::post('/areas/{area}/desvincular-curso', [AreaController::class, 'desvincularCursoArea']);
Route::get('/areas/{area}/cursos-disponibles', [AreaController::class, 'getCursosPorArea']);
Route::post('areas/{area}/vincular-procesos', [AreaController::class, 'vincularProcesosArea']);
Route::get('areas/{area}/procesos-disponibles', [AreaController::class, 'getProcesosPorArea'] );
Route::post('areas/{area}/desvincular-procesos', [AreaController::class, 'desvincularProcesoArea'] );
});
Route::middleware(['auth:sanctum'])->prefix('admin')->group(function () {
Route::get('/noticias', [NoticiaController::class, 'index']);
Route::get('/noticias/{noticia}', [NoticiaController::class, 'show']);
Route::post('/noticias', [NoticiaController::class, 'store']);
Route::put('/noticias/{noticia}', [NoticiaController::class, 'update']);
Route::delete('/noticias/{noticia}', [NoticiaController::class, 'destroy']);
});
Route::middleware(['auth:sanctum'])->prefix('admin')->group(function () {
Route::get('/cursos', [CursoController::class, 'index']);
Route::post('/cursos', [CursoController::class, 'store']);
Route::get('/cursos/{id}', [CursoController::class, 'show']);
Route::put('/cursos/{id}', [CursoController::class, 'update']);
Route::delete('/cursos/{id}', [CursoController::class, 'destroy']);
Route::patch('/cursos/{id}/toggle', [CursoController::class, 'toggleEstado']);
});
Route::middleware(['auth:sanctum'])->prefix('admin')->group(function () {
Route::get('/postulantes', [PostulanteController::class, 'obtenerPostulantes']);
Route::put('/postulantes/{id}', [PostulanteController::class, 'actualizarPostulante']);
});
Route::middleware(['auth:sanctum'])->prefix('admin')->group(function () {
Route::get('cursos/{cursoId}/preguntas', [PreguntaController::class, 'getPreguntasCurso']);
Route::post('preguntas', [PreguntaController::class, 'agregarPreguntaCurso']);
Route::get('preguntas/{id}', [PreguntaController::class, 'getPregunta'] );
Route::put('preguntas/{id}', [PreguntaController::class, 'actualizarPregunta']);
Route::delete('preguntas/{id}', [PreguntaController::class, 'eliminarPregunta'] );
});
Route::middleware('auth:sanctum')->group(function () {
Route::get('/calificaciones', [CalificacionController::class, 'index']);
Route::post('/calificaciones', [CalificacionController::class, 'store']);
Route::get('/calificaciones/{id}', [CalificacionController::class, 'show']);
Route::put('/calificaciones/{id}', [CalificacionController::class, 'update']);
Route::delete('/calificaciones/{id}', [CalificacionController::class, 'destroy']);
});
Route::prefix('postulante')->group(function () {
Route::post('/register', [PostulanteAuthController::class, 'register']);
Route::post('/login', [PostulanteAuthController::class, 'login']);
Route::middleware('auth:sanctum')->group(function () {
Route::post('/logout', [PostulanteAuthController::class, 'logout']);
Route::get('/me', [PostulanteAuthController::class, 'me']);
Route::get('/pagos', [PostulanteAuthController::class, 'obtenerPagosPostulante']);
Route::get('/postulante/mis-procesos',[PostulanteAuthController::class, 'misProcesos']);
Route::get('/mis-procesos', [PostulanteAuthController::class, 'misProcesos']);
});
});
// Route::middleware('auth:sanctum')->group(function () {
// Route::get('/procesos', [ExamenController::class, 'procesoexamen']);
// Route::get('/areas', [ExamenController::class, 'areas']);
// Route::post('/examen', [ExamenController::class, 'store']);
// Route::get('/examen/actual', [ExamenController::class, 'miExamenActual']);
// });
Route::middleware(['auth:sanctum'])->prefix('area-proceso')->group(function () {
Route::get('areasprocesos', [ReglaAreaProcesoController::class, 'areasProcesos']);
Route::prefix('{areaProcesoId}/reglas')->group(function () {
Route::get('/', [ReglaAreaProcesoController::class, 'index']);
Route::post('/', [ReglaAreaProcesoController::class, 'store']);
Route::post('/multiple', [ReglaAreaProcesoController::class, 'storeMultiple']);
});
});
Route::middleware(['auth:sanctum'])->prefix('reglas')->group(function () {
Route::put('/{reglaId}', [ReglaAreaProcesoController::class, 'update']);
Route::delete('/{reglaId}', [ReglaAreaProcesoController::class, 'destroy']);
});
Route::middleware(['auth:sanctum'])->group(function () {
Route::get('/examen/procesos', [ExamenController::class, 'procesoexamen']);
Route::get('/examen/areas', [ExamenController::class, 'areas']);
Route::get('/examen/actual', [ExamenController::class, 'miExamenActual']);
Route::post('/examen/crear', [ExamenController::class, 'crearExamen']);
Route::post('/examen/{examen}/generar-preguntas', [ExamenController::class, 'generarPreguntas']);
Route::get('/examen/{examen}/preguntas', [ExamenController::class, 'obtenerPreguntas']);
Route::post('/examen/iniciar', [ExamenController::class, 'iniciarExamen']);
Route::post('/examen/pregunta/{pregunta}/responder', [ExamenController::class, 'responderPregunta']);
Route::post('/examen/{examen}/finalizar', [ExamenController::class, 'finalizarExamen']);
Route::post('/examen/{examenId}/calificar', [ExamenController::class, 'calificarExamen']);
});
Route::middleware('auth:sanctum')->prefix('admin')->group(function () {
Route::prefix('procesos-admision')->group(function () {
Route::get('/', [ProcesoAdmisionController::class, 'index'])->name('procesos-admision.index');
Route::post('/', [ProcesoAdmisionController::class, 'store'])->name('procesos-admision.store');
Route::get('/{id}', [ProcesoAdmisionController::class, 'show'])->name('procesos-admision.show');
Route::match(['put','patch'], '/{id}', [ProcesoAdmisionController::class, 'update'])->name('procesos-admision.update');
Route::delete('/{id}', [ProcesoAdmisionController::class, 'destroy'])->name('procesos-admision.destroy');
Route::get('/{procesoId}/detalles', [ProcesoAdmisionDetalleController::class, 'index'])->name('procesos-admision.detalles.index');
Route::post('/{procesoId}/detalles', [ProcesoAdmisionDetalleController::class, 'store'])->name('procesos-admision.detalles.store');
});
Route::prefix('detalles-admision')->group(function () {
Route::get('/{id}', [ProcesoAdmisionDetalleController::class, 'show'])->name('detalles-admision.show');
Route::match(['put','patch'], '/{id}', [ProcesoAdmisionDetalleController::class, 'update'])->name('detalles-admision.update');
Route::delete('/{id}', [ProcesoAdmisionDetalleController::class, 'destroy'])->name('detalles-admision.destroy');
});
});
Route::middleware('auth:sanctum')->group(function () {
Route::get('/procesos-disponibles-preinscripcion', [WebController::class, 'obtenerProcesosDisponiblesPreinscripcion']);
});
Route::get('/procesos-admision', [WebController::class, 'GetProcesoAdmision']);
Route::get('/noticias', [NoticiaController::class, 'index']);
Route::get('/noticias/{noticia:slug}', [NoticiaController::class, 'showPublic']);
// Ruta pública: archivos de resultado del proceso vigente
Route::get('/proceso-resultado/{procesoId}/archivos', [ProcesoAdmisionResultadoArchivoController::class, 'index']);
// Rutas admin: gestión de archivos de resultado
Route::middleware('auth:sanctum')->prefix('admin')->group(function () {
Route::get('/proceso-resultado/{procesoId}/archivos', [ProcesoAdmisionResultadoArchivoController::class, 'index']);
Route::post('/proceso-resultado/{procesoId}/archivos', [ProcesoAdmisionResultadoArchivoController::class, 'store']);
Route::delete('/proceso-resultado/archivos/{id}', [ProcesoAdmisionResultadoArchivoController::class, 'destroy']);
});