@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 en arabe pour les nuits function getNightsTextArabic($nights) { if ($nights === 1) { return 'ليلة'; } else if ($nights === 2) { return 'ليلتين'; } else if ($nights >= 3 && $nights <= 10) { return 'ليالي'; } else { return 'ليلة'; // Pour 11 et plus, retour à la forme singulière } } // Fonction pour gérer la pluralisation en arabe pour les personnes function getPersonsTextArabic($persons) { if ($persons === 1) { return 'شخص'; } else if ($persons === 2) { return 'شخصين'; } else if ($persons >= 3 && $persons <= 10) { return 'أشخاص'; } else { return 'شخص'; // Pour 11 et plus, retour à la forme singulière } } // 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(); @endphp

{{ __('site.reservation.reservation_detail_title', ['reference' => $reservation->id ?? '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')) }}

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

{{ $reservation->date_arrive ?? __('site.reservation.no_value') }}
{{ $reservation->date_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 {{ __('site.reservation.accomodation.chambre') }} {{ $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 $hasRestaurations = $reservation->restaurations && $reservation->restaurations->count() > 0; $nbrPersons = $reservation->nbr_personnes ?? 0; @endphp @if($hasRestaurations) @if($nights > 0 && $nbrPersons > 0)
@php $nightsText = getPluralizedText($nights, 'nights', $currentLang); $personsText = getPluralizedText($nbrPersons, 'persons', $currentLang); if ($currentLang === 'ar') { echo "الحساب: {$nbrPersons} {$personsText} × {$nights} {$nightsText}"; } elseif ($currentLang === 'fr') { echo "Calcul : {$nbrPersons} {$personsText} × {$nights} {$nightsText}"; } else { echo "Calculation: {$nbrPersons} {$personsText} × {$nights} {$nightsText}"; } @endphp
@endif @foreach($reservation->restaurations as $resto) @php $prixUnitaire = $resto->pivot->tarif ?? $resto->tarif ?? 0; $totalResto = $prixUnitaire * $nbrPersons * $nights; @endphp
{{ trans_field($resto, 'nom') ?? $resto->nom_ar ?? __('site.reservation.no_value') }}
{{ number_format($totalResto, 3) }} {{ __('site.currency') }}
@if(trans_field($resto, 'description') ?? $resto->description_ar ?? false)
{{ trans_field($resto, 'description') ?? $resto->description_ar }}
@endif
@php if ($currentLang === 'ar') { echo number_format($prixUnitaire, 3) . ' ' . __('site.currency') . ' × ' . $nbrPersons . ' ' . getPluralizedText($nbrPersons, 'persons', $currentLang) . ' × ' . $nights . ' ' . getPluralizedText($nights, 'nights', $currentLang); } elseif ($currentLang === 'fr') { echo number_format($prixUnitaire, 3) . ' ' . __('site.currency') . ' × ' . $nbrPersons . ' ' . getPluralizedText($nbrPersons, 'persons', $currentLang) . ' × ' . $nights . ' ' . getPluralizedText($nights, 'nights', $currentLang); } else { echo number_format($prixUnitaire, 3) . ' ' . __('site.currency') . ' × ' . $nbrPersons . ' ' . getPluralizedText($nbrPersons, 'persons', $currentLang) . ' × ' . $nights . ' ' . getPluralizedText($nights, 'nights', $currentLang); } @endphp
@endforeach @else
{{ __('site.reservation.resto_none_selected') }}
@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 $restoTotal = 0; if ($reservation->restaurations && $reservation->restaurations->count() > 0) { foreach ($reservation->restaurations as $resto) { $prixUnitaire = $resto->pivot->tarif ?? $resto->tarif ?? 0; $restoTotal += $prixUnitaire * ($reservation->nbr_personnes ?? 0) * $nights; } } @endphp
{{ __('site.reservation.summary_services') }}: {{ number_format($restoTotal, 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 - $restoTotal) / $nights; } if ($tarifNuit == 0 && $reservation->nbr_personnes > 0) { $prixMoyenParPersonne = 30; $tarifNuit = $reservation->nbr_personnes * $prixMoyenParPersonne; } @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 + $restoTotal); @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 ($statut === 'قبول' || $reservation->statut_id == 1) { $statutLabel = __('site.reservation.status_accepted'); } elseif ($statut === 'مرفوض' || $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