85 lines
8.0 KiB
PHP
85 lines
8.0 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\PublicBusinessController;
|
|
use App\Http\Controllers\BookingController;
|
|
use App\Http\Controllers\AuthController;
|
|
use App\Http\Controllers\CustomerAccountController;
|
|
use App\Http\Controllers\StaffDashboardController;
|
|
use App\Http\Controllers\CustomerLoyaltyController;
|
|
use App\Http\Controllers\NotificationController;
|
|
use App\Http\Controllers\LoyaltySettingsController;
|
|
use App\Http\Controllers\StaffAppointmentController;
|
|
use App\Http\Controllers\OwnerServicesController;
|
|
use App\Http\Controllers\OwnerBusinessSettingsController;
|
|
use App\Http\Controllers\CustomerAppointmentsController;
|
|
use App\Http\Controllers\OwnerTeamController;
|
|
use App\Http\Controllers\OwnerHoursController;
|
|
use App\Http\Controllers\InstallController;
|
|
use App\Http\Controllers\CustomerProfileController;
|
|
use App\Http\Controllers\OwnerReportsController;
|
|
use App\Http\Controllers\OwnerReviewsController;
|
|
use Illuminate\Support\Facades\Route;
|
|
|
|
Route::get('/install', [InstallController::class, 'create'])->name('install');
|
|
Route::post('/install', [InstallController::class, 'store'])->name('install.store');
|
|
|
|
Route::middleware('tenant')->group(function (): void {
|
|
Route::get('/', PublicBusinessController::class)->name('public.home');
|
|
Route::get('/welcome', [AuthController::class, 'showWelcome'])->name('auth.welcome');
|
|
Route::get('/verify', [AuthController::class, 'showVerify'])->name('auth.verify');
|
|
Route::get('/sign-in', [AuthController::class, 'showLogin'])->name('auth.signin');
|
|
Route::post('/sign-in', [AuthController::class, 'login'])->name('auth.signin.store');
|
|
// Keep the conventional Laravel URLs available as aliases so auth middleware,
|
|
// bookmarks, and the supplied templates all land on the same screen.
|
|
Route::get('/login', [AuthController::class, 'showLogin'])->name('login');
|
|
Route::post('/login', [AuthController::class, 'login'])->name('login.store');
|
|
Route::get('/register', [AuthController::class, 'showRegister'])->name('auth.register');
|
|
Route::post('/register', [AuthController::class, 'register'])->name('auth.register.store');
|
|
Route::get('/create-account', [AuthController::class, 'showRegister'])->name('register');
|
|
Route::get('/forgot-password', [AuthController::class, 'showForgot'])->name('auth.forgot');
|
|
Route::post('/forgot-password', [AuthController::class, 'forgot'])->name('auth.forgot.store');
|
|
Route::post('/sign-out', [AuthController::class, 'logout'])->middleware('auth')->name('auth.signout');
|
|
Route::get('/book', [BookingController::class, 'services'])->name('booking.services');
|
|
Route::post('/book', [BookingController::class, 'selectServices'])->name('booking.services.store');
|
|
Route::get('/book/barber-time', [BookingController::class, 'time'])->name('booking.time');
|
|
Route::post('/book/barber-time', [BookingController::class, 'selectTime'])->name('booking.time.store');
|
|
Route::get('/book/details', [BookingController::class, 'details'])->name('booking.details');
|
|
Route::post('/book/details', [BookingController::class, 'saveDetails'])->name('booking.details.store');
|
|
Route::get('/book/review', [BookingController::class, 'review'])->name('booking.review');
|
|
Route::post('/book/review', [BookingController::class, 'confirm'])->name('booking.confirm');
|
|
Route::get('/book/confirmation', [BookingController::class, 'confirmation'])->name('booking.confirmation');
|
|
Route::get('/account', CustomerAccountController::class)->middleware('auth')->name('customer.dashboard');
|
|
Route::get('/account/profile', [CustomerProfileController::class, 'edit'])->middleware('auth')->name('customer.profile');
|
|
Route::put('/account/profile', [CustomerProfileController::class, 'update'])->middleware('auth')->name('customer.profile.update');
|
|
Route::get('/loyalty', CustomerLoyaltyController::class)->middleware('auth')->name('customer.loyalty');
|
|
Route::get('/notifications', [NotificationController::class, 'index'])->middleware('auth')->name('customer.notifications');
|
|
Route::post('/notifications/{notification}/read', [NotificationController::class, 'read'])->middleware('auth')->name('customer.notifications.read');
|
|
Route::get('/appointments', [CustomerAppointmentsController::class, 'index'])->middleware('auth')->name('customer.appointments');
|
|
Route::get('/appointments/{appointment}', [CustomerAppointmentsController::class, 'show'])->middleware('auth')->name('customer.appointments.show');
|
|
Route::post('/appointments/{appointment}/cancel', [CustomerAppointmentsController::class, 'cancel'])->middleware('auth')->name('customer.appointments.cancel');
|
|
Route::get('/staff', StaffDashboardController::class)->middleware('auth')->name('staff.dashboard');
|
|
Route::post('/staff/appointments/{appointment}/status', [StaffAppointmentController::class, 'status'])->middleware('auth')->name('staff.appointments.status');
|
|
Route::get('/owner', StaffDashboardController::class)->middleware(['auth', 'staff.permission:MANAGE_BUSINESS_PROFILE'])->name('owner.dashboard');
|
|
Route::get('/owner/settings/loyalty', [LoyaltySettingsController::class, 'edit'])->middleware(['auth', 'staff.permission:MANAGE_LOYALTY_PROGRAMME'])->name('owner.loyalty');
|
|
Route::post('/owner/settings/loyalty', [LoyaltySettingsController::class, 'update'])->middleware(['auth', 'staff.permission:MANAGE_LOYALTY_PROGRAMME'])->name('owner.loyalty.update');
|
|
Route::get('/owner/services', [OwnerServicesController::class, 'index'])->middleware(['auth', 'staff.permission:MANAGE_SERVICES'])->name('owner.services');
|
|
Route::post('/owner/services', [OwnerServicesController::class, 'store'])->middleware(['auth', 'staff.permission:MANAGE_SERVICES'])->name('owner.services.store');
|
|
Route::put('/owner/services/{service}', [OwnerServicesController::class, 'update'])->middleware(['auth', 'staff.permission:MANAGE_SERVICES'])->name('owner.services.update');
|
|
Route::delete('/owner/services/{service}', [OwnerServicesController::class, 'destroy'])->middleware(['auth', 'staff.permission:MANAGE_SERVICES'])->name('owner.services.destroy');
|
|
Route::get('/owner/settings/business', [OwnerBusinessSettingsController::class, 'business'])->middleware(['auth', 'staff.permission:MANAGE_BUSINESS_PROFILE'])->name('owner.business');
|
|
Route::put('/owner/settings/business', [OwnerBusinessSettingsController::class, 'updateBusiness'])->middleware(['auth', 'staff.permission:MANAGE_BUSINESS_PROFILE'])->name('owner.business.update');
|
|
Route::get('/owner/settings/booking-rules', [OwnerBusinessSettingsController::class, 'bookingRules'])->middleware(['auth', 'staff.permission:MANAGE_BOOKING_RULES'])->name('owner.booking-rules');
|
|
Route::put('/owner/settings/booking-rules', [OwnerBusinessSettingsController::class, 'updateBookingRules'])->middleware(['auth', 'staff.permission:MANAGE_BOOKING_RULES'])->name('owner.booking-rules.update');
|
|
Route::get('/owner/team', [OwnerTeamController::class, 'index'])->middleware(['auth', 'staff.permission:MANAGE_STAFF'])->name('owner.team');
|
|
Route::post('/owner/team', [OwnerTeamController::class, 'store'])->middleware(['auth', 'staff.permission:MANAGE_STAFF'])->name('owner.team.store');
|
|
Route::get('/owner/settings/hours', [OwnerHoursController::class, 'edit'])->middleware(['auth', 'staff.permission:MANAGE_BUSINESS_PROFILE'])->name('owner.hours');
|
|
Route::put('/owner/settings/hours', [OwnerHoursController::class, 'update'])->middleware(['auth', 'staff.permission:MANAGE_BUSINESS_PROFILE'])->name('owner.hours.update');
|
|
Route::get('/owner/reports', OwnerReportsController::class)->middleware(['auth', 'staff.permission:VIEW_REPORTING'])->name('owner.reports');
|
|
Route::get('/owner/settings/reviews', [OwnerReviewsController::class, 'index'])->middleware(['auth', 'staff.permission:MANAGE_REVIEWS'])->name('owner.reviews');
|
|
Route::post('/owner/settings/reviews/{review}/toggle', [OwnerReviewsController::class, 'toggle'])->middleware(['auth', 'staff.permission:MANAGE_REVIEWS'])->name('owner.reviews.toggle');
|
|
});
|
|
|
|
Route::prefix('manager')->name('manager.')->group(function (): void {
|
|
Route::view('/', 'manager.placeholder')->name('dashboard');
|
|
});
|