Add citas module: scheduling, calendar, blocked schedules

This commit is contained in:
2026-04-08 00:48:36 -06:00
parent e19eb205db
commit 91da97685f
21 changed files with 3406 additions and 4 deletions

View File

@@ -2,9 +2,11 @@
use App\Http\Controllers\Admin\AdminUserController;
use App\Http\Controllers\Admin\AuthController;
use App\Http\Controllers\Admin\CitaController;
use App\Http\Controllers\Admin\ConfiguracionController;
use App\Http\Controllers\Admin\DashboardController;
use App\Http\Controllers\Admin\GaleriaController;
use App\Http\Controllers\Admin\HorarioBloqueadoController;
use App\Http\Controllers\Admin\MensajeController;
use App\Http\Controllers\Admin\ProductoController;
use Illuminate\Support\Facades\Route;
@@ -76,4 +78,36 @@ Route::middleware(['admin.auth', 'security.headers'])->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');
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');
});
// API de Citas
Route::get('/citas/disponibles', [CitaController::class, 'getHorariosDisponibles'])->name('admin.citas.disponibles');
Route::get('/citas/por-fecha', [CitaController::class, 'getCitasPorFecha'])->name('admin.citas.por-fecha');
// 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');
});