quoteRepository = $quoteRepository; $this->productRepository = $productRepository; $this->itemDataFactory = $itemDataFactory; $this->cartItemProcessors = $cartItemProcessors; } /** * {@inheritdoc} */ public function getList($cartId) { $output = []; /** @var \Magento\Quote\Model\Quote $quote */ $quote = $this->quoteRepository->getActive($cartId); /** @var \Magento\Quote\Model\Quote\Item $item */ foreach ($quote->getAllVisibleItems() as $item) { $item = $this->getCartItemOptionsProcessor()->addProductOptions($item->getProductType(), $item); $output[] = $this->getCartItemOptionsProcessor()->applyCustomOptions($item); } return $output; } /** * {@inheritdoc} */ public function save(\Magento\Quote\Api\Data\CartItemInterface $cartItem) { /** @var \Magento\Quote\Model\Quote $quote */ $cartId = $cartItem->getQuoteId(); $quote = $this->quoteRepository->getActive($cartId); $quoteItems = $quote->getItems(); $quoteItems[] = $cartItem; $quote->setItems($quoteItems); $this->quoteRepository->save($quote); $quote->collectTotals(); return $quote->getLastAddedItem(); } /** * {@inheritdoc} */ public function deleteById($cartId, $itemId) { /** @var \Magento\Quote\Model\Quote $quote */ $quote = $this->quoteRepository->getActive($cartId); $quoteItem = $quote->getItemById($itemId); if (!$quoteItem) { throw new NoSuchEntityException( __('The %1 Cart doesn\'t contain the %2 item.', $cartId, $itemId) ); } try { $quote->removeItem($itemId); $this->quoteRepository->save($quote); } catch (\Exception $e) { throw new CouldNotSaveException(__("The item couldn't be removed from the quote.")); } return true; } /** * @return CartItemOptionsProcessor * @deprecated 100.1.0 */ private function getCartItemOptionsProcessor() { if (!$this->cartItemOptionsProcessor instanceof CartItemOptionsProcessor) { $this->cartItemOptionsProcessor = ObjectManager::getInstance()->get(CartItemOptionsProcessor::class); } return $this->cartItemOptionsProcessor; } }