@include('admin.booking.includes.styles.ticket') @php if ($editedFlightDetails) { $editedFlightDetails = json_decode($editedFlightDetails); $editedBookingDetails = json_decode($editedFlightDetails[0]->booking_details); $userDetails = $editedBookingDetails->booking_details->userDetails ?? $editedBookingDetails->userDetails; $flightDetails = $editedBookingDetails->booking_details->flightDetails->airlines[0]->flights ?? $editedBookingDetails->flightDetails->airlines[0]->flights; $editedflightInfo = $editedBookingDetails->booking_details->flightDetails->airlines ?? $editedBookingDetails->flightDetails->airlines; $passengerDetails = $editedBookingDetails->booking_details->passengerDetails ?? $editedBookingDetails->passengerDetails; $paymentDetails = $editedBookingDetails->booking_details->processedPrice ?? $editedBookingDetails->processedPrice; $segments = $flightDetails[0]->segments ?? ''; $bookingDetails = json_decode($bookingDetail->booking_details); $additionalBookingData = $additionalBookingDetails; $additionalBookingDetails = json_decode($additionalBookingDetails->booking_details ?? '{}'); $seatDetails = $bookingDetails->booking_details->flightDetails->seatDetails->seatDetails ?? ($additionalBookingDetails->flightDetails->seatDetails ?? ''); $originalFlightDetails = $bookingDetails->booking_details->flightDetails ?? ($additionalBookingDetails->flightDetails ?? ''); $originalFlightInfo = $originalFlightDetails->airlines ?? []; $brandedFares = $bookingDetails->booking_details->flightDetails->brandedFaresBySegment ?? ($additionalBookingDetails->flightDetails->brandedFaresBySegment ?? ''); $bagDetails = array($bookingDetails->booking_details->flightDetails->additionalDetails->addBags ?? '') ?? ($additionalBookingDetails->flightDetails->additionalDetails->addBags ?? ''); // Additional Booking Details Response for GDS and Airline PNR Details $serviceProviderResponse = json_decode($additionalBookingData->service_provider_booking_response ?? '{}', true); $airlinePnr = $gdsPnr = []; if (!empty($serviceProviderResponse) && isset($serviceProviderResponse['data']['associatedRecords'])) { $associatedRecords = $serviceProviderResponse['data']['associatedRecords']; foreach ($associatedRecords as $record) { if ($record['originSystemCode'] === 'GDS') { $gdsPnr[] = $record['reference']; } else { $airlinePnr[] = $record['reference']; } } } $searchDetails = $editedBookingDetails->booking_details->searchDetails ?? ($editedBookingDetails->searchDetails ?? []); $airlineList = $searchDetails->airlineList ?? []; } @endphp

{{ $invoiceSettings->title_en ?? 'Rehlte For Tourism LLC' }}

Address: {{ $invoiceSettings->address_en ?? 'Abu Bakr Siddiq Road, Al Nahdah District, Buraydah, Saudi Arabia 52389' }}

Country: {{ $invoiceSettings->city_en ?? 'KSA' }}

Email:{{ $invoiceSettings->email ?? 'support@rehlte.com' }}

Flight

Ticket

@php $flightIcon = << SVG; @endphp
@php $segmentsCollection = collect($segments); $firstSegment = $segmentsCollection->first(); $lastSegment = $segmentsCollection->last(); @endphp

{{$firstSegment->departureAirportData->city_name ?? getCityNameByAirportCode($firstSegment->departureAirportData->code) ?? ' '}} {!! $flightIcon !!} {{$lastSegment->arrivalAirportData->city_name ?? getCityNameByAirportCode($lastSegment->arrivalAirportData->code) ?? ' '}}

@php if ($bookingDetail->booking_status == 'processing') { $style = '#09496D'; } elseif ($bookingDetail->booking_status == 'confirmed') { $style = 'green'; } elseif ($bookingDetail->booking_status == 'cancelled' || $bookingDetail->booking_status == 'failed') { $style = 'red'; } else{ $style = 'orange'; } @endphp

Booking Ticket: {{ $bookingDetail->booking_type }}:

Booking ID / Rehlte ID: {{ $bookingDetail->booking_ref ?? ''}}

Airline Reference (PNR): {{ !empty($airlinePnr) ? implode(',', $airlinePnr) : (!empty($gdsPnr) ? implode(',', $gdsPnr) : '') }}

@if ($bookingDetail?->customer_language_code == App\Enums\Locale::English->value)

Booking Date: {{\Carbon\Carbon::parse($bookingDetail->created_at)->format('d-m-Y') ?? ''}}

@else

Booking Date: {{Carbon\Carbon::parse($bookingDetail->created_at)->format('Y-m-d') ?? ''}}

@endif

Departure from {{$firstSegment->departureAirportData->city_name ?? getCityNameByAirportCode($firstSegment->departureAirportData->code) ?? ' ' }} to {{$lastSegment->arrivalAirportData->city_name ?? getCityNameByAirportCode($lastSegment->arrivalAirportData->code) ?? ' ' }}

Class: {{$flightDetails[0]->segments[0]->segmentFare->cabin ?? ''}}


@if($editedFlightDetails && !empty($editedFlightDetails->flight_details)) @php $departureTime = str_replace("T", " ", $segments->departure->at); $arrivalTime = str_replace("T", " ", $segments->arrival->at); $departure = new \DateTime($departureTime); $arrival = new \DateTime($arrivalTime); $interval = $departure->diff($arrival); $formattedDeparture = $departure->format('D d M') ?? ' '; $formattedArrival = $arrival->format('D d M') ?? ' '; @endphp @if($segments->numberOfStops == 0) @php $numberOfStops = 'Non-Stop'; @endphp @endif
Departure Flight
{{ isset($segments->airlineData) ? $segments->airlineData->name: '' }}
{{ isset($segments->airlineData) && isset($segments->airlineData->name) ? $segments->airlineData->name : ' ' }}
{{ isset($segments->aircraftData) && isset($segments->aircraftData->name) ? $segments->aircraftData->name : ' ' }}
Flight: {{ $segments->carrierCode ?? ' ' }}, {{ isset($segments->aircraft) && isset($segments->aircraft->code) ? $segments->aircraft->code : ' ' }}
{{ date('H:i', strtotime(str_replace("T", " ", $segments->departure->at))) }}
{{$segments->departure->iataCode}}
{{$segments->departureAirportData->city_name ?? (getCityNameByAirportCode($segments->departureAirportData->code) ?? '') }},{{$segments->departureAirportData->country_name ?? ''}}
{{$formattedDeparture}}
Terminal {{$segments->departure->terminal ?? ' '}}
{{ $interval->format('%h hours %i minutes') }}
{{ $numberOfStops }}
{{ date('H:i', strtotime(str_replace("T", " ", $segments->arrival->at))) }}
{{$segments->arrival->iataCode}}
{{$segments->arrivalAirportData->city_name ?? (getCityNameByAirportCode($segments->arrivalAirportData->code) ?? '')}},{{$segments->arrivalAirportData->country_name ?? ' '}}
{{$formattedArrival}}
Terminal {{$segments->arrival->terminal ?? ' '}}
@else @php $i = 0; @endphp @foreach ($editedflightInfo as $airline) @foreach ($airline->flights ?? [] as $flight) @php $segments = $flight->segments ?? []; $numberOfStops = count($segments) - 1; $firstSegment = $segments[0] ?? null; $lastSegment = $segments[$numberOfStops] ?? null; $departureDateTime = $firstSegment ? new \DateTime($firstSegment->departureDate ?? '') : null; $arrivalDateTime = $lastSegment ? new \DateTime($lastSegment->arrivalDate ?? '') : null; $totalDuration = ($departureDateTime && $arrivalDateTime) ? $departureDateTime->diff($arrivalDateTime) : null; @endphp @if ($firstSegment && $lastSegment) @if($bookingDetail?->additional_details == 'multi-city') @else @endif @foreach ($segments as $sIndex => $segment) @php $departureDateTime = isset($segment->departureDate) ? new \DateTime($segment->departureDate) : null; $arrivalDateTime = isset($segment->arrivalDate) ? new \DateTime($segment->arrivalDate) : null; $carrierCode = $segment->carrierCode ?? ''; $operatedByCode = $segment->operating->carrierCode ?? ''; $airlineMap = collect($airlineList)->keyBy('code'); $operatedByAirline = $operatedByCode ? ($airlineMap[$operatedByCode] ?? null) : null; @endphp {{-- Show layover info between segments --}} @if ($sIndex < count($segments) - 1) @php $nextSegment=$segments[$sIndex + 1]; $layoverArrival=$arrivalDateTime; $nextDeparture=isset($nextSegment->departureDate) ? new \DateTime($nextSegment->departureDate) : null; $layoverDuration = ($layoverArrival && $nextDeparture) ? $layoverArrival->diff($nextDeparture) : null; @endphp @endif @endforeach
{{ 'Departure Flight' }} ({{ $numberOfStops > 0 ? $numberOfStops . ' Stop' . ($numberOfStops > 1 ? 's' : '') : 'Non-Stop' }}) {{ $i % 2 == 0 ? 'Departure Flight' : 'Return Flight' }} ({{ $numberOfStops > 0 ? $numberOfStops . ' Stop' . ($numberOfStops > 1 ? 's' : '') : 'Non-Stop' }})
@if ($carrierCode != $operatedByCode && !empty($operatedByAirline->logo)) {{ $operatedByAirline->name }} @endif {{ $segment->airlineData->name ?? '' }}
{{ $segment->airlineData->name ?? '' }}
{{ $segment->aircraftData->name ?? '' }}
@if ($carrierCode != $operatedByCode && !empty($operatedByAirline->logo))
{{ $operatedByAirline->name ? ' Operated By '. $operatedByAirline->name : '' }}
@endif
{{ $departureDateTime ? $departureDateTime->format('H:i') : '' }}
@php $hour = isset($departureDateTime) ? (int) $departureDateTime->format('H') : null; $iconHtml = ''; // fallback icon if (!is_null($hour)) { if ($hour >= 5 && $hour < 12) { $iconHtml='' ; // Morning } elseif ($hour>= 12 && $hour < 17) { $iconHtml='' ; // Afternoon } elseif ($hour>= 17 && $hour < 21) { $iconHtml='' ; // Evening } else { $iconHtml='' ; // Night } } @endphp
{!! $iconHtml !!} {{ $segment->departureAirportData->iataCode ?? '' }}
{{ $segment->departureAirportData->city_name ?? (getCityNameByAirportCode($segment->departureAirportData->code) ?? '') }}, {{ $segment->departureAirportData->country_name ?? (getCountryNameByAirportCode($segment->departureAirportData->code) ?? '') }}
{{ $departureDateTime ? $departureDateTime->format('D d M') : '' }}
Terminal {{ $segment->departure->terminal ?? '-' }}
{!! $flightIcon !!}
{{ $segment->durationText ?? '-' }}
{{ $arrivalDateTime ? $arrivalDateTime->format('H:i') : '' }}
@php $hour = isset($arrivalDateTime) ? (int) $arrivalDateTime->format('H') : null; $iconHtml = ''; // fallback icon if (!is_null($hour)) { if ($hour >= 5 && $hour < 12) { $iconHtml='' ; // Morning } elseif ($hour>= 12 && $hour < 17) { $iconHtml='' ; // Afternoon } elseif ($hour>= 17 && $hour < 21) { $iconHtml='' ; // Evening } else { $iconHtml='' ; // Night } } @endphp
{!! $iconHtml !!} {{ $segment->arrivalAirportData->iataCode ?? '' }}
{{ $segment->arrivalAirportData->city_name ?? (getCityNameByAirportCode($segment->arrivalAirportData->code) ?? '') }}, {{ $segment->arrivalAirportData->country_name ?? (getCountryNameByAirportCode($segment->arrivalAirportData->code) ?? '') }}
{{ $arrivalDateTime ? $arrivalDateTime->format('D d M') : '' }}
Terminal {{ $segment->arrival->terminal ?? '-' }}
Layover at {{ $segment->arrivalAirportData->city_name ?? (getCityNameByAirportCode($segment->arrivalAirportData->code) ?? '') }}, {{ $segment->arrivalAirportData->country_name ?? (getCountryNameByAirportCode($segment->arrivalAirportData->code) ?? '') }} @if ($layoverDuration) - {{ $layoverDuration->format('%h hrs %i mins') }} @endif
@php $i++; @endphp @endif @endforeach @endforeach @endif

Traveller Details


@if (!empty($passengerDetails)) @php $brandedLookup = []; if (!empty($brandedFares)) { foreach ($brandedFares as $segmentGroup) { foreach ($segmentGroup as $branded) { if (isset($branded->segmentId)) { $brandedLookup[$branded->segmentId] = $branded; } } } } @endphp @foreach ($passengerDetails as $pkey => $pvalue)
{{ ucfirst($pvalue->title ?? '') }} {{ ucfirst($pvalue->first_name ?? '') }} {{ $pvalue->second_name ?? '' }} {{ ucfirst($pvalue->last_name ?? '') }} @isset($pvalue->traveler_type) ({{ ucfirst($pvalue->traveler_type ?? '') }}) @endisset
@foreach ($editedflightInfo as $index => $directionInfo) @php $flights = is_array($directionInfo->flights) ? $directionInfo->flights : [$directionInfo->flights]; $directionInfo->flights; $segments = $flight->segments ?? []; $branded = $brandedFares[$index] ?? null; $seat = []; if (is_object($seatDetails) && property_exists($seatDetails, 'status') && $seatDetails->status) { // Case 1: object with nested seatDetails $seatArray = $seatDetails->seatDetails->seatDetails ?? []; $seat = $seatArray[$index] ?? []; } elseif (is_array($seatDetails)) { // Case 2 or 3: array of arrays or array of objects if (isset($seatDetails[$index])) { // Check if it's a nested array (case 2) if (is_array($seatDetails[$index]) && isset($seatDetails[$index][0])) { $seat = $seatDetails[$index][0]; } else { // Flat array of objects (case 3) $seat = $seatDetails[$index]; } } } if($bagDetails){ if( isset($bagDetails) ){ $bag = $bagDetails[0] ?? []; } else{ $bag = []; } } else{ $bag = []; } $stopCount = count($segments) - 1; @endphp @foreach ($flights as $fIndex => $flight) @php $segments = $flight->segments ?? []; $stopCount = count($segments) - 1; @endphp @if ($flight)
Trip {{ $loop->iteration }}: {{ $flight->departureAirport ?? ' ' }} - {{ $flight->arrivalAirport ?? ' ' }} @if ($stopCount > 0) ({{ $stopCount }} Stop{{ $stopCount > 1 ? 's' : '' }}) @else (Non-stop) @endif
@foreach ($segments as $skey => $seg) @php // PNR $pnr = '-'; if (!empty($airlinePnr) && is_array($airlinePnr)) { if (count($airlinePnr) <= 1) { $pnr=$airlinePnr[0] ?? '-' ; } else { $pnr=$airlinePnr[$index] ?? '-' ; } $pnr=trim(str_replace(['PNR', 'pnr' ], '' , $pnr)); } // Seat //$seatNumber=$seat->ticket_details->seat_number ?? ' '; $seatNumber = '-'; $travelerId = (string) ($pkey + 1); // Match seatDetails travelerId to passenger index + 1 foreach ($seatDetails as $seatItem) { if ( isset($seatItem->segmentId) && isset($seatItem->travelerId) && $seatItem->segmentId == $seg->id && $seatItem->travelerId == $travelerId && isset($seatItem->ticket_details->seat_number) ) { $seatNumber = $seatItem->ticket_details->seat_number; break; } } // Extra Baggage $extraBaggage = 'No Extra Baggage'; $icon = ''; if (!empty($bag) && !empty($bag->selectedBagDetails)) { foreach ($bag->selectedBagDetails as $bagDetail) { if ( isset($bagDetail->segmentId, $bagDetail->travelerId, $bagDetail->bag->quantity) && $bagDetail->segmentId == $seg->id && $bagDetail->travelerId == $pkey ) { $quantity = $bagDetail->bag->quantity; if ($quantity > 0) { $icon = ''; $extraBaggage = $quantity . ' Piece' . ($quantity > 1 ? 's' : ''); } break; } } } // Baggage $branded = $brandedLookup[$seg->id] ?? null; $checkedBaggage = $branded->checkedBaggage[0] ?? null; $cabinBaggage = $branded->cabinBaggage ?? null; $checkedbaggageDesc = $checkedBaggage->description_en ?? ' '; $checkedBaggageIcon = !empty($checkedBaggage->status) ? '' : ''; if (!$checkedBaggage) { $checkedbaggageDesc = ' '; $checkedBaggageIcon = ''; } $cabinbaggageDesc = $cabinBaggage->description_en ?? ' '; $cabinbaggageIcon = !empty($cabinBaggage->status) ? '' : ''; if (!$cabinBaggage) { $cabinbaggageDesc = ' '; $cabinbaggageIcon = ''; } @endphp @endforeach
Segment E-Ticket No. Airline PNR Seat No. Baggage Allowance Cabin Baggage Extra Baggage
{{ $seg->departure->iataCode ?? ' ' }} - {{ $seg->arrival->iataCode ?? ' ' }} {{ $bookingDetail->ticket_numbers ?? '-' }} {{ $seg->airlinePNR ?? (!empty($gdsPnr) ? implode(',', $gdsPnr) : '') }} {{ $seatNumber }} {!! $checkedBaggageIcon !!} {{ $checkedbaggageDesc ?? '' }} {!! $cabinbaggageIcon ?? '' !!} {{ $cabinbaggageDesc ?? '' }} {!! $icon !!} {{ $extraBaggage ?? 'Nil' }}
Special Request: {{ $segments[0]->segmentFare->specialRequest ?? 'No Special Request' }}
@endif @endforeach @endforeach
@endforeach @endif

All Fees are applicable up to 48H before the Outbound Flight departure Time. Additional Fees may apply after that.

Useful info:

@if($pageDetails)

{!! $pageDetails->page_content !!}

@endif

Contact us: {{ $invoiceSettings ? ($invoiceSettings?->phone_code . " " . $invoiceSettings?->phone_no) : "+966 920001818" }}

Whatsapp us: {{ $invoiceSettings ? ($invoiceSettings?->phone_code . " " . $invoiceSettings?->phone_no) : "+966 920001818" }}