[Back] <?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.');
}
}