1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- declare(strict_types=1);
- namespace Magento\QuoteGraphQl\Model\Cart;
- use Magento\Framework\Exception\NoSuchEntityException;
- use Magento\Quote\Model\Quote;
- use Magento\Quote\Model\Quote\Item as QuoteItem;
- use Magento\Quote\Model\QuoteIdToMaskedQuoteIdInterface;
- /**
- * Extract data from cart
- */
- class ExtractDataFromCart
- {
- /**
- * @var QuoteIdToMaskedQuoteIdInterface
- */
- private $quoteIdToMaskedQuoteId;
- /**
- * @param QuoteIdToMaskedQuoteIdInterface $quoteIdToMaskedQuoteId
- */
- public function __construct(
- QuoteIdToMaskedQuoteIdInterface $quoteIdToMaskedQuoteId
- ) {
- $this->quoteIdToMaskedQuoteId = $quoteIdToMaskedQuoteId;
- }
- /**
- * Extract data from cart
- *
- * @param Quote $cart
- * @return array
- * @throws NoSuchEntityException
- */
- public function execute(Quote $cart): array
- {
- $items = [];
- /**
- * @var QuoteItem $cartItem
- */
- foreach ($cart->getAllItems() as $cartItem) {
- $productData = $cartItem->getProduct()->getData();
- $productData['model'] = $cartItem->getProduct();
- $items[] = [
- 'id' => $cartItem->getItemId(),
- 'qty' => $cartItem->getQty(),
- 'product' => $productData,
- 'model' => $cartItem,
- ];
- }
- $appliedCoupon = $cart->getCouponCode();
- return [
- 'cart_id' => $this->quoteIdToMaskedQuoteId->execute((int)$cart->getId()),
- 'items' => $items,
- 'applied_coupon' => $appliedCoupon ? ['code' => $appliedCoupon] : null
- ];
- }
- }
|