group(function () { Route::get('/login', [AuthController::class, 'showLogin'])->name('admin.login'); Route::post('/login', [AuthController::class, 'login']); }); // Rutas protegidas Route::middleware(['admin.auth', 'security.headers'])->group(function () { // Dashboard Route::get('/', [DashboardController::class, 'index'])->name('admin.dashboard'); // Cerrar sesión Route::post('/logout', [AuthController::class, 'logout'])->name('admin.logout'); // Galería Route::prefix('galeria')->name('admin.galeria.')->group(function () { Route::get('/', [GaleriaController::class, 'index'])->name('index'); Route::get('/create', [GaleriaController::class, 'create'])->name('create'); Route::post('/', [GaleriaController::class, 'store'])->name('store'); Route::get('/{galeria}/edit', [GaleriaController::class, 'edit'])->name('edit'); Route::put('/{galeria}', [GaleriaController::class, 'update'])->name('update'); Route::delete('/{galeria}', [GaleriaController::class, 'destroy'])->name('destroy'); }); // Productos Route::prefix('productos')->name('admin.productos.')->group(function () { Route::get('/', [ProductoController::class, 'index'])->name('index'); Route::get('/create', [ProductoController::class, 'create'])->name('create'); Route::post('/', [ProductoController::class, 'store'])->name('store'); Route::get('/{producto}/edit', [ProductoController::class, 'edit'])->name('edit'); Route::put('/{producto}', [ProductoController::class, 'update'])->name('update'); Route::delete('/{producto}', [ProductoController::class, 'destroy'])->name('destroy'); }); // Mensajes Route::prefix('mensajes')->name('admin.mensajes.')->group(function () { Route::get('/', [MensajeController::class, 'index'])->name('index'); Route::get('/{mensaje}', [MensajeController::class, 'show'])->name('show'); Route::patch('/{mensaje}/leido', [MensajeController::class, 'markRead'])->name('leido'); Route::post('/leer-todos', [MensajeController::class, 'markAllRead'])->name('leer-todos'); Route::delete('/{mensaje}', [MensajeController::class, 'destroy'])->name('destroy'); }); // Usuarios Admin (solo super_admin) Route::prefix('usuarios')->name('admin.users.')->middleware('super_admin')->group(function () { Route::get('/', [AdminUserController::class, 'index'])->name('index'); Route::get('/create', [AdminUserController::class, 'create'])->name('create'); Route::post('/', [AdminUserController::class, 'store'])->name('store'); Route::get('/{admin_user}/edit', [AdminUserController::class, 'edit'])->name('edit'); Route::put('/{admin_user}', [AdminUserController::class, 'update'])->name('update'); Route::delete('/{admin_user}', [AdminUserController::class, 'destroy'])->name('destroy'); }); // Configuración Route::prefix('configuracion')->name('admin.configuracion.')->group(function () { Route::get('/', [ConfiguracionController::class, 'index'])->name('index'); Route::put('/', [ConfiguracionController::class, 'update'])->name('update'); }); // Citas Route::prefix('citas')->name('admin.citas.')->group(function () { Route::get('/', [CitaController::class, 'index'])->name('index'); Route::get('/create', [CitaController::class, 'create'])->name('create'); Route::get('/create/{mensaje_id}', [CitaController::class, 'createFromMensaje'])->name('create-from-mensaje'); Route::post('/', [CitaController::class, 'store'])->name('store'); Route::get('/calendario', [CitaController::class, 'calendario'])->name('calendario'); // API endpoints (antes de la ruta dinamica) Route::get('/disponibles', [CitaController::class, 'getHorariosDisponibles'])->name('disponibles'); Route::get('/por-fecha', [CitaController::class, 'getCitasPorFecha'])->name('por-fecha'); // Rutas dinamicas al final Route::get('/{cita}', [CitaController::class, 'show'])->name('show'); Route::get('/{cita}/edit', [CitaController::class, 'edit'])->name('edit'); Route::put('/{cita}', [CitaController::class, 'update'])->name('update'); Route::delete('/{cita}', [CitaController::class, 'destroy'])->name('destroy'); Route::patch('/{cita}/estado', [CitaController::class, 'cambiarEstado'])->name('estado'); Route::get('/{cita}/ver', [CitaController::class, 'porFecha'])->name('ver'); }); // Horarios Bloqueados Route::prefix('horarios')->name('admin.horarios.')->group(function () { Route::get('/', [HorarioBloqueadoController::class, 'index'])->name('index'); Route::get('/create', [HorarioBloqueadoController::class, 'create'])->name('create'); Route::post('/', [HorarioBloqueadoController::class, 'store'])->name('store'); Route::get('/{bloqueado}/edit', [HorarioBloqueadoController::class, 'edit'])->name('edit'); Route::put('/{bloqueado}', [HorarioBloqueadoController::class, 'update'])->name('update'); Route::delete('/{bloqueado}', [HorarioBloqueadoController::class, 'destroy'])->name('destroy'); }); // API de Horarios Route::get('/horarios/por-fecha', [HorarioBloqueadoController::class, 'getHorariosPorFecha'])->name('admin.horarios.por-fecha'); Route::get('/horarios/verificar', [HorarioBloqueadoController::class, 'verificar'])->name('admin.horarios.verificar'); });