@extends('layouts.public') @section('content') <div class="flex items-center justify-between mb-6"> <div> <h1 class="text-2xl font-bold">Order {{ $order->order_no }}</h1> <p class="text-sm text-gray-600">Created: {{ $order->created_at->format('Y-m-d H:i') }}</p> </div> <a href="{{ route('admin.orders.index') }}" class="underline">Back</a> </div> <div class="grid lg:grid-cols-3 gap-6"> <div class="lg:col-span-2 space-y-6"> <div class="bg-white rounded-xl shadow p-6"> <h2 class="font-semibold mb-4">Items</h2> <div class="space-y-3 text-sm"> @foreach($order->items as $item) <div class="flex justify-between"> <div> <div class="font-medium">{{ $item->product->name ?? 'Deleted product' }}</div> <div class="text-xs text-gray-500"> Qty: {{ $item->quantity }} × RM {{ number_format($item->unit_price_cents/100, 2) }} </div> </div> <div class="font-medium"> RM {{ number_format($item->line_total_cents/100, 2) }} </div> </div> @endforeach </div> <hr class="my-4"> <div class="flex justify-between font-bold"> <div>Total</div> <div>RM {{ number_format($order->total_cents/100, 2) }}</div> </div> </div> <div class="bg-white rounded-xl shadow p-6"> <h2 class="font-semibold mb-4">Payment (FPX)</h2> @if($order->payment) <div class="text-sm space-y-2"> <div><span class="text-gray-500">Provider:</span> {{ $order->payment->provider }}</div> <div><span class="text-gray-500">Status:</span> {{ $order->payment->status }}</div> <div><span class="text-gray-500">Reference:</span> {{ $order->payment->reference ?? '-' }}</div> @if($order->payment->payload) <details class="mt-3"> <summary class="cursor-pointer text-sm underline">View payload</summary> <pre class="mt-2 p-3 bg-gray-50 rounded text-xs overflow-auto">{{ json_encode($order->payment->payload, JSON_PRETTY_PRINT) }}</pre> </details> @endif </div> @else <div class="text-sm text-gray-600">No payment record found.</div> @endif </div> </div> <div class="space-y-6"> <div class="bg-white rounded-xl shadow p-6"> <h2 class="font-semibold mb-4">Customer</h2> <div class="text-sm space-y-2"> <div><span class="text-gray-500">Name:</span> {{ $order->customer_name ?? '-' }}</div> <div><span class="text-gray-500">Phone:</span> {{ $order->customer_phone ?? '-' }}</div> <div><span class="text-gray-500">User ID:</span> {{ $order->user_id }}</div> </div> </div> <div class="bg-white rounded-xl shadow p-6"> <h2 class="font-semibold mb-4">Order Status</h2> <div class="mb-3 text-sm"> Current: <span class="px-2 py-1 rounded bg-gray-100">{{ $order->status }}</span> </div> <form method="POST" action="{{ route('admin.orders.status', $order) }}" class="space-y-3"> @csrf @method('PATCH') <select name="status" class="w-full rounded border-gray-300"> @foreach(['pending','payment_pending','paid','failed','cancelled'] as $st) <option value="{{ $st }}" {{ $order->status === $st ? 'selected' : '' }}> {{ $st }} </option> @endforeach </select> <button class="w-full px-4 py-2 rounded bg-black text-white"> Update Status </button> </form> <p class="text-xs text-gray-500 mt-3"> While FPX is stubbed, you can manually set status to “paid” after you confirm payment. </p> </div> </div> </div> @endsection