@extends('user.layouts.app') @section('title', 'Approved Bookings') @section('content')

Approved Bookings

Review your booking requests. Pay only if approved and not yet paid.

@if($requests->count() > 0)
@foreach($requests as $req) @php $quote = $req->quote; $resp = $quote->tqlResponses->last(); $carrier = $req->carrier_data; // <-- JSON column $total = $req->total_amount; $status = $req->status; $isPending = $status === 'pending'; $isApproved = in_array($status, ['approved', 'auto_approved']); $isRejected = $status === 'rejected'; $isPaid = $req->payment && $req->payment->payment_status === 'completed'; // Find carrier index for the “Pay Now” form $carrierIndex = collect($resp?->response['content']['carrierPrices'] ?? []) ->search(fn($c) => ($c['carrier'] ?? '') === ($carrier['carrier'] ?? '') && (float)($c['customerRate'] ?? 0) === (float)($carrier['customerRate'] ?? 0) ); @endphp
{{ ucfirst(str_replace('_', ' ', $status)) }} {{ $req->created_at->format('M d, Y') }}
#{{ $quote->id }}
Route:
@if($quote->pickupDetail && $quote->deliveryDetail) {{ $quote->pickupDetail->city }}, {{ $quote->pickupDetail->state }} {{ $quote->deliveryDetail->city }}, {{ $quote->deliveryDetail->state }} @else @endif
Carrier: {{ $carrier['carrier'] ?? '—' }} @if($carrier['isPreferred'] ?? false) Preferred @endif
@if($isRejected && $req->admin_note)
{{ $req->admin_note }}
@endif
${{ number_format($total, 2) }} Total
{{-- 1. Already Paid --}} @if($isPaid) Paid {{-- 2. Approved (incl. auto-approved) AND NOT paid --}} @elseif($isApproved && $carrierIndex !== false)
@csrf
{{-- 3. Pending --}} @elseif($isPending) {{-- 4. Rejected --}} @elseif($isRejected) {{-- 5. Fallback --}} @else @endif
@endforeach
@else

No requests yet

Create a quote to get started.

View Quotes
@endif
@endsection