<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Models\Order; use Illuminate\Http\Request; class OrderController extends Controller { public function index(Request $request) { $q = Order::query() ->with(['payment']) ->latest(); // Optional simple filters via query string: // /admin/orders?status=paid if ($request->filled('status')) { $q->where('status', $request->string('status')); } $orders = $q->paginate(15)->withQueryString(); return view('admin.orders.index', compact('orders')); } public function show(Order $order) { $order->load(['items.product', 'payment']); return view('admin.orders.show', compact('order')); } public function updateStatus(Request $request, Order $order) { $data = $request->validate([ 'status' => ['required', 'in:pending,payment_pending,paid,failed,cancelled'], ]); $order->update(['status' => $data['status']]); // Optional: keep payment status in sync if you want if ($order->payment) { $map = [ 'paid' => 'success', 'failed' => 'failed', ]; if (isset($map[$data['status']])) { $order->payment->update(['status' => $map[$data['status']]]); } } return back()->with('success', 'Order status updated.'); } }