@extends('layouts.app') @section('styles') @endsection @section('content') @php // Calculer le nombre de nuits $nights = 0; if ($reservation->date_arrive && $reservation->date_depart) { try { $nights = \Carbon\Carbon::parse($reservation->date_arrive) ->diffInDays(\Carbon\Carbon::parse($reservation->date_depart)); } catch (Exception $e) { $nights = 0; } } // Fonction pour gérer la pluralisation selon la langue function getPluralizedText($count, $type, $lang = 'ar') { if ($lang === 'ar') { if ($type === 'nights') { if ($count === 1) return 'ليلة'; if ($count === 2) return 'ليلتين'; if ($count >= 3 && $count <= 10) return 'ليالي'; return 'ليلة'; } if ($type === 'persons') { if ($count === 1) return 'شخص'; if ($count === 2) return 'شخصين'; if ($count >= 3 && $count <= 10) return 'أشخاص'; return 'شخص'; } } else if ($lang === 'fr') { if ($type === 'nights') { return $count === 1 ? 'nuit' : 'nuits'; } if ($type === 'persons') { return $count === 1 ? 'personne' : 'personnes'; } } else { if ($type === 'nights') { return $count === 1 ? 'night' : 'nights'; } if ($type === 'persons') { return $count === 1 ? 'person' : 'persons'; } } return ''; } // Déterminer la langue courante $currentLang = app()->getLocale(); // Récupérer les données de restauration par jour $restaurationsJours = collect(); if ($reservation->restaurationsJours && $reservation->restaurationsJours->count() > 0) { $restaurationsJours = $reservation->restaurationsJours->groupBy('date_service'); } // Récupérer les données de café par jour $cafeJours = collect(); if ($reservation->cafes && $reservation->cafes->count() > 0) { $cafeJours = $reservation->cafes->keyBy('date_service'); } // Générer la liste des dates du séjour $datesSejour = []; if ($reservation->date_arrive && $reservation->date_depart) { $start = \Carbon\Carbon::parse($reservation->date_arrive); $end = \Carbon\Carbon::parse($reservation->date_depart); for ($i = 0; $i < $nights; $i++) { $currentDate = clone $start; $currentDate->addDays($i); $datesSejour[] = $currentDate->format('Y-m-d'); } } // Vérifier s'il y a des données de restauration $hasRestoData = $restaurationsJours->isNotEmpty(); // Vérifier s'il y a des données de café $hasCafeData = $cafeJours->isNotEmpty() && $cafeJours->sum('quantite') > 0; @endphp

{{ __('site.reservation.reservation_detail_title', ['reference' => $reservation->id_reserv ?? 'N/A']) }}

{{ __('site.reservation.personal_info') }}

{{ $reservation->nom_prenom ?? ($reservation->user->nom_prenom ?? __('site.reservation.no_value')) }}
{{ $reservation->email ?? ($reservation->user->email ?? __('site.reservation.no_value')) }}
{{ $reservation->user && $reservation->user->id_type_identite == 1 ? __('site.reservation.nationality.tn') : ($reservation->user && $reservation->user->id_type_identite == 2 ? __('site.reservation.nationality.foreigner') : __('site.reservation.nationality.unspecified')) }}
{{ $reservation->telephone ?? ($reservation->user->tel ?? __('site.reservation.no_value')) }}
{{ $reservation->adresse ?? ($reservation->user->adresse ?? __('site.reservation.no_value')) }}
@if($reservation->type_wafd == 'groupe') {{ __('site.reservation.label_group_wafd') }} @elseif($reservation->type_wafd == 'single') {{ __('site.reservation.label_single_wafd') }} @else {{ __('site.reservation.no_value') }} @endif

{{ __('site.reservation.stay_dates') }}

{{ $reservation->date_arrive ? \Carbon\Carbon::parse($reservation->date_arrive)->format('d/m/Y') : __('site.reservation.no_value') }}
{{ $reservation->date_depart ? \Carbon\Carbon::parse($reservation->date_depart)->format('d/m/Y') : __('site.reservation.no_value') }}
{{ $reservation->heure_arrivee ?? __('site.reservation.no_value') }}
{{ $reservation->heure_depart ?? __('site.reservation.no_value') }}
{{ $nights }} {{ getPluralizedText($nights, 'nights', $currentLang) }}

