Files
cleaning-company/routes/api.php
Владимир ae5ab2554b commit 12.01
2026-01-12 14:25:15 +00:00

57 lines
2.6 KiB
PHP

<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\ServicesController;
use App\Http\Controllers\BookingsController; // ← ДОЛЖЕН БЫТЬ!
use App\Http\Controllers\AvailabilitiesController;
use App\Http\Controllers\CategoriesController;
Route::get('/user', function (Request $request) {
return $request->user();
})->middleware('auth:sanctum');
// === ПУБЛИЧНЫЕ РОУТЫ ===
Route::post('/register', [AuthController::class, 'register']);
Route::post('/login', [AuthController::class, 'login'])->name('login');
Route::get('/services', [ServicesController::class, 'publicIndex']);
Route::get('/availability', [AvailabilitiesController::class, 'publicAvailability']);
Route::get('/categories/{id}', [CategoriesController::class, 'show']);
Route::post('/categories', [CategoriesController::class, 'create']);
// === ЗАЩИЩЁННЫЕ РОУТЫ ===
Route::middleware('auth:sanctum')->group(function () {
Route::get('/categories', [CategoriesController::class, 'index']);
Route::get('/bookings', [BookingsController::class, 'clientIndex']);
Route::post('/bookings', [BookingsController::class, 'store']);
Route::post('/bookings/{id}/cancel', [BookingsController::class, 'cancel']);
// Получить сотрудников
Route::get('/users', function (Request $request) {
$role = $request->query('role', 'employee');
return \App\Models\User::where('role', $role)->get();
});
});
// === АДМИНСКИЕ РОУТЫ ===
Route::middleware(['auth:sanctum', 'role:admin'])->prefix('admin')->group(function () {
// Услуги
Route::get('/services', [ServicesController::class, 'index']);
Route::post('/services', [ServicesController::class, 'store']);
Route::put('/services/{id}', [ServicesController::class, 'update']);
Route::delete('/services/{id}', [ServicesController::class, 'destroy']);
// Расписание
Route::get('/availabilities', [AvailabilitiesController::class, 'index']);
Route::post('/availabilities', [AvailabilitiesController::class, 'store']);
Route::post('/availabilities/bulk', [AvailabilitiesController::class, 'bulkStore']);
Route::delete('/availabilities/{id}', [AvailabilitiesController::class, 'destroy']);
// Бронирования админа ← ЭТОТ БЛОК ОБЯЗАТЕЛЕН!
Route::get('/bookings', [BookingsController::class, 'adminIndex']);
Route::post('/bookings/{id}/assign', [BookingsController::class, 'assignEmployee']);
Route::post('/bookings/{id}/cancel', [BookingsController::class, 'adminCancel']);
});