{{-- resources/views/storefront/tracking.blade.php --}} @extends('storefront.layout') @section('title', trans_key('storefront.pageTitles.trackOrder', ['order' => $order->order_number]).' - '.config('app.name', 'FreshMart')) @section('body_class', 'sf-no-bottom-nav') @push('styles') @endpush @section('content') @php $steps = ['placed' => 'Placed', 'confirmed' => 'Confirmed', 'preparing' => 'Preparing', 'out_for_delivery' => 'On the way', 'delivered' => 'Delivered']; $currentIndex = max(0, array_search($order->status, array_keys($steps), true) ?: 0); $latest = data_get($tracking, 'latest'); $driver = data_get($tracking, 'delivery_boy'); $eta = data_get($tracking, 'current_eta') ?: data_get($tracking, 'delivery_travel_eta_minutes'); $storeAddress = collect([$order->store?->address, $order->store?->address_line_1, $order->store?->address_line_2, $order->store?->city, $order->store?->state, $order->store?->postal_code, $order->store?->pincode])->filter()->unique()->join(', '); $mapPayload = [ 'driver' => $latest ? [ 'lat' => (float) data_get($latest, 'latitude'), 'lng' => (float) data_get($latest, 'longitude'), 'heading' => data_get($latest, 'heading'), ] : null, 'store' => $order->store?->latitude && $order->store?->longitude ? [ 'lat' => (float) $order->store->latitude, 'lng' => (float) $order->store->longitude, ] : null, 'points' => collect(data_get($tracking, 'points', []))->map(fn ($point) => [ 'lat' => (float) data_get($point, 'latitude'), 'lng' => (float) data_get($point, 'longitude'), ])->filter(fn ($point) => $point['lat'] && $point['lng'])->values(), ]; $money = fn ($value) => \App\Support\StorefrontPresenter::money($value); @endphp
{{-- Header --}}

#{{ $order->order_number }}

{{ $order->store?->name ?? 'Store' }} ยท {{ optional($order->placed_at ?? $order->created_at)->format('d M Y, h:i A') }}

{{ \Illuminate\Support\Str::headline($order->status) }} Order details โ†’
{{-- Map --}}
๐Ÿ“

Loading map...

@if($eta)
ETA {{ $eta }} min
@endif
{{-- Two column layout --}}
{{-- Timeline --}}

Order progress

@foreach($steps as $key => $label) @php $stepIndex = array_search($key, array_keys($steps), true); $isDone = $stepIndex <= $currentIndex; $isCurrent = $key === $order->status; @endphp
{{ $label }}

{{ $isCurrent ? 'Current status' : 'Order milestone' }}

@endforeach
{{-- Delivery Details --}}

Delivery details

{{ $storeAddress ?: 'Store address unavailable' }}

@if($driver?->user)
{{ $driver->user->name }} {{ $driver->user->phone }}
@else
Driver assignment pending We will update this screen automatically.
@endif
Preparation
{{ data_get($tracking, 'preparation_eta_minutes') ?: 'Live' }} min
Travel
{{ data_get($tracking, 'delivery_travel_eta_minutes') ?: 'Live' }} min
Updated
{{ data_get($tracking, 'eta_updated_at') ? \Illuminate\Support\Carbon::parse(data_get($tracking, 'eta_updated_at'))->diffForHumans() : 'Awaiting signal' }}
@endsection @push('scripts') @endpush