@php
// Aggregated weekly planning (moved here from header)
$dayNamesEn = ['monday','tuesday','wednesday','thursday','friday','saturday','sunday'];
$frToEn = [
'lundi' => 'monday', 'mardi' => 'tuesday', 'mercredi' => 'wednesday',
'jeudi' => 'thursday', 'vendredi' => 'friday', 'samedi' => 'saturday', 'dimanche' => 'sunday'
];
$aggregatedDays = array_fill_keys($dayNamesEn, []);
$aggregatedFlags = array_fill_keys($dayNamesEn, ['morning'=>false,'evening'=>false]);
$aggregatedPresence = array_fill_keys($dayNamesEn, false);
foreach(($contract['schedules'] ?? []) as $sch){
if(isset($sch['day_of_week'])){
$dayKey = strtolower($sch['day_of_week']);
if(in_array($dayKey, $dayNamesEn, true)){
$aggregatedPresence[$dayKey] = true;
$tasksRaw = $sch['tasks'] ?? [];
$tasksArr = is_string($tasksRaw) ? (json_decode($tasksRaw, true) ?: []) : ($tasksRaw ?? []);
if(is_array($tasksArr)){
$aggregatedDays[$dayKey] = array_values(array_unique(array_merge($aggregatedDays[$dayKey], $tasksArr)));
}
$startTime = $sch['start_time'] ?? null;
$endTime = $sch['end_time'] ?? null;
if($startTime){ $aggregatedFlags[$dayKey]['morning'] = $aggregatedFlags[$dayKey]['morning'] || (substr($startTime,0,2) <= '14'); }
if($endTime){ $aggregatedFlags[$dayKey]['evening'] = $aggregatedFlags[$dayKey]['evening'] || (substr($endTime,0,2) >= '18'); }
if(!$startTime && !$endTime && !empty($tasksArr)){ $aggregatedFlags[$dayKey]['morning'] = true; }
}
}
$dc = is_string($sch['days_config'] ?? null) ? json_decode($sch['days_config'], true) : ($sch['days_config'] ?? []);
if(is_array($dc) && !empty($dc)){
foreach($dc as $k=>$v){
$key = in_array($k, $dayNamesEn, true) ? $k : ($frToEn[$k] ?? null);
if($key){
$aggregatedPresence[$key] = true;
$tasks = $v['tasks'] ?? [];
if(is_array($tasks)){
$aggregatedDays[$key] = array_values(array_unique(array_merge($aggregatedDays[$key], $tasks)));
}
if(isset($v['morning'])) { $aggregatedFlags[$key]['morning'] = $aggregatedFlags[$key]['morning'] || (bool)$v['morning']; }
if(isset($v['evening'])) { $aggregatedFlags[$key]['evening'] = $aggregatedFlags[$key]['evening'] || (bool)$v['evening']; }
}
}
}
}
$dayShort = ['monday'=>'Lu','tuesday'=>'Ma','wednesday'=>'Me','thursday'=>'Je','friday'=>'Ve','saturday'=>'Sa','sunday'=>'Di'];
@endphp
@foreach($dayNamesEn as $dkey)
@php
$tasks = $aggregatedDays[$dkey] ?? [];
$hasTasks = is_array($tasks) && count($tasks) > 0;
$hasAnySchedule = ($aggregatedFlags[$dkey]['morning'] ?? false) || ($aggregatedFlags[$dkey]['evening'] ?? false) || ($aggregatedPresence[$dkey] ?? false);
$hasDay = $hasTasks || $hasAnySchedule;
$hasCleaning = $hasTasks
? (collect($tasks)->contains(fn($t)=>str_contains(strtolower($t),'nettoyage')||str_contains(strtolower($t),'ménage')||str_contains(strtolower($t),'cleaning')||str_contains(strtolower($t),'menage')))
: $hasAnySchedule;
$hasDish = $hasTasks && collect($tasks)->contains(fn($t)=>str_contains(strtolower($t),'vaisselle')||str_contains(strtolower($t),'dish')||str_contains(strtolower($t),'couvert'));
@endphp
{{ $dayShort[$dkey] }}
@if($hasDay)
@if($hasCleaning)
@php
$isMorning = (bool)($aggregatedFlags[$dkey]['morning'] ?? false);
$isEvening = (bool)($aggregatedFlags[$dkey]['evening'] ?? false);
@endphp
@if($isMorning || $isEvening)
@if($isMorning)
@endif
@if($isEvening)
@endif
@endif
@endif
@if($hasDish)
@endif
@else
@endif
@endforeach
@php
// Équipe récupérée depuis la DB (via Controller -> assignedUsers)
$team = $contract['team'] ?? [];
@endphp
@php
// Calcul du montant par personne pour les contrats au forfait
$teamCount = is_array($team) ? count($team) : (method_exists($team, 'count') ? $team->count() : 0);
$perPerson = null;
$billing = $contract['billing'] ?? null;
if ($billing && ($billing['type'] ?? null) === 'package') {
// On privilégie total_amount si disponible (montant facturé avec marge), sinon monthly_package_amount
$contractTotal = $billing['total_amount'] ?? ($billing['monthly_package_amount'] ?? null);
if (is_numeric($contractTotal) && $teamCount > 0) {
$perPerson = ((float)$contractTotal) / $teamCount;
}
}
@endphp
@forelse($team as $w)
@php
$wid = is_array($w) ? ($w['id'] ?? null) : ($w->id ?? null);
$wname = is_array($w) ? ($w['prenom'] ?? ($w['name'] ?? '')) : ($w->prenom ?? ($w->name ?? ''));
@endphp
{{ $wname }}
@if(!is_null($perPerson))
|
{{ number_format($perPerson, 0, ',', ' ') }}€/mois
@endif
@empty
Non assigné
@endforelse