name('home'); Route::get('/booking', function () { return view('pages.booking'); })->name('booking'); Route::get('/posts', function () { return view('pages.posts.index'); })->name('posts.index'); Route::get('/terms', function () { return view('pages.terms'); })->name('terms'); Route::get('/privacy', function () { return view('pages.privacy'); })->name('privacy'); Route::get('/language/{locale}', function (string $locale) { if (! in_array($locale, ['ar', 'en'])) { abort(400); } session(['locale' => $locale]); if (auth()->check()) { auth()->user()->update(['preferred_language' => $locale]); } return redirect()->back(); })->name('language.switch'); Route::middleware(['auth', 'active'])->group(function () { // Admin routes Route::middleware('admin')->prefix('admin')->group(function () { Route::view('/dashboard', 'livewire.admin.dashboard-placeholder') ->name('admin.dashboard'); // Individual Clients Management Route::prefix('clients/individual')->name('admin.clients.individual.')->group(function () { Volt::route('/', 'admin.clients.individual.index')->name('index'); Volt::route('/create', 'admin.clients.individual.create')->name('create'); Volt::route('/{client}', 'admin.clients.individual.show')->name('show'); Volt::route('/{client}/edit', 'admin.clients.individual.edit')->name('edit'); }); // Company Clients Management Route::prefix('clients/company')->name('admin.clients.company.')->group(function () { Volt::route('/', 'admin.clients.company.index')->name('index'); Volt::route('/create', 'admin.clients.company.create')->name('create'); Volt::route('/{client}', 'admin.clients.company.show')->name('show'); Volt::route('/{client}/edit', 'admin.clients.company.edit')->name('edit'); }); // Bookings Management Route::prefix('bookings')->name('admin.bookings.')->group(function () { Volt::route('/pending', 'admin.bookings.pending')->name('pending'); Volt::route('/{consultation}', 'admin.bookings.review')->name('review'); }); // Consultations Management Route::prefix('consultations')->name('admin.consultations.')->group(function () { Volt::route('/', 'admin.consultations.index')->name('index'); Volt::route('/{consultation}', 'admin.consultations.show')->name('show'); }); // Client Consultation History Volt::route('/clients/{user}/consultations', 'admin.clients.consultation-history') ->name('admin.clients.consultation-history'); // Timelines Management Route::prefix('timelines')->name('admin.timelines.')->group(function () { Volt::route('/', 'admin.timelines.index')->name('index'); Volt::route('/create', 'admin.timelines.create')->name('create'); Volt::route('/{timeline}', 'admin.timelines.show')->name('show'); }); // Admin Settings Route::prefix('settings')->name('admin.settings.')->group(function () { Volt::route('/working-hours', 'admin.settings.working-hours')->name('working-hours'); Volt::route('/blocked-times', 'admin.settings.blocked-times')->name('blocked-times'); }); }); // Client routes Route::middleware('client')->prefix('client')->name('client.')->group(function () { Route::view('/dashboard', 'livewire.client.dashboard-placeholder') ->name('dashboard'); // Consultations Route::prefix('consultations')->name('consultations.')->group(function () { Volt::route('/', 'client.consultations.index')->name('index'); Volt::route('/book', 'client.consultations.book')->name('book'); Route::get('/{consultation}/calendar', function (Consultation $consultation) { abort_unless($consultation->user_id === auth()->id(), 403); abort_unless($consultation->status === ConsultationStatus::Approved, 404); return app(CalendarService::class)->generateDownloadResponse($consultation); })->name('calendar'); }); // Timelines Route::prefix('timelines')->name('timelines.')->group(function () { Volt::route('/', 'client.timelines.index')->name('index'); Volt::route('/{timeline}', 'client.timelines.show')->name('show'); }); }); // Settings routes Route::redirect('settings', 'settings/profile'); Volt::route('settings/profile', 'settings.profile')->name('profile.edit'); Volt::route('settings/password', 'settings.password')->name('user-password.edit'); Volt::route('settings/appearance', 'settings.appearance')->name('appearance.edit'); Volt::route('settings/two-factor', 'settings.two-factor') ->middleware( when( Features::canManageTwoFactorAuthentication() && Features::optionEnabled(Features::twoFactorAuthentication(), 'confirmPassword'), ['password.confirm'], [], ), ) ->name('two-factor.show'); });