+ availability

This commit is contained in:
2026-01-26 09:06:06 +00:00
parent 18aad4749f
commit a448fce756
34 changed files with 1089 additions and 578 deletions

View File

@@ -17,8 +17,8 @@ Route::middleware('auth:sanctum')->group(function () {
Route::delete('/hotels/{id}', [HotelController::class, 'destroy']);
});
Route::middleware('auth:sanctum')->group(function () {
Route::post('/bookings/{id}/invoice', [InvoiceController::class, 'generate']);
Route::get('/hotels/{hotel}/room-types', function ($hotelId) {
return \App\Models\RoomType::where('hotel_id', $hotelId)->get(['id', 'name']);
});
Route::post('/admin/login', [AdminAuthController::class, 'login']);
@@ -34,11 +34,6 @@ Route::middleware('auth:sanctum')->group(function () {
Route::get('/user', function (\Illuminate\Http\Request $request) {
return $request->user();
});
Route::get('/orders', [OrdersController::class, 'index']);
Route::post('/orders', [OrdersController::class, 'create']);
Route::get('/room_types', [RoomTypesController::class, 'index']);
});
Route::middleware('auth:sanctum')->group(function () {
@@ -53,6 +48,10 @@ Route::middleware('auth:sanctum')->group(function () {
Route::post('/room-types/{id}/availability/bulk', [RoomAvailabilityController::class, 'bulkUpdate']);
});
Route::middleware('auth:sanctum')->group(function () {
Route::post('/bookings/{id}/invoice', [InvoiceController::class, 'generate']);
});
Route::middleware('auth:sanctum')->group(function () {
Route::post('/bookings', [BookingController::class, 'store']);
});

View File

@@ -4,34 +4,33 @@ use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Admin\HotelController;
use App\Http\Controllers\Admin\AuthController;
Route::get('/admin/login', [AuthController::class, 'showLoginForm'])->name('admin.login.form');
Route::post('/admin/login', [AuthController::class, 'login'])->name('admin.login');
// Вход
Route::get('/admin/login', [\App\Http\Controllers\Admin\AuthController::class, 'showLoginForm'])->name('admin.login.form');
Route::post('/admin/login', [\App\Http\Controllers\Admin\AuthController::class, 'login'])->name('admin.login');
// Админка (требует авторизации)
Route::middleware('auth')->prefix('admin')->group(function () {
Route::get('/hotels', [HotelController::class, 'index'])->name('admin.hotels.index');
Route::get('/hotels/create', [HotelController::class, 'create'])->name('admin.hotels.create');
Route::post('/hotels', [HotelController::class, 'store'])->name('admin.hotels.store');
Route::get('/hotels/{hotel}/edit', [HotelController::class, 'edit'])->name('admin.hotels.edit');
Route::put('/hotels/{hotel}', [HotelController::class, 'update'])->name('admin.hotels.update');
Route::delete('/hotels/{hotel}', [HotelController::class, 'destroy'])->name('admin.hotels.destroy');
// Отели
Route::get('/hotels', [\App\Http\Controllers\Admin\HotelController::class, 'index'])->name('admin.hotels.index');
Route::get('/hotels/create', [\App\Http\Controllers\Admin\HotelController::class, 'create'])->name('admin.hotels.create');
Route::post('/hotels', [\App\Http\Controllers\Admin\HotelController::class, 'store'])->name('admin.hotels.store');
Route::get('/hotels/{hotel}/edit', [\App\Http\Controllers\Admin\HotelController::class, 'edit'])->name('admin.hotels.edit');
Route::put('/hotels/{hotel}', [\App\Http\Controllers\Admin\HotelController::class, 'update'])->name('admin.hotels.update');
Route::delete('/hotels/{hotel}', [\App\Http\Controllers\Admin\HotelController::class, 'destroy'])->name('admin.hotels.destroy');
// Шахматка для отеля
Route::get('/hotels/{hotelId}/calendar', [\App\Http\Controllers\Admin\HotelController::class, 'calendar'])->name('admin.hotels.calendar');
// Сохранение периода
Route::post('/room-types/{roomType}/availability', [\App\Http\Controllers\Admin\AvailabilityController::class, 'store'])->name('admin.availability.store');
// Удаление периода
Route::delete('/availability/{availability}', [\App\Http\Controllers\Admin\AvailabilityController::class, 'destroy'])->name('admin.availability.destroy');
// Бронирования
Route::get('/bookings/create', [\App\Http\Controllers\Admin\BookingController::class, 'create'])->name('admin.bookings.create');
Route::post('/bookings', [\App\Http\Controllers\Admin\BookingController::class, 'store'])->name('admin.bookings.store');
Route::post('/logout', [AuthController::class, 'logout'])->name('admin.logout');
// Выход
Route::post('/logout', [\App\Http\Controllers\Admin\AuthController::class, 'logout'])->name('admin.logout');
});
// → форма входа
Route::get('/admin/login', [AuthController::class, 'showLoginForm'])->name('admin.login.form');
Route::post('/admin/login', [AuthController::class, 'login'])->name('admin.login');
// → админка
Route::middleware('auth')->prefix('admin')->group(function () {
Route::get('/hotels', [HotelController::class, 'index'])->name('admin.hotels.index');
Route::post('/logout', [AuthController::class, 'logout'])->name('admin.logout');
});
Route::get('/', function () {
return view('welcome');
});
Route::get('/{any?}', function () {
return view('app');
})->where('any', '.*');
// Вход
Route::get('/admin/login', [\App\Http\Controllers\Admin\AuthController::class, 'showLoginForm'])->name('admin.login.form');
Route::post('/admin/login', [\App\Http\Controllers\Admin\AuthController::class, 'login'])->name('admin.login');