@extends('admin.layout.main') @section('title',$header['title']) @section('content')
@method('PUT') @csrf
Customer Details Flight Details Passenger Details Baggage Details Seat Details Traveller Price Details Payment Details Cancellation Policies @if($additional_details->booking_status == 'confirmed' && (now()->format('Y-m-d') <= $additional_details->booking_start_date)) Cancel Booking @endif
Customer Details
@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 @foreach ($segments as $index => $segment) @php $departure = new \DateTime(str_replace("T", " ", $segment->departureDate)); $arrival = new \DateTime(str_replace("T", " ", $segment->arrivalDate)); @endphp {{-- Layover Info --}} @if ($index < count($segments) - 1) @php $nextDeparture=new \DateTime(str_replace("T", " " , $segments[$index + 1]->departureDate)); $layoverDuration = $arrival->diff($nextDeparture); @endphp @endif @endforeach
{{ $i % 2 == 0 ? 'Departure Flight' : 'Return Flight' }} ({{ $numberOfStops > 0 ? $numberOfStops . ' Stop' . ($numberOfStops > 1 ? 's' : '') : 'Non-Stop' }})
{{ $segment->airlineData->name ?? '' }}
{{ $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 at {{ $segment->arrivalAirportData->city_name }}, {{ $segment->arrivalAirportData->country_name }} — {{ $layoverDuration->format('%h hrs %i mins') }}
@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
Baggage Details
@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
Seat Details
@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->airlineData?->name }}
{{ $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
Traveller Price Details
@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
{{--
* MarkupFee + Service Fee
--}}
@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 ?? '' }}
@foreach(['changes' => 'Change / Amend', 'cancellations' => 'Cancellation'] as $key => $label) @php $pen = $fare->penalties->$key ?? null; @endphp @foreach(['beforeDeparture', 'noShow', 'afterDeparture'] as $field) @php $val = $pen->$field ?? null; @endphp @endforeach @endforeach
Type Before Departure No Show After Departure
{{ $label }} @if(is_object($val)) {{ $val->amount ?? '-' }} {{ $val->currency ?? '' }} @else {{ $val ?? ($key === 'changes' ? 'Non-Amendable' : 'Non-Refundable') }} @endif
@if(isset($fare->originalText))

{{ $fare?->originalText }}
@endif
@endforeach @else
No Farebasis found!..
@endif
@endsection @section('js')
@append