/** * Update item data * * @param int $itemId * @param array $data * @param null|UserInterface $user * @param null|string $locale * * @throws ItemNotFoundException * * @return null|Order */ public function updateItem($itemId, $data, $user = null, $locale = null) { $cart = $this->getUserCart($user, $locale); $userId = $user ? $user->getId() : null; $this->validateOrCreateAddresses($cart, $user); $item = $this->orderManager->getOrderItemById($itemId, $cart->getEntity()); $this->orderManager->updateItem($item, $data, $locale, $userId, $cart->getEntity()); $this->removeOrderAddressIfContactAddressIdIsEqualTo($item, $cart->getDeliveryAddress()->getContactAddress()->getId()); $this->orderManager->updateApiEntity($cart, $locale); return $cart; }