@extends('layouts.app') @section('title', 'Booking') @section('content') @php $passengersVisaData = $passengers->map(fn($p) => [ 'id' => $p->id, 'visa' => $p->visaSubmission ? [ 'agent' => $p->visaSubmission?->visaAgent?->name ?? '', 'visa_number' => $p->visaSubmission?->visa_number ?? '', 'selling_price' => (float)($p->visaSubmission?->selling_price ?? 0), 'agent_commission' => (float)($p->visaSubmission?->agent_commission ?? 0), 'net_visa_cost' => (float)($p->visaSubmission?->net_visa_cost ?? 0), 'additional_cost' => (float)($p->visaSubmission?->additional_cost ?? 0), 'remarks' => $p->visaSubmission?->remarks ?? '', 'final_cost' => (float)($p->visaSubmission?->final_cost ?? 0), 'commission_agent' => $p->visaSubmission?->commissionAgent?->name ?? '', ] : null, 'visa_status' => $p->visa_status?->value ?? null, ])->values(); @endphp
@php $canCreateBooking = auth()->user()->roles->pluck('name')->intersect(['Super Admin', 'Co Admin', 'Branch Manager', 'Branch Staff'])->isNotEmpty(); $canViewFinancialColumns = auth()->user()->roles->pluck('name')->intersect(['Super Admin', 'Co Admin', 'Auditor'])->isNotEmpty(); $canEditInline = auth()->user()->roles->pluck('name')->intersect(['Super Admin', 'Co Admin'])->isNotEmpty(); @endphp

Booking

@if($canCreateBooking) Add Booking @endif
@if(session('success'))
{{ session('success') }}
@endif @if(session('error'))
{{ session('error') }}
@endif
@if($canViewFinancialColumns)@endif @if($canViewFinancialColumns)@endif @if($canViewFinancialColumns)@endif @forelse($bookings as $booking) @if($canViewFinancialColumns)@endif @if($canViewFinancialColumns)@endif @if($canViewFinancialColumns)@endif @empty @endforelse
Invoice ID Booking Date Customer Mobile Passengers Fingerprint Location Office District PackageTotalPaidDueActions
{{ $booking->invoice_id ?? '—' }} {{ $booking->created_at->format('Y-m-d') }} {{ $booking->customer->name ?? 'N/A' }} {{ $booking->customer->mobile_no ?? 'N/A' }} {{ $booking->passengers->count() }} @if($canEditInline) @else {{ ucfirst($booking->fingerprint_location?->value ?? 'Office') }} @endif {{ $booking->office->name ?? '—' }} {{ $booking->district->name ?? 'N/A' }} {{ $booking->package->package_name ?? 'N/A' }}{{ $booking->invoice?->total_amount ?? 0 }} SAR{{ $booking->invoice?->paid_amount ?? 0 }} SAR{{ $booking->invoice?->balance ?? 0 }} SAR View
No bookings found
{{ $bookings->links() }}
@if($canViewFinancialColumns)@endif @if($canViewFinancialColumns)@endif @if($canViewFinancialColumns)@endif @if($canViewFinancialColumns)@endif @php $lastBookingId = null; @endphp @forelse($passengers as $passenger) @php $isFirstRow = ($lastBookingId !== $passenger->booking_id); $lastBookingId = $passenger->booking_id; $visaSubmission = $passenger->visaSubmission; $ticketFare = $passenger->ticketFare; $baseFare = $ticketFare?->selling_fare ?? $ticketFare?->net_fare ?? 0; $passengerTypeVal = $passenger->passenger_type?->value; $fareAmount = match($passengerTypeVal) { 'child' => $baseFare * ($ticketFare?->child_fare_percentage ?? 75) / 100, 'infant' => $baseFare * ($ticketFare?->infant_fare_percentage ?? 10) / 100, default => $baseFare, }; $route = $passenger->ticketFare?->route ?? $passenger->booking?->package?->ticketFare?->route; $routeDisplay = '—'; if ($route) { $routeType = $route->route_type?->value; if ($routeType === 'multi_city') { $routeDisplay = $route->multiSegments->map(fn($s) => ($s->fromCity?->code ?? '?') . '-' . ($s->toCity?->code ?? '?'))->implode(', '); } elseif ($routeType === 'round') { $routeDisplay = ($route->fromCity?->code ?? '?') . '-' . ($route->toCity?->code ?? '?') . '-' . ($route->returnCity?->code ?? '?'); } else { $routeDisplay = ($route->fromCity?->code ?? '?') . ' → ' . ($route->toCity?->code ?? '?'); } } @endphp @if($canViewFinancialColumns)@endif @if($canViewFinancialColumns)@endif @if($canViewFinancialColumns)@endif @if($canViewFinancialColumns)@endif @empty @endforelse
Booking Date Invoice ID Customer PAX QTY Mobile Name Current status Passport No Route Required Flight Date Actual Flight Date PackagePackage ValueTotal CostMarkup (Profit)DueTicket Fare Ticket Status Visa Visa Agent Visa Status Actions
{{ $passenger->booking?->created_at?->format('d M Y') ?? '—' }} {{ $passenger->booking?->invoice_id ?? '—' }} {{ $passenger->booking->customer->name ?? 'N/A' }} {{ $isFirstRow ? ($passenger->booking?->pax_qty ?? '—') : '' }}
{{ $passenger->booking?->customer?->mobile_no ?? '—' }}
{{ $passenger->mobile_no ?? '—' }}
{{ trim($passenger->first_name . ' ' . $passenger->last_name) ?: '—' }} @if($canEditInline) @else {{ $passengerStatuses->firstWhere('id', $passenger->passenger_status_id)->name ?? 'None' }} @endif {{ $passenger->passport_no ?? '—' }} {{ $routeDisplay }} {{ $passenger->flight_date_from?->format('d M Y') . ' → ' . $passenger->flight_date_to?->format('d M Y') ?? '—' }} {{ optional($passenger->actual_flight_date)->format('d M Y') ?: 'N/A' }} {{ $passenger->booking?->package?->package_name ?? '—' }}{{ $passenger->package_value ? number_format($passenger->package_value, 2) . ' SAR' : '—' }}{{ $isFirstRow ? ($passenger->booking?->invoice?->balance ? number_format($passenger->booking->invoice->balance, 2) . ' SAR' : '—') : '' }}
@if($visaSubmission && $visaSubmission->visa_number) {{ $visaSubmission->visa_number }} @endif
{{ $visaSubmission?->visaAgent?->name ?? '—' }} @php $vs = $passenger->visa_status; @endphp @if($vs) {{ ucfirst($vs->value) }} @else @endif
{{ $fareAmount > 0 ? number_format($fareAmount, 2) . ' SAR' : '—' }}
@php $ticketStatus = $passenger->ticketFare?->ticketStatus; @endphp @if($ticketStatus) {{ ucfirst($ticketStatus->value) }} @else @endif View
No passengers found
{{ $passengers->links() }}
{{-- Visa Submit Modal --}}

{{-- Visa Issue Modal --}}

Visa Issue Form

{{-- Visa Edit Modal --}}

Edit Visa

{{-- Ticket Fare Modal --}}

{{-- Ticket Type --}}

Ticket Type

{{-- Ticket Information --}}

Ticket Information

{{-- Travel Details --}}

Travel Details

{{-- Fare Calculation --}}

Fare Calculation

{{-- Baggage Info --}}

Baggage Info

{{-- Ticket Options --}}

Ticket Options

@endsection