{{ __('site.reservation.persons_details') }}

{{ $reservation->nbr_h ?? 0 }}
{{ $reservation->nbr_f ?? 0 }}
{{ $reservation->nbr_personnes ?? 0 }}
@if($reservation->reservationPersons && $reservation->reservationPersons->count() > 0)
{{ __('site.reservation.details_by_type') }}
@foreach($reservation->reservationPersons as $person) @php $totalPersonnes = ($person->nbr_hommes ?? 0) + ($person->nbr_femmes ?? 0); if (!isset($person->tarif) || $person->tarif == 0) { if ($person->typeTarif) { $person->tarif = $person->typeTarif->tarif_chambre ?? 0; } } if (!isset($person->subtotal) || $person->subtotal == 0) { $person->subtotal = ($person->tarif ?? 0) * $totalPersonnes; } @endphp @endforeach
{{ __('site.reservation.type_delegation') }} {{ __('site.reservation.type_accomodation') }} {{ __('site.reservation.hommes_tarif') }} {{ __('site.reservation.femmes_tarif') }} {{ __('site.reservation.tarif_per_person') }} {{ __('site.reservation.subtotal_tarif') }} {{ __('site.reservation.total_persons') }}
@if($person->typeTarif ?? false) @if(app()->getLocale() === 'ar') {{ $person->typeTarif->type_ar ?? '' }} @elseif(app()->getLocale() === 'fr') {{ $person->typeTarif->type_fr ?? '' }} @else {{ $person->typeTarif->type_en ?? '' }} @endif @if(($person->typeTarif->type ?? '') == 'groupe') ({{ __('site.reservation.group') }}) @else ({{ __('site.reservation.individual') }}) @endif @else {{ __('site.reservation.no_value') }} @endif @if($person->accomodation_type == 'chambre') {{ __('site.reservation.accomodation.chambre') }} @elseif($person->accomodation_type == 'tente') {{ __('site.reservation.accomodation.tente') }} @else {{ __('site.reservation.accomodation.chambre') }} @endif {{ $person->nbr_hommes ?? 0 }} {{ $person->nbr_femmes ?? 0 }} {{ number_format($person->tarif ?? 0, 3) }} {{ __('site.currency') }} {{ number_format($person->subtotal ?? 0, 3) }} {{ __('site.currency') }} {{ $totalPersonnes }}
@else
{{ __('site.reservation.no_persons_details') }}
@endif

{{ __('site.reservation.label_resto_services') }}

