@php $formatBreadcrumbList = function ($items): string { $items = collect($items) ->filter(fn ($item) => filled($item)) ->values(); if ($items->count() === 0) { return ''; } if ($items->count() === 1) { return $items->first(); } if ($items->count() === 2) { return $items->implode(' et '); } return $items->slice(0, -1)->implode(', ').' et '.$items->last(); }; $formatEmployerBreadcrumb = function ($employer) use ($formatBreadcrumbList): string { $primaryLastName = $employer->primary_last_name ?: $employer->primary_birth_name; $coparentLastName = $employer->coparent_last_name ?: $employer->coparent_birth_name; $parents = collect([ trim($employer->primary_first_name.' '.$primaryLastName), trim($employer->coparent_first_name.' '.$coparentLastName), ]) ->filter(fn ($name) => $name !== '') ->implode(' & '); $children = $employer->relationLoaded('children') ? $employer->children : $employer->children()->whereNull('archived_at')->orderBy('id')->get(); $childrenNames = $formatBreadcrumbList( $children->whereNull('archived_at')->pluck('first_name') ); return $childrenNames === '' ? $parents : $parents.' — '.$childrenNames; }; $breadcrumbs = [['label' => 'Accueil', 'url' => route('dashboard')]]; if (request()->routeIs('planning.*')) { $breadcrumbs[] = ['label' => "Planning de garde", 'url' => null]; } elseif (request()->routeIs('profile.*') || request()->is('profile*')) { $breadcrumbs[] = ['label' => 'Mon profil', 'url' => null]; } elseif (request()->routeIs('contracts.*') || request()->is('contrats*')) { $breadcrumbs[] = ['label' => 'Mes contrats', 'url' => route('contracts.index')]; $route = request()->route(); $contract = $route?->parameter('contract'); $child = $route?->parameter('child'); if ($contract) { $contract->loadMissing('child'); $breadcrumbs[] = ['label' => $contract->child->display_name, 'url' => null]; } elseif ($child) { $breadcrumbs[] = ['label' => $child->display_name, 'url' => null]; } elseif (request()->routeIs('contracts.create')) { $breadcrumbs[] = ['label' => 'Créer un contrat', 'url' => null]; } elseif (request()->routeIs('contracts.index')) { $breadcrumbs[count($breadcrumbs) - 1]['url'] = null; } } elseif (request()->routeIs('employers.*') || request()->is('employeurs*')) { $breadcrumbs[] = ['label' => 'Enfants & parents', 'url' => route('employers.index')]; $route = request()->route(); $employer = $route?->parameter('employer'); $child = $route?->parameter('child'); $employerLabel = $employer ? $formatEmployerBreadcrumb($employer) : null; if ($employer && request()->routeIs('employers.show')) { $breadcrumbs[] = ['label' => $employerLabel, 'url' => null]; } elseif ($employer && request()->routeIs('employers.children.contracts.*')) { $breadcrumbs[] = ['label' => $employerLabel, 'url' => route('employers.show', $employer)]; $breadcrumbs[] = ['label' => $child?->display_name ?? 'Contrat', 'url' => null]; } elseif (request()->routeIs('employers.index')) { $breadcrumbs[count($breadcrumbs) - 1]['url'] = null; } } elseif (request()->routeIs('dashboard') || request()->routeIs('home')) { $breadcrumbs[0]['url'] = null; } @endphp @if ($breadcrumbs !== [])
@endif