@extends('layouts.app') @section('content') @php $money = fn($m) => is_array($m) ? ($m['formatted_amount'] ?? (isset($m['amount']) ? number_format(((int) $m['amount']) / 100, 2) . ' ' . ($m['currency_code'] ?? '') : '-')) : '-'; $stateUpper = strtoupper($state); $stateBadge = match ($stateUpper) { 'CREATED', 'PLACED' => 'bg-amber-100 text-amber-700', 'ACCEPTED' => 'bg-green-100 text-green-700', 'PREPARING', 'IN_PROGRESS' => 'bg-blue-100 text-blue-700', 'READY_FOR_PICKUP', 'FINISHED', 'COMPLETED', 'DELIVERED' => 'bg-green-100 text-green-700', 'DENIED', 'CANCELED', 'CANCELLED' => 'bg-red-100 text-red-700', '' => 'bg-stone-100 text-stone-500', default => 'bg-stone-200 text-stone-700', }; // Accept/deny is only meaningful while Uber still waits for a POS response. $actionable = in_array($stateUpper, ['CREATED', 'PLACED', ''], true); // After acceptance the order is in the kitchen: mark it ready for pickup or // cancel it while it is being prepared (local POS-side transitions). $isPreparing = in_array($stateUpper, ['PREPARING', 'ACCEPTED'], true); $readyConfirm = __('This order will be marked READY for pickup. Are you sure?'); $cancelConfirm = __('This order will be CANCELLED. Are you sure?'); $windowOpen = $windowEnd !== null && $windowEnd->isFuture(); $secondsLeft = $windowOpen ? (int) now()->diffInSeconds($windowEnd) : 0; $items = data_get($detail, 'cart.items') ?? []; $charges = data_get($detail, 'payment.charges') ?? []; $eater = data_get($detail, 'eater') ?? []; $store = data_get($detail, 'store') ?? []; $deliveries = data_get($detail, 'deliveries') ?? []; $issues = data_get($detail, 'fulfillment_issues') ?? []; @endphp
{{ $order->order_id }}
{{ __('Order approval is pending') }}
@if ($windowOpen)timer {{ __('Uber accept/deny window: :time left — the order is auto-cancelled when it expires.', ['time' => __(':min min :sec sec', ['min' => intdiv($secondsLeft, 60), 'sec' => $secondsLeft % 60])]) }}
@else{{ __('The approval window has closed — a response can still be sent, but Uber will most likely return "order is no longer active".') }}{{ $windowEnd ? ' (' . $windowEnd->format('H:i:s') . ')' : '' }}
@endif{{ __('Order is being prepared') }}
{{ __('Mark the order ready for pickup, or cancel it while it is being prepared.') }}
| {{ __('Item') }} | {{ __('Qty') }} | {{ __('Unit') }} | {{ __('Total') }} |
|---|---|---|---|
|
{{ data_get($item, 'title') ?? data_get($item, 'id') ?? '-' }}
@if (data_get($item, 'special_instructions'))
“{{ data_get($item, 'special_instructions') }}” @endif @foreach (data_get($item, 'selected_modifier_groups') ?? [] as $group) @php $selected = data_get($group, 'selected_items') ?? []; @endphp @if (count($selected) > 0){{ data_get($group, 'title') }}: {{ collect($selected)->map(fn($s) => trim((data_get($s, 'title') ?? '') . (data_get($s, 'quantity', 1) > 1 ? ' ×' . data_get($s, 'quantity') : '')))->filter()->implode(', ') }} @endif @endforeach |
{{ data_get($item, 'quantity', 1) }} | {{ $money(data_get($item, 'price.unit_price')) }} | {{ $money(data_get($item, 'price.total_price')) }} |
{{ __(':count item fulfillment issue(s):', ['count' => count($issues)]) }} {{ collect($issues)->map(fn($i) => data_get($i, 'fulfillment_issue_type'))->filter()->unique()->implode(', ') }}
| {{ $event->event_type }} | {{ $event->status }} | {{ __('Signature:') }} {{ $event->signature_valid ? '✓ ' . __('valid') : '✗ ' . __('invalid') }} | {{ $event->received_at?->format('d.m.Y H:i:s') }} |
{{ json_encode($detail, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) }}