use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Validation\Rules\Enum;

class OrderController
{
    public function update(Request $request, Order $order): JsonResponse
    {
        $validated = $request->validate([
            'status' => ['required', new Enum(OrderStatus::class)],
        ]);

        if ($order->status === OrderStatus::Completed) {
            return response()->json([
                'status_updated' => false,
                'message' => 'Completed orders can’t be changed',
                'order' => array_filter($order->toArray()),
            ], 400);
        }

        $order->update([
            'status' => $validated['status'],
        ]);

        return response()->json([
            'status_updated' => true,
            'products' => $order->products->map(fn ($product) => [
                'id' => $product->id,
                'name' => $product->name,
                'updated_at' => $product->updated_at,
            ]),
        ]);
    }
}