{{ __('site.reservation.resto_calc_note') }}
@php $hasRestoData = isset($restaurationsParJour) && count($restaurationsParJour) > 0; @endphp @if($hasRestoData) @if(count($datesSejour) > 0)
@if(isset($restaurationsParJour['general']) && count($restaurationsParJour['general']) > 0)
{{ __('site.reservation.general_resto') }} {{ count($restaurationsParJour['general']) }}
@endif @foreach($datesSejour as $index => $date) @php $restosDuJour = $restaurationsParJour[$date] ?? []; $hasRestosJour = count($restosDuJour) > 0; @endphp
{{ __('site.reservation.day') }} {{ $index + 1 }} {{ \Carbon\Carbon::parse($date)->format('d/m') }} @if($hasRestosJour) {{ count($restosDuJour) }} @endif
@endforeach
@if(isset($restaurationsParJour['general']) && count($restaurationsParJour['general']) > 0)
{{ __('site.reservation.general_resto') }} {{ __('site.reservation.multiple_days') }}
@foreach($restaurationsParJour['general'] as $restoData) @php $resto = $restoData['restauration']; $tarif = $restoData['tarif']; $totalResto = $tarif * ($reservation->nbr_personnes ?? 0); $nomResto = ''; $descResto = ''; if($resto) { if(app()->getLocale() == 'ar') { $nomResto = $resto->nom_ar ?? ''; $descResto = $resto->description_ar ?? ''; } elseif(app()->getLocale() == 'fr') { $nomResto = $resto->nom_fr ?? ''; $descResto = $resto->description_fr ?? ''; } else { $nomResto = $resto->nom_en ?? ''; $descResto = $resto->description_en ?? ''; } } @endphp
{{ $nomResto ?: __('site.reservation.no_value') }}
{{ number_format($totalResto, 3) }} {{ __('site.currency') }}
@if($descResto)
{{ $descResto }}
@endif
@php $prixUnitaire = $tarif; $personsText = getPluralizedText($reservation->nbr_personnes ?? 0, 'persons', $currentLang); if ($currentLang === 'ar') { echo number_format($prixUnitaire, 3) . ' ' . __('site.currency') . ' × ' . ($reservation->nbr_personnes ?? 0) . ' ' . $personsText . ' ' . __('site.reservation.per_day'); } elseif ($currentLang === 'fr') { echo number_format($prixUnitaire, 3) . ' ' . __('site.currency') . ' × ' . ($reservation->nbr_personnes ?? 0) . ' ' . $personsText . ' ' . __('site.reservation.per_day'); } else { echo number_format($prixUnitaire, 3) . ' ' . __('site.currency') . ' × ' . ($reservation->nbr_personnes ?? 0) . ' ' . $personsText . ' ' . __('site.reservation.per_day'); } @endphp
@endforeach
@endif @foreach($datesSejour as $index => $date) @php $restosDuJour = $restaurationsParJour[$date] ?? []; $hasRestosJour = count($restosDuJour) > 0; $jourTotal = 0; if ($hasRestosJour) { foreach ($restosDuJour as $restoData) { $jourTotal += $restoData['tarif'] * ($reservation->nbr_personnes ?? 0); } } @endphp
{{ __('site.reservation.day') }} {{ $index + 1 }} {{ \Carbon\Carbon::parse($date)->format('d/m/Y') }}
@if($hasRestosJour)
{{ number_format($jourTotal, 3) }} {{ __('site.currency') }}
@endif
@if($hasRestosJour) @foreach($restosDuJour as $restoData) @php $resto = $restoData['restauration']; $tarif = $restoData['tarif']; $totalResto = $tarif * ($reservation->nbr_personnes ?? 0); $nomResto = ''; $descResto = ''; if($resto) { if(app()->getLocale() == 'ar') { $nomResto = $resto->nom_ar ?? ''; $descResto = $resto->description_ar ?? ''; } elseif(app()->getLocale() == 'fr') { $nomResto = $resto->nom_fr ?? ''; $descResto = $resto->description_fr ?? ''; } else { $nomResto = $resto->nom_en ?? ''; $descResto = $resto->description_en ?? ''; } } @endphp
{{ $nomResto ?: __('site.reservation.no_value') }}
{{ number_format($totalResto, 3) }} {{ __('site.currency') }}
@if($descResto)
{{ $descResto }}
@endif
@php $prixUnitaire = $tarif; $personsText = getPluralizedText($reservation->nbr_personnes ?? 0, 'persons', $currentLang); if ($currentLang === 'ar') { echo number_format($prixUnitaire, 3) . ' ' . __('site.currency') . ' × ' . ($reservation->nbr_personnes ?? 0) . ' ' . $personsText; } elseif ($currentLang === 'fr') { echo number_format($prixUnitaire, 3) . ' ' . __('site.currency') . ' × ' . ($reservation->nbr_personnes ?? 0) . ' ' . $personsText; } else { echo number_format($prixUnitaire, 3) . ' ' . __('site.currency') . ' × ' . ($reservation->nbr_personnes ?? 0) . ' ' . $personsText; } @endphp
@endforeach @else
{{ __('site.reservation.resto_none_selected_day') }}
@endif
@endforeach @endif @else
{{ __('site.reservation.resto_none_selected') }}
@endif

{{ __('site.reservation.pause_cafe') }}

