@php
// Types de créneaux (filtre)
$allTypes = [
'pose' => 'Pose',
'maconnerie' => 'Maçonnerie',
'intervention' => 'Intervention',
'absence' => 'Absence',
];
$currentTypes = request()->input('types', array_keys($allTypes));
if (request('user_id')) {
$currentTypes = array_keys($allTypes);
}
// Navigation (pager) + réinitialisation, selon la vue
$query = request()->query();
if ($viewMode === 'day') {
$prevUrl = route('plannings.index', array_merge($query, ['day' => $previousDay]));
$nextUrl = route('plannings.index', array_merge($query, ['day' => $nextDay]));
$periodLabel = $dayLabel;
$resetUrl = route('plannings.index', ['view' => 'day', 'day' => $dayOffset]);
} elseif ($viewMode === 'week') {
$prevUrl = route('plannings.index', array_merge($query, ['week' => $previousWeek]));
$nextUrl = route('plannings.index', array_merge($query, ['week' => $nextWeek]));
$periodLabel = 'Semaine ' . $weekLabel;
$resetUrl = route('plannings.index', ['view' => 'week', 'week' => $weekOffset]);
} else {
$prevUrl = route('plannings.index', array_merge($query, ['month' => $previousMonth]));
$nextUrl = route('plannings.index', array_merge($query, ['month' => $nextMonth]));
$periodLabel = $monthLabel;
$resetUrl = route('plannings.index', ['view' => 'month', 'month' => $monthOffset]);
}
// Vue jour : la grille laisse place aux cartes de l'agenda, et les equipes
// sans creneau disparaissent avec elle. On les liste sous les cartes pour
// garder l'information « qui n'a rien aujourd'hui ». A calculer ici : la
// boucle de la grille reutilise $planning comme variable de boucle.
$equipesLibres = $viewMode === 'day'
? collect($planning)
->filter(fn ($equipe) => empty($equipe['plannings']) && ($equipe['type'] ?? '') !== 'absence')
->pluck('nom')
->all()
: [];
$viewButtons = [
'day' => ['Jour', 'bi-calendar-day'],
'week' => ['Semaine', 'bi-calendar-week'],
'month' => ['Mois', 'bi-calendar3'],
];
// Sélecteur utilisateur
$selectedUser = $usersFilter->firstWhere('id', (int) request('user_id'));
$upColors = ['#0d6efd','#198754','#6f42c1','#fd7e14','#dc3545','#20c997','#d63384','#0dcaf0','#e6a800','#6610f2'];
$upColor = fn($id) => $upColors[$id % count($upColors)];
$upInitials = fn($u) => mb_strtoupper(mb_substr($u->prenom, 0, 1) . mb_substr($u->nom, 0, 1));
@endphp
{{-- Portée + Vue (contrôles segmentés) --}}
{{-- MESSAGES --}}
@if (session('success'))
{{ session('success') }}
@endif
@if (session('error'))
{{ session('error') }}
@endif
{{-- Pager --}}
{{-- Filtres --}}
{{-- Recherche --}}
{{-- Filtre "à réaffecter" : affiché par le JS seulement s'il existe des
chantiers dont un employé assigné est absent sur la période. --}}
@if ($viewMode === 'week' || $viewMode === 'day')
@if ($viewMode === 'day' && $equipesLibres)
Sans créneau aujourd'hui
@foreach ($equipesLibres as $nomEquipe)
{{ $nomEquipe }}
@endforeach
@endif
@else
{{-- PLANNING MOIS --}}
@endif
{{-- MODAL --}}