@extends('layouts.app') @section('title', 'Contrats · ' . $organization->name) @section('eyebrow', 'Accueillir') @section('heading', 'Contrats enfants') @section('content') @php $weekdayNames = [ 1 => 'Lundi', 2 => 'Mardi', 3 => 'Mercredi', 4 => 'Jeudi', 5 => 'Vendredi', ]; $statusLabels = [ 'active' => 'Actif', 'upcoming' => 'À venir', 'ended' => 'Terminé', ]; @endphp
@if($children->isEmpty())
Tous les enfants actifs possèdent déjà un contrat actif ou à venir. Les contrats terminés restent modifiables dans la liste.
@endif
@foreach([ 'all' => ['Tous', $counts['all']], 'active' => ['Actifs', $counts['active']], 'upcoming' => ['À venir', $counts['upcoming']], 'ended' => ['Terminés', $counts['ended']], ] as $key => [$label, $count]) {{ $label }} {{ $count }} @endforeach

Contrats enregistrés

Horaires réservés par jour et affectations de section suivies dans le temps.

{{ $contracts->count() }} résultat(s)
@forelse($contracts as $contract) @php $weeklyHours = $contract->schedules->sum(function ($row) { $start = \Carbon\Carbon::parse($row->arrival_time); $end = \Carbon\Carbon::parse($row->departure_time); return $start->diffInMinutes($end) / 60; }); $currentAssignment = $contract->sectionAssignments ->first(function ($assignment) { $today = now()->startOfDay(); return $today->gte($assignment->start_date) && (!$assignment->end_date || $today->lte($assignment->end_date)); }); $firstAssignment = $currentAssignment ?? $contract->sectionAssignments->first(); @endphp
{{ mb_strtoupper(mb_substr($contract->child->first_name, 0, 1)) }} {{ mb_strtoupper(mb_substr($contract->child->last_name, 0, 1)) }} {{ $contract->child->first_name }} {{ $contract->child->last_name }} {{ $contract->child->family?->name }} · {{ $contract->schedules->count() }} jour(s) · {{ number_format($weeklyHours, 1, ',', ' ') }} h/semaine @foreach($contract->schedules as $schedule) {{ mb_substr($weekdayNames[$schedule->weekday], 0, 2) }} @endforeach {{ $contract->start_date->format('d/m/Y') }} @if($contract->end_date) → {{ $contract->end_date->format('d/m/Y') }} @endif {{ $statusLabels[$contract->status] }}
Horaires réservés
@foreach($contract->schedules as $schedule)

{{ $weekdayNames[$schedule->weekday] }} {{ substr($schedule->arrival_time, 0, 5) }} – {{ substr($schedule->departure_time, 0, 5) }}

@endforeach
Sections dans le temps
@foreach($contract->sectionAssignments as $assignment)

{{ $assignment->section->name }} du {{ $assignment->start_date->format('d/m/Y') }} @if($assignment->end_date) au {{ $assignment->end_date->format('d/m/Y') }} @endif

@endforeach
Congés prévus {{ number_format($contract->annual_child_leave_days, 1, ',', ' ') }} jours/an
Simuler ce contrat
@php $contractPayload = [ 'id' => $contract->id, 'child_id' => $contract->child_id, 'child_name' => $contract->child->first_name . ' ' . $contract->child->last_name, 'start_date' => $contract->start_date->format('Y-m-d'), 'end_date' => $contract->end_date ? $contract->end_date->format('Y-m-d') : null, 'status' => $contract->status, 'annual_child_leave_days' => $contract->annual_child_leave_days, 'notes' => $contract->notes, 'schedules' => $contract->schedules ->map(function ($row) { return [ 'weekday' => $row->weekday, 'arrival_time' => substr( $row->arrival_time, 0, 5 ), 'departure_time' => substr( $row->departure_time, 0, 5 ), ]; }) ->values() ->all(), 'assignments' => $contract->sectionAssignments ->map(function ($row) { return [ 'section_id' => $row->section_id, 'start_date' => $row->start_date ->format('Y-m-d'), 'end_date' => $row->end_date ? $row->end_date ->format('Y-m-d') : null, ]; }) ->values() ->all(), ]; @endphp
@empty
Aucun contrat ne correspond à ce filtre.
@endforelse
@if($contracts->hasPages())
{{ $contracts->links('vendor.pagination.ribambin') }}
@endif
@csrf
CONTRAT ENFANT

Nouveau contrat

Les horaires sont définis séparément pour chaque jour réservé.

Jours et horaires réservés

Coche uniquement les jours prévus au contrat.

@foreach($weekdayNames as $weekday => $dayName)
@endforeach

Affectations de section

Ajoute une nouvelle période lorsque l’enfant change de section.

@endsection