{{-- ── LOGO ── --}}
HostelFlow
HostelFlow
Gestion d'auberges
@php $staffHostelId = session('staff_hostel_id'); $activeHostelId = session('hostel_id'); $isUserGuard = Auth::guard('user')->check(); $isOwnerGuard = Auth::guard('owner')->check(); $isSuperAdmin = Auth::guard('super_admin')->check(); $isManager = false; $isStaff = false; $isFinancial = false; if ($isUserGuard) { $userRole = Auth::guard('user')->user()?->hostels() ->where('hostels.id', $staffHostelId) ->first()?->pivot->role ?? 'unknown'; $isManager = $userRole === 'manager'; $isStaff = $userRole === 'staff'; $isFinancial = $userRole === 'financial'; } $logoutRoute = $isOwnerGuard ? 'owner.logout' : ($isSuperAdmin ? 'super-admin.logout' : 'user.logout'); /* ── OWNER ── */ if ($isOwnerGuard) { $owner = Auth::guard('owner')->user(); $allHostels = $owner->hostels()->latest()->get(); $activeHostel = $allHostels->firstWhere('id', $activeHostelId) ?? $allHostels->first(); $hostelName = $activeHostel?->name ?? 'Mon Hostel'; $userName = $owner->name; $userRole = 'Propriétaire'; $userInitial = strtoupper(mb_substr($userName, 0, 1)); $menu = [ ['route' => 'dashboard', 'icon' => '📊', 'label' => 'Dashboard', 'group' => 'main'], ['route' => 'reservations.index', 'icon' => '📅', 'label' => 'Réservations', 'group' => 'main'], ['route' => 'rooms.index', 'icon' => '🚪', 'label' => 'Chambres', 'group' => 'inventory'], ['route' => 'beds.index', 'icon' => '🛏️', 'label' => 'Lits', 'group' => 'inventory'], ['route' => 'tent-spaces.index', 'icon' => '⛺', 'label' => 'Tentes', 'group' => 'inventory'], ['route' => 'extras.index', 'icon' => '🛒', 'label' => 'Extras', 'group' => 'inventory'], ['route' => 'inventory-blocks.index', 'icon' => '🚫', 'label' => 'Indisponibilités', 'group' => 'inventory'], ['route' => 'prices.index', 'icon' => '💲', 'label' => 'Tarifs', 'group' => 'finance'], ['route' => 'taxes.index', 'icon' => '🧾', 'label' => 'Taxes', 'group' => 'finance'], ['route' => 'exchange-rates.index', 'icon' => '💱', 'label' => 'Taux de change', 'group' => 'finance'], ['route' => 'payments.index', 'icon' => '💳', 'label' => 'Paiements', 'group' => 'finance'], ['route' => 'expenses.index', 'icon' => '💸', 'label' => 'Dépenses', 'group' => 'finance'], ['route' => 'analytics.index', 'icon' => '📈', 'label' => 'Analytics', 'group' => 'finance'], ['route' => 'managers.index', 'icon' => '👥', 'label' => 'Équipe', 'group' => 'admin'], ['route' => 'contact-requests.index', 'icon' => '📩', 'label' => 'Demandes clients', 'group' => 'admin'], ['route' => 'hostels.index', 'icon' => '🏠', 'label' => 'Mes Hostels', 'group' => 'admin'], ]; $soon = ['Rapports']; /* ── MANAGER ── */ } elseif ($isManager) { $allHostels = collect(); $hostelName = optional(\App\Models\Hostel::find($staffHostelId))->name ?? 'Hostel'; $userName = Auth::guard('user')->user()->name; $userRole = 'Manager'; $userInitial = strtoupper(mb_substr($userName, 0, 1)); $menu = [ ['route' => 'manager.dashboard', 'icon' => '📊', 'label' => 'Dashboard', 'group' => 'main'], ['route' => 'manager.reservations.index', 'icon' => '📅', 'label' => 'Réservations', 'group' => 'main'], ['route' => 'manager.rooms.index', 'icon' => '🚪', 'label' => 'Chambres', 'group' => 'inventory'], ['route' => 'manager.beds.index', 'icon' => '🛏️', 'label' => 'Lits', 'group' => 'inventory'], ['route' => 'manager.inventory-blocks.index', 'icon' => '🚫', 'label' => 'Indisponibilités', 'group' => 'inventory'], ['route' => 'manager.pricing.index', 'icon' => '💰', 'label' => 'Tarifs', 'group' => 'finance'], ['route' => 'manager.taxes.index', 'icon' => '🧾', 'label' => 'Taxes', 'group' => 'finance'], ['route' => 'manager.exchange-rates.index', 'icon' => '💱', 'label' => 'Taux de change', 'group' => 'finance'], ['route' => 'manager.payments.index', 'icon' => '💳', 'label' => 'Paiements', 'group' => 'finance'], ['route' => 'manager.expenses.index', 'icon' => '💸', 'label' => 'Dépenses', 'group' => 'finance'], ['route' => 'manager.staff.index', 'icon' => '👥', 'label' => 'Équipe', 'group' => 'admin'], ['route' => 'manager.contact-requests.index', 'icon' => '📩', 'label' => 'Demandes clients', 'group' => 'admin'], ['route' => 'manager.settings.edit', 'icon' => '⚙️', 'label' => 'Paramètres', 'group' => 'admin'], ]; $soon = ['Rapports']; /* ── STAFF ── */ } elseif ($isStaff) { $allHostels = collect(); $hostelName = optional(\App\Models\Hostel::find($staffHostelId))->name ?? 'Hostel'; $userName = Auth::guard('user')->user()->name; $userRole = 'Staff'; $userInitial = strtoupper(mb_substr($userName, 0, 1)); $menu = [ ['route' => 'staff.dashboard', 'icon' => '📊', 'label' => 'Dashboard', 'group' => 'main'], ['route' => 'staff.reservations.index','icon' => '📅', 'label' => 'Réservations', 'group' => 'main'], ['route' => 'staff.payments.index', 'icon' => '💳', 'label' => 'Paiements', 'group' => 'finance'], ['route' => 'staff.expenses.index', 'icon' => '💸', 'label' => 'Dépenses', 'group' => 'finance'], ]; $soon = ['Rapports']; /* ── FINANCIAL ── */ } elseif ($isFinancial) { $allHostels = collect(); $hostelName = optional(\App\Models\Hostel::find($staffHostelId))->name ?? 'Hostel'; $userName = Auth::guard('user')->user()->name; $userRole = 'Financier'; $userInitial = strtoupper(mb_substr($userName, 0, 1)); $menu = [ ['route' => 'staff.financial.dashboard', 'icon' => '📈', 'label' => 'Dashboard', 'group' => 'main'], ['route' => 'staff.reservations.index', 'icon' => '📅', 'label' => 'Réservations', 'group' => 'main'], ['route' => 'staff.cash-shifts.index', 'icon' => '🔒', 'label' => 'Clôture Caisse', 'group' => 'finance'], ['route' => 'staff.payments.index', 'icon' => '💳', 'label' => 'Paiements', 'group' => 'finance'], ['route' => 'staff.expenses.index', 'icon' => '💸', 'label' => 'Dépenses', 'group' => 'finance'], ['route' => 'staff.financial.reports.index', 'icon' => '📊', 'label' => 'Rapports', 'group' => 'finance'], ]; $soon = ['Tax Audit', 'Analytics']; /* ── FALLBACK ── */ } else { $allHostels = collect(); $hostelName = 'Hostel'; $userName = 'Utilisateur'; $userRole = ''; $userInitial = 'U'; $menu = [ ['route' => 'staff.dashboard', 'icon' => '📊', 'label' => 'Dashboard', 'group' => 'main'], ]; $soon = ['Réservations', 'Rapports']; } /* ── Groupement ── */ $groups = [ 'main' => ['label' => 'Principal', 'items' => []], 'inventory' => ['label' => 'Inventaire', 'items' => []], 'finance' => ['label' => 'Finance', 'items' => []], 'admin' => ['label' => 'Administration', 'items' => []], ]; foreach ($menu as $item) { $groups[$item['group']]['items'][] = $item; } @endphp {{-- ── HOSTEL SWITCHER ── --}}
{{ $hostelName }} @if($isOwnerGuard && $allHostels->count() > 1) ▼ @endif
@if($isOwnerGuard && $allHostels->count() > 1)
Mes hostels
@foreach($allHostels as $h)
@csrf
@endforeach
+ Ajouter un hostel
@endif
{{-- ── Bouton ajout hostel (owner avec 1 seul hostel) ── --}} @if($isOwnerGuard && $allHostels->count() <= 1)
+ Ajouter un hostel
@endif {{-- ── PROFIL UTILISATEUR ── --}}
{{ $userInitial }}
{{ $userName }}
@if($userRole)
{{ $userRole }}
@endif
{{-- ── NAVIGATION ── --}}
@foreach($groups as $groupKey => $group) @if(count($group['items']) > 0)
{{ $group['label'] }}
@foreach($group['items'] as $item) @php $isActive = request()->routeIs($item['route'] . '*'); @endphp {{ $item['icon'] }} {{ $item['label'] }} @endforeach @endif @endforeach @if(count($soon) > 0)
Bientôt
@foreach($soon as $label)
🔒 {{ $label }} Soon
@endforeach @endif
{{-- ── LOGOUT ── --}}
@csrf