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