@php
$serviceProviderResponse = $additionalBookingDetails->service_provider_booking_response ?? '{}';
$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'];
}
}
}
@endphp
{{--
--}}
{{--
--}}
@php
$bookingFrom = '';
if(isset($additional_details->booking_from)){
$bookingVia = $additional_details->booking_from;
if($bookingVia == 'web'){
$bookingFrom = 'B2C Desktop';
} elseif($bookingVia == 'b2c_mobile_browser'){
$bookingFrom = 'B2C Mobile Browser';
} elseif($bookingVia == 'b2c_mobile_app'){
$bookingFrom = 'B2C Mobile App';
} else{
$bookingFrom = '';
}
}
@endphp
@php
$flightInfo = $flight_details;
$passengerDetails = $passenger_details;
$paymentDetails = $processed_price;
$billingDetails = $billing_details;
$originalBookingDetail = json_decode($additional_details->booking_details) ?? new stdClass();
$existingBookingFullData = json_decode($existingBookingDetails->booking_details) ?? new stdClass();
$existingFlightDetails = $existingBookingFullData->flightDetails ?? new stdClass();
$existingAirlineDetails = $existingFlightDetails->airlines ?? [];
$cancellationPolicy = $originalBookingDetail->booking_details->cancellationPolicy ?? [];
@endphp
Flight Details
@php $i = 0; @endphp
@foreach ($existingAirlineDetails as $airline)
@foreach ($airline->flights as $flight)
@php
$segments = $flight->segments;
$numberOfStops = count($segments) - 1;
$firstSegment = $segments[0];
$lastSegment = $segments[count($segments) - 1];
$departureDateTime = new \DateTime(str_replace("T", " ", $firstSegment->departureDate));
$arrivalDateTime = new \DateTime(str_replace("T", " ", $lastSegment->arrivalDate));
@endphp
|
{{ $i % 2 == 0 ? 'Departure Flight' : 'Return Flight' }}
({{ $numberOfStops > 0 ? $numberOfStops . ' Stop' . ($numberOfStops > 1 ? 's' : '') : 'Non-Stop' }})
|
@foreach ($segments as $index => $segment)
@php
$departure = new \DateTime(str_replace("T", " ", $segment->departureDate));
$arrival = new \DateTime(str_replace("T", " ", $segment->arrivalDate));
@endphp
{{ $segment->airlineData->name ?? '' }}
{{ $segment->aircraftData->name ?? '' }}
Flight: {{ $segment->carrierCode ?? '' }} {{ $segment->number ?? '' }}
|
{{ $departure->format('H:i') }}
{{ $segment->departure->iataCode ?? '' }}
{{ $segment->departureAirportData->city_name ?? '' }},
{{ $segment->departureAirportData->country_name ?? '' }}
{{ $departure->format('D, d M Y') }}
Terminal: {{ $segment->departure->terminal ?? '-' }}
|
Segment {{ $index + 1 }}
{{ $segment->durationText ?? '' }}
|
{{ $arrival->format('H:i') }}
{{ $segment->arrival->iataCode ?? '' }}
{{ $segment->arrivalAirportData->city_name ?? '' }},
{{ $segment->arrivalAirportData->country_name ?? '' }}
{{ $arrival->format('D, d M Y') }}
Terminal: {{ $segment->arrival->terminal ?? '-' }}
|
{{-- Layover Info --}}
@if ($index < count($segments) - 1)
@php
$nextDeparture=new \DateTime(str_replace("T", " " , $segments[$index + 1]->departureDate));
$layoverDuration = $arrival->diff($nextDeparture);
@endphp
|
Layover at {{ $segment->arrivalAirportData->city_name }},
{{ $segment->arrivalAirportData->country_name }} —
{{ $layoverDuration->format('%h hrs %i mins') }}
|
@endif
@endforeach
@php $i++; @endphp
@endforeach
@endforeach
@foreach ($existingAirlineDetails as $airline)
@foreach ($airline->flights as $flightIndex => $flight)
@php
$segmentCounter = 1;
$segments = $flight->segments;
@endphp
@foreach ($segments as $index => $segment)
@php
$departureTime = new \DateTime(str_replace("T", " ", $segment->departureDate));
$arrivalTime = new \DateTime(str_replace("T", " ", $segment->arrivalDate));
$departure = $segment->departureDate;
$arrival =$segment->arrivalDate;
@endphp
Flight Segment {{ $segmentCounter }}
{{-- Airline Info --}}
Airline Information
{{-- Departure Info --}}
Departure Details
{{-- Duration Info --}}
Duration
{{-- Arrival Info --}}
Arrival Details
{{-- Optional Layover Note --}}
@if ($index < count($segments) - 1)
@php
$nextDeparture=new \DateTime(str_replace("T", " " , $segments[$index + 1]->departureDate));
$layoverDuration = $arrivalTime->diff($nextDeparture);
@endphp
Layover: {{ $segment->arrivalAirportData->city_name ?? '' }}, {{ $segment->arrivalAirportData->country_name ?? '' }} — {{ $layoverDuration->format('%h hrs %i mins') }}
@endif
@php $segmentCounter++; @endphp
@endforeach
@endforeach
@endforeach
@php
$a = $ch = $in = 0;
foreach ($passengerDetails as $passengerGroup) {
if (isset($passengerGroup['traveler_type'])) {
switch (strtolower($passengerGroup['traveler_type'])) {
case 'adult':
$a++;
break;
case 'child':
case 'children':
$ch++;
break;
case 'infant':
$in++;
break;
}
}
}
@endphp
Passenger Details
Travellers: {{$a}} Adult , {{$ch}} Child , {{$in}} Infant
@php $i = 1; @endphp
@foreach($passengerDetails as $passengerIndex => $passenger)
Passenger {{ $i }}
@foreach($passenger as $key => $value)
@if(!in_array($key, ['id', 'country_id', 'nationality_id','passport_nationality', 'passport_issued_country']))
@else
@endif
@endforeach
@php $i++; @endphp
@endforeach
@php
$baggageDetails = $existingBookingFullData->flightDetails->additionalDetails->addBags->selectedBagDetails ?? [];
@endphp
@if (is_array($baggageDetails) && count($baggageDetails) > 0)
@foreach ($baggageDetails as $index => $baggage)
@php
$segmentId = $baggage->segmentId ?? 'N/A';
$travelerId = $baggage->travelerId ?? 'N/A';
$bagName = $baggage->bag->name ?? 'N/A';
$bagQty = $baggage->bag->quantity ?? 'N/A';
$bagPrice = $baggage->bag->price->amount ?? 'N/A';
$currency = $baggage->bag->price->currencyCode ?? '';
$segmentIds = implode(', ', $baggage->bag->segmentIds ?? []);
$travelerIds = implode(', ', $baggage->bag->travelerIds ?? []);
@endphp
Flight Segment {{$index + 1}}
@endforeach
@else
No Baggage Details Available
@endif
@php
// Normalize seatDetails to a flat array of objects
$seatDetailsRaw = $existingBookingFullData->flightDetails->seatDetails->seatDetails ?? [];
$seatDetails = [];
if (is_array($seatDetailsRaw)) {
foreach ($seatDetailsRaw as $item) {
// Case: [ {object} ] — unwrap single-item array
if (is_array($item) && count($item) === 1 && isset($item[0]) && is_object($item[0])) {
$seatDetails[] = $item[0];
}
// Case: array of arrays or array of objects
elseif (is_array($item)) {
foreach ($item as $inner) {
$seatDetails[] = is_object($inner) ? $inner : (object) $inner;
}
}
// Case: already an object
elseif (is_object($item)) {
$seatDetails[] = $item;
}
}
}
// Map segment info by segmentId
$airlinesData = $existingBookingDetails->airlines ?? [];
$segmentsMap = [];
foreach ($airlinesData as $airlineGroup) {
foreach ($airlineGroup->flights ?? [] as $flight) {
foreach ($flight->segments ?? [] as $segment) {
$segmentsMap[$segment->id] = $segment;
}
}
}
$renderedSegments = [];
@endphp
@if($seatDetails)
@foreach ($seatDetails as $index => $seat)
@if (!blank((array) $seat))
@php
$segmentId = $seat->segmentId ?? '';
$segment = $segmentsMap[$segmentId] ?? null;
@endphp
@if ($segment && !in_array($segmentId, $renderedSegments))
{{ $segment->carrierCode }} {{ $segment->number }}
({{ $segment->departure->iataCode }} → {{ $segment->arrival->iataCode }})
{{ $segment->airlineData?->name ?? 'N/A' }}
Departure: {{ \Carbon\Carbon::parse($segment->departure->at)->format('d M Y H:i A') }}
Arrival: {{ \Carbon\Carbon::parse($segment->arrival->at)->format('d M Y H:i A') }}
Aircraft: {{ $segment->aircraftData->name ?? 'N/A' }}
@php $renderedSegments[] = $segmentId; @endphp
@endif
@endif
@endforeach
@else
No Seat Details Available
@endif
@php
$flightInfoDetails = $existingBookingFullData->flightDetails->flightInfo ?? [];
@endphp
@if (!empty($flightInfoDetails))
@foreach ($flightInfoDetails as $flightIndex => $flightDetail)
@if (!empty($flightDetail->travelerPricings))
@foreach ($flightDetail->travelerPricings as $pricingIndex => $pricing)
Traveler {{ $pricing->travelerId ?? ($pricingIndex + 1) }} - {{ $pricing->travelerType ?? 'N/A' }}
{{-- Price Breakdown --}}
@if(!empty($pricing->price->taxes))
@foreach($pricing->price->taxes as $key => $tax)
@endforeach
@endif
@if(isset($pricing->price->serviceFeeType))
@endif
@endforeach
@endif
@endforeach
@endif
Payment Details
@php
if(!empty($search_details) && $search_details['searchType'] == 'round-trip')
{
$totalPrice = $paymentDetails['basePriceRemovedVAT'] ?? 0;
}
else{
$totalPrice = $paymentDetails['totalPrice'] ?? 0;
}
@endphp
@php
$originalFlightDetails = $existingBookingFullData->flightDetails->flightInfo[0] ?? '';
$travellerPricings = $originalFlightDetails->travelerPricings ?? '';
@endphp
{{-- Taxes Section --}}
@if(!empty($travellerPricings->price->taxes))
@foreach($travellerPricings->price->taxes as $index => $tax)
@endforeach
@endif
{{--
--}}
@php
$payment_status = '';
if($additional_details->booking_status && $additional_details->booking_status == 'confirmed')
{
$payment_status = "Success";
}
else
{
$payment_status = "Failed";
}
@endphp
Note * Grand Total = Base Fare + Service Fee + Total Tax Amount + Baggage Amount + Seat Amount + Addon Amount - ( Coupon Amount + Wallet Amount + Redeem Amount)
Billing Details
@foreach($billingDetails as $index => $value)
@if(ucwords($index) !== 'State_id' && ucwords($index) !== 'Country_id')
@endif
@endforeach
Cancellation Policies
@php
$cancellationPolicies = $cancellationPolicy;
@endphp
@if(isset($cancellationPolicy->fareBasis))
@foreach($cancellationPolicies as $fare)
Fare: {{ $fare->fareBasis ?? 'N/A' }} - {{ $fare->fareName ?? '' }}
| Type |
Before Departure |
No Show |
After Departure |
@foreach(['changes' => 'Change / Amend', 'cancellations' => 'Cancellation'] as $key => $label)
@php
$pen = $fare->penalties->$key ?? null;
@endphp
| {{ $label }} |
@foreach(['beforeDeparture', 'noShow', 'afterDeparture'] as $field)
@php
$val = $pen->$field ?? null;
@endphp
@if(is_object($val))
{{ $val->amount ?? '-' }} {{ $val->currency ?? '' }}
@else
{{ $val ?? ($key === 'changes' ? 'Non-Amendable' : 'Non-Refundable') }}
@endif
|
@endforeach
@endforeach
@if(isset($fare->originalText))
{{ $fare?->originalText }}
@endif
@endforeach
@else
No Farebasis found!..
@endif