@if($reservation->auberge && $reservation->auberge->pause_cafe && $reservation->auberge->tarif_cafe > 0)
{{ __('site.reservation.cafe_calc_note', ['price' => number_format($reservation->auberge->tarif_cafe, 3)]) }}
@php $hasCafeData = $reservation->cafes && $reservation->cafes->count() > 0; $cafeJours = $hasCafeData ? $reservation->cafes->keyBy(function($item) { return $item->date_service ? $item->date_service->format('Y-m-d') : null; }) : collect(); $totalQuantite = $hasCafeData ? $reservation->cafes->sum('quantite') : 0; $totalMontant = $hasCafeData ? $reservation->cafes->sum('total') : 0; @endphp @if($hasCafeData) @if(count($datesSejour) > 0)
{{ __('site.reservation.total_cafe_quantity') }}: {{ $totalQuantite }} {{ __('site.reservation.cups') }}
{{ __('site.reservation.total_cafe_amount') }}: {{ number_format($totalMontant, 3) }} {{ __('site.currency') }}
@foreach($datesSejour as $index => $date) @php $cafeDuJour = $cafeJours[$date] ?? null; $hasCafe = $cafeDuJour && $cafeDuJour->quantite > 0; @endphp
{{ __('site.reservation.day') }} {{ $index + 1 }} {{ \Carbon\Carbon::parse($date)->format('d/m') }} @if($hasCafe) {{ $cafeDuJour->quantite }} @endif
@endforeach
@foreach($datesSejour as $index => $date) @php $cafeDuJour = $cafeJours[$date] ?? null; $hasCafe = $cafeDuJour && $cafeDuJour->quantite > 0; $jourTotalCafe = $hasCafe ? ($cafeDuJour->total ?? 0) : 0; @endphp
{{ __('site.reservation.day') }} {{ $index + 1 }} {{ \Carbon\Carbon::parse($date)->format('d/m/Y') }}
@if($hasCafe)
{{ number_format($jourTotalCafe, 3) }} {{ __('site.currency') }}
@endif
@if($hasCafe)
{{ __('site.reservation.cafe_service') }}
{{ number_format($cafeDuJour->total, 3) }} {{ __('site.currency') }}
{{ __('site.reservation.quantity') }} {{ $cafeDuJour->quantite }} {{ __('site.reservation.cups') }}
{{ __('site.reservation.unit_price') }} {{ number_format($cafeDuJour->tarif_unitaire, 3) }} {{ __('site.currency') }}
{{ __('site.reservation.number_of_persons') }} {{ $reservation->nbr_personnes ?? 0 }}
{{ __('site.reservation.calculation_details') }}
@php $personsText = getPluralizedText($reservation->nbr_personnes ?? 0, 'persons', $currentLang); $cupsText = $cafeDuJour->quantite > 1 ? __('site.reservation.cups_plural') : __('site.reservation.cup_singular'); if ($currentLang === 'ar') { echo "
{$cafeDuJour->quantite} {$cupsText} × " . number_format($cafeDuJour->tarif_unitaire, 3) . " " . __('site.currency') . " × " . ($reservation->nbr_personnes ?? 0) . " {$personsText}
"; echo "
= " . number_format($cafeDuJour->total, 3) . " " . __('site.currency') . "
"; } elseif ($currentLang === 'fr') { echo "
{$cafeDuJour->quantite} {$cupsText} × " . number_format($cafeDuJour->tarif_unitaire, 3) . " " . __('site.currency') . " × " . ($reservation->nbr_personnes ?? 0) . " {$personsText}
"; echo "
= " . number_format($cafeDuJour->total, 3) . " " . __('site.currency') . "
"; } else { echo "
{$cafeDuJour->quantite} {$cupsText} × " . number_format($cafeDuJour->tarif_unitaire, 3) . " " . __('site.currency') . " × " . ($reservation->nbr_personnes ?? 0) . " {$personsText}
"; echo "
= " . number_format($cafeDuJour->total, 3) . " " . __('site.currency') . "
"; } @endphp
@php $pricePerPerson = $cafeDuJour->tarif_unitaire * $cafeDuJour->quantite; if ($currentLang === 'ar') { echo "لكل شخص: " . number_format($pricePerPerson, 3) . " " . __('site.currency') . ""; } elseif ($currentLang === 'fr') { echo "Par personne: " . number_format($pricePerPerson, 3) . " " . __('site.currency') . ""; } else { echo "Per person: " . number_format($pricePerPerson, 3) . " " . __('site.currency') . ""; } @endphp
{{ __('site.reservation.day_summary') }}
{{ __('site.reservation.total_cups') }} {{ __('site.reservation.unit_price') }} {{ __('site.reservation.total_persons') }} {{ __('site.reservation.day_total') }}
{{ $cafeDuJour->quantite }} {{ number_format($cafeDuJour->tarif_unitaire, 3) }} {{ __('site.currency') }} {{ $reservation->nbr_personnes ?? 0 }} {{ number_format($cafeDuJour->total, 3) }} {{ __('site.currency') }}
@else
{{ __('site.reservation.cafe_none_selected_day') }}
@endif
@endforeach @endif @else
{{ __('site.reservation.cafe_none_selected') }}
@endif @else
{{ __('site.reservation.cafe_not_available') }}
@endif

{{ __('site.reservation.label_notes') }}

{{ $reservation->remarque ?: __('site.reservation.no_notes') }}
{{ __('site.reservation.summary_title') }}
{{ __('site.reservation.summary_institution') }}: @if($reservation->auberge) {{ trans_field($reservation->auberge, 'nom') ?? $reservation->auberge->nom_ar ?? __('site.reservation.no_value') }} @else {{ __('site.reservation.no_value') }} @endif
{{ __('site.reservation.summary_nights') }}: {{ $nights }} {{ getPluralizedText($nights, 'nights', $currentLang) }}
{{ __('site.reservation.summary_capacity') }}: {{ $reservation->nbr_personnes ?? 0 }} {{ getPluralizedText($reservation->nbr_personnes ?? 0, 'persons', $currentLang) }}
@php // Calcul du total des services de restauration par jour $restoTotal = 0; if ($restaurationsJours->isNotEmpty()) { foreach ($restaurationsJours as $date => $restos) { foreach ($restos as $resto) { $restoTotal += $resto->tarif * ($reservation->nbr_personnes ?? 0); } } } // Calcul du total du café par jour $cafeTotal = 0; if ($cafeJours->isNotEmpty()) { foreach ($cafeJours as $cafe) { $cafeTotal += $cafe->total ?? 0; } } $servicesTotal = $restoTotal + $cafeTotal; @endphp
{{ __('site.reservation.summary_resto') }}: {{ number_format($restoTotal, 3) }} {{ __('site.currency') }}
{{ __('site.reservation.summary_cafe') }}: {{ number_format($cafeTotal, 3) }} {{ __('site.currency') }}
{{ __('site.reservation.summary_services') }}: {{ number_format($servicesTotal, 3) }} {{ __('site.currency') }}
{{ __('site.reservation.summary_tarif_night') }}: @php $tarifNuit = 0; if ($reservation->reservationPersons && $reservation->reservationPersons->count() > 0) { foreach ($reservation->reservationPersons as $person) { $tarifNuit += $person->subtotal ?? 0; } } if ($tarifNuit == 0 && $reservation->total_price > 0 && $nights > 0) { $tarifNuit = ($reservation->total_price - $servicesTotal) / $nights; } if ($tarifNuit < 0) $tarifNuit = 0; @endphp {{ number_format($tarifNuit, 3) }} {{ __('site.currency') }}
{{ __('site.reservation.summary_total_tarif') }}: @php $totalHebergement = $tarifNuit * $nights; @endphp {{ number_format($totalHebergement, 3) }} {{ __('site.currency') }}
{{ __('site.reservation.summary_total') }}
@php $totalFinal = $reservation->total_price ?? ($totalHebergement + $servicesTotal); @endphp {{ number_format($totalFinal, 3) }} {{ __('site.currency') }}
{{ __('site.reservation.reservation_status') }}: @php $statut = $reservation->statut?->statut_ar ?? 'في الانتظار'; $badgeClass = 'status-badge--pending'; if ($reservation->statut_id == 1) { $badgeClass = 'status-badge--success'; } elseif ($reservation->statut_id == 3) { $badgeClass = 'status-badge--danger'; } $statutLabel = __('site.reservation.status_pending'); if ($reservation->statut_id == 1) { $statutLabel = __('site.reservation.status_accepted'); } elseif ($reservation->statut_id == 3) { $statutLabel = __('site.reservation.status_refused'); } @endphp {{ $statutLabel }}
@if($reservation->statut_id == 3 && !empty($reservation->commentaire_motif))
{{ __('site.reservation.reason_rejection') }}

{{ $reservation->commentaire_motif }}

@endif @if($reservation->statut_id == 1 && $reservation->date_acceptation)
{{ __('site.reservation.acceptance_date') }}: {{ $reservation->date_acceptation }}
@endif
{{ __('site.reservation.back_to_list') }}
@endsection @section('scripts') @endsection