public function run(Request $request) { $result = []; $ids = $request->getParameters()['id']; foreach ($ids as $id) { $orderStatus = $this->orderManager->getStatus($id); if (!$orderStatus) { continue; } $result[$id] = ['status' => $orderStatus->getStatus(), 'dispatchDate' => $orderStatus->getDispatchedAt() ? $orderStatus->getDispatchedAt()->format('Y-m-d H:i') : NULL, 'note' => $orderStatus->getNote(), 'conversionValue' => $orderStatus->getConversionValue()]; } return new Response(['orders' => $result], 200); }
public function run(Request $request) { $result = []; foreach ($request->getParameters()['item'] as $item) { $item += ['product' => NULL, 'variant' => NULL]; $status = $this->itemManager->find($item['product'], $item['variant']); if ($status === NULL || $status->getQuantity() === 0) { continue; } $result[] = ['availability' => $status->getAvailability(), 'quantity' => $status->getQuantity(), 'price' => $status->getPrice()] + $item; } return new Response(['items' => $result], 200); }
/** * @param Request $request * @return array */ private function validate(Request $request) { $errors = []; $parameters = $request->getParameters(); foreach ($parameters['items'] as $item) { $responseData = array_intersect_key($item, ['product' => NULL, 'variant' => NULL]); $item += ['variant' => NULL, 'product' => NULL]; $status = $this->itemManager->find($item['product'], $item['variant']); if (!$status || $status->getQuantity() == 0) { $errors[] = ['code' => 1100, 'parameters' => $responseData]; } elseif ($status->getQuantity() < $item['quantity']) { $errors[] = ['code' => 1101, 'parameters' => $responseData + ['availableQuantity' => $status->getQuantity()]]; } if ($status && $this->priceDiffers($item['unitPrice'], $status->getPrice())) { $errors[] = ['code' => 1102, 'parameters' => $responseData + ['actualPrice' => $status->getPrice()]]; } } return $errors; }