{{-- resources/views/layouts/navigation.blade.php --}} @php use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Route; $user = Auth::user(); // If the user has an active prestataire relation but their role wasn't updated, // temporarily mark them as 'prestataire' for view rendering so nav/buttons match. try { if ($user && isset($user->prestataire) && $user->prestataire && ($user->prestataire->is_active ?? false)) { if (!method_exists($user, 'hasRole') || !$user->hasRole('prestataire')) { $user->role = 'prestataire'; } } } catch (\Throwable $e) { // If anything fails while accessing relation, ignore and keep original role } // Détecter le MODE actuel basé sur la route (pas le rôle principal de l'utilisateur) // Un utilisateur peut avoir les deux rôles mais naviguer sur un mode spécifique $isOnPrestataireRoutes = request()->routeIs('prestataire.*'); $isOnClientRoutes = request()->routeIs('client.*'); // Mode actuel basé sur les routes $currentMode = $isOnPrestataireRoutes ? 'prestataire' : ($isOnClientRoutes ? 'client' : null); // Variables de compatibilité pour le reste de la navigation $isPrestataireInClientMode = $isOnClientRoutes && $user && method_exists($user, 'hasRole') && $user->hasRole('prestataire'); $isClientInPrestataireMode = $isOnPrestataireRoutes && $user && method_exists($user, 'hasRole') && $user->hasRole('client'); // Routes optionnelles : on teste leur existence pour éviter les 500 (RouteNotFoundException) $homeRoute = Route::has('home') ? route('home') : url('/'); $servicesRoute = Route::has('services.index') ? route('services.index') : null; $equipmentRoute = Route::has('equipment.index') ? route('equipment.index') : null; $urgentSalesRoute = Route::has('urgent-sales.index') ? route('urgent-sales.index') : null; $videosFeedRoute = Route::has('videos.feed') ? route('videos.feed') : null; $foodExploreRoute = Route::has('food.explore') ? route('food.explore') : null; // État actif fiable même si le nom de route est absent/altéré $isServicesActive = request()->routeIs('services.*') || request()->is('services') || request()->is('services/*'); $isEquipmentActive = request()->routeIs('equipment.*') || request()->is('equipment') || request()->is('equipment/*'); $isUrgentSalesActive = request()->routeIs('urgent-sales.*') || request()->is('urgent-sales') || request()->is('urgent-sales/*'); $messagingRoute = Route::has('messaging.index') ? route('messaging.index') : null; $notificationsIndex = Route::has('notifications.index') ? route('notifications.index') : null; $notificationsMarkAll = Route::has('notifications.mark-all-read') ? route('notifications.mark-all-read') : null; $clientDashboardRoute = Route::has('client.dashboard') ? route('client.dashboard') : null; $prestataireDashboardRoute = Route::has('prestataire.dashboard') ? route('prestataire.dashboard') : null; $defaultDashboardRoute = Route::has('dashboard') ? route('dashboard') : null; $prestataireAgendaRoute = Route::has('prestataire.agenda.index') ? route('prestataire.agenda.index') : null; $prestataireServicesIndex = Route::has('prestataire.services.index') ? route('prestataire.services.index') : null; $prestataireServicesCreate = Route::has('prestataire.services.create')? route('prestataire.services.create') : null; $prestataireEquipmentIndex = Route::has('prestataire.equipment.index')? route('prestataire.equipment.index') : null; $prestataireEquipmentCreate = Route::has('prestataire.equipment.create')? route('prestataire.equipment.create'): null; $prestataireUrgentSalesIndex = Route::has('prestataire.urgent-sales.index') ? route('prestataire.urgent-sales.index') : null; $prestataireUrgentSalesCreate = Route::has('prestataire.urgent-sales.create') ? route('prestataire.urgent-sales.create') : null; $prestataireVideosManage = Route::has('prestataire.videos.manage') ? route('prestataire.videos.manage') : null; $clientBookingsRoute = Route::has('client.bookings.index') ? route('client.bookings.index') : null; $clientBookingsHistoryRoute = Route::has('client.bookings.history') ? route('client.bookings.history') : null; $clientReservationsRoute = Route::has('my-reservations.index') ? route('my-reservations.index') : null; $clientEquipmentRentals = Route::has('client.equipment-rental-requests.index') ? route('client.equipment-rental-requests.index') : null; $clientFollowsRoute = Route::has('client.prestataire-follows.index') ? route('client.prestataire-follows.index') : null; $clientCartRoute = Route::has('client.cart.index') ? route('client.cart.index') : null; // Nouvelles fonctionnalités client $clientPaymentsRoute = Route::has('client.payments.index') ? route('client.payments.index') : null; $clientSubscriptionsRoute = Route::has('client.subscriptions.index') ? route('client.subscriptions.index') : null; $clientAuctionsRoute = Route::has('client.auctions.index') ? route('client.auctions.index') : null; $clientDeliveryRoute = Route::has('client.delivery.index') ? route('client.delivery.index') : null; $clientAddressBookRoute = Route::has('client.address-book.index') ? route('client.address-book.index') : null; $clientNotificationSettingsRoute = Route::has('client.notification-settings.index') ? route('client.notification-settings.index') : null; // Nouvelles fonctionnalités prestataire $prestataireBookingsRoute = Route::has('prestataire.bookings.index') ? route('prestataire.bookings.index') : null; $prestataireBookingsHistoryRoute = Route::has('prestataire.bookings.history') ? route('prestataire.bookings.history') : null; $prestataireReservationsRoute = Route::has('prestataire.reservations.index') ? route('prestataire.reservations.index') : null; $prestatairePaymentsRoute = Route::has('prestataire.payments.index') ? route('prestataire.payments.index') : null; $prestataireSubscriptionsRoute = Route::has('prestataire.subscriptions.index') ? route('prestataire.subscriptions.index') : null; $prestataireAuctionsRoute = Route::has('prestataire.auctions.index') ? route('prestataire.auctions.index') : null; $prestataireDeliveryRoute = Route::has('prestataire.delivery.index') ? route('prestataire.delivery.index') : null; $prestataireInventoryRoute = Route::has('prestataire.inventory.index') ? route('prestataire.inventory.index') : null; $prestataireAddressBookRoute = Route::has('prestataire.address-book.index') ? route('prestataire.address-book.index') : null; $prestataireNotificationSettingsRoute = Route::has('prestataire.notification-settings.index') ? route('prestataire.notification-settings.index') : null; $profileEditRoute = Route::has('profile.edit') ? route('profile.edit') : null; // Paramètres : route dynamique selon le MODE actuel (basé sur les routes, pas le rôle principal) $clientProfileEditRoute = Route::has('client.profile.edit') ? route('client.profile.edit') : null; $prestataireProfileEditRoute = Route::has('prestataire.profile.edit') ? route('prestataire.profile.edit') : null; // PRIORITÉ 1: Mode actuel basé sur la route (client.* ou prestataire.*) if ($isOnPrestataireRoutes && $prestataireProfileEditRoute) { $profileSettingsRoute = $prestataireProfileEditRoute; } elseif ($isOnClientRoutes && $clientProfileEditRoute) { $profileSettingsRoute = $clientProfileEditRoute; } elseif ($user && isset($user->prestataire) && $user->prestataire && ($user->prestataire->is_active ?? false) && $prestataireProfileEditRoute) { $profileSettingsRoute = $prestataireProfileEditRoute; } elseif ($user && method_exists($user, 'hasRole') && $user->hasRole('prestataire') && $prestataireProfileEditRoute) { $profileSettingsRoute = $prestataireProfileEditRoute; } elseif ($user && method_exists($user, 'hasRole') && $user->hasRole('client') && $clientProfileEditRoute) { $profileSettingsRoute = $clientProfileEditRoute; } else { $profileSettingsRoute = Route::has('profile.settings') ? route('profile.settings') : null; } $loginRoute = Route::has('login') ? route('login') : null; $registerRoute = Route::has('register') ? route('register') : null; $logoutRoute = Route::has('logout') ? route('logout') : null; // Compteurs sécurisés $unreadMessagesCount = 0; $unreadNotificationsCount = 0; $recentNotifications = collect(); if ($user) { try { if (method_exists($user, 'receivedMessages')) { $unreadMessagesCount = $user->receivedMessages()->whereNull('read_at')->count(); } } catch (\Throwable $e) { $unreadMessagesCount = 0; } try { if (method_exists($user, 'notifications')) { $unreadNotificationsCount = $user->notifications()->whereNull('read_at')->count(); $recentNotifications = $user->notifications() ->whereNull('read_at') ->orderBy('created_at', 'desc') ->limit(3) ->get(); } } catch (\Throwable $e) { $unreadNotificationsCount = 0; $recentNotifications = collect(); } } @endphp @once @endonce @once @endonce