File: /home/xedaptot/rms.naniguide.com/routes/web.php
<?php
use App\Http\Controllers\AdminController;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\BookingDataController;
use App\Http\Controllers\CompetitorController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\HotelConfigController;
use App\Http\Controllers\ReportController;
use Illuminate\Support\Facades\Route;
Route::redirect('/', '/dashboard');
Route::get('/bootstrap-admin', [AuthController::class, 'bootstrapAdmin'])->name('bootstrap.admin');
Route::get('/login', [AuthController::class, 'showLogin'])->name('login');
Route::post('/login', [AuthController::class, 'login']);
Route::get('/forgot-password', [AuthController::class, 'showForgot'])->name('password.request');
Route::post('/forgot-password', [AuthController::class, 'forgot'])->name('password.email');
Route::middleware('auth')->group(function () {
Route::post('/logout', [AuthController::class, 'logout'])->name('logout');
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
Route::post('/forecast', [DashboardController::class, 'forecast'])->name('forecast.generate');
Route::match(['get', 'post'], '/pricing', [DashboardController::class, 'pricing'])->name('pricing');
Route::get('/hotel-configuration', [HotelConfigController::class, 'index'])->name('hotel.config');
Route::post('/hotel-configuration/hotel', [HotelConfigController::class, 'updateHotel'])->name('hotel.update');
Route::post('/hotel-configuration/room-types', [HotelConfigController::class, 'storeRoomType'])->name('room-types.store');
Route::delete('/hotel-configuration/room-types/{roomType}', [HotelConfigController::class, 'deleteRoomType'])->name('room-types.delete');
Route::get('/booking-data', [BookingDataController::class, 'index'])->name('booking.index');
Route::post('/booking-data', [BookingDataController::class, 'store'])->name('booking.store');
Route::post('/booking-data/upload', [BookingDataController::class, 'upload'])->name('booking.upload');
Route::get('/competitors', [CompetitorController::class, 'index'])->name('competitors.index');
Route::post('/competitors', [CompetitorController::class, 'store'])->name('competitors.store');
Route::get('/reports', [ReportController::class, 'index'])->name('reports.index');
Route::post('/reports', [ReportController::class, 'generate'])->name('reports.generate');
Route::get('/reports/{report}/export/{format}', [ReportController::class, 'export'])->name('reports.export');
Route::middleware('role:admin')->group(function () {
Route::get('/admin', [AdminController::class, 'index'])->name('admin.index');
Route::post('/admin/users', [AdminController::class, 'storeUser'])->name('admin.users.store');
Route::post('/admin/hotels', [AdminController::class, 'storeHotel'])->name('admin.hotels.store');
Route::post('/admin/pricing-rules', [AdminController::class, 'storePricingRule'])->name('admin.rules.store');
});
});