LoadHandler.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Quote\Model\QuoteRepository;
  7. use Magento\Quote\Api\Data\CartInterface;
  8. use Magento\Quote\Model\Quote\ShippingAssignment\ShippingAssignmentProcessor;
  9. use Magento\Quote\Api\Data\CartExtensionFactory;
  10. class LoadHandler
  11. {
  12. /**
  13. * @var ShippingAssignmentProcessor
  14. */
  15. private $shippingAssignmentProcessor;
  16. /**
  17. * @var CartExtensionFactory
  18. */
  19. private $cartExtensionFactory;
  20. /**
  21. * @param ShippingAssignmentProcessor $shippingAssignmentProcessor
  22. * @param CartExtensionFactory $cartExtensionFactory
  23. */
  24. public function __construct(
  25. ShippingAssignmentProcessor $shippingAssignmentProcessor,
  26. CartExtensionFactory $cartExtensionFactory
  27. ) {
  28. $this->shippingAssignmentProcessor = $shippingAssignmentProcessor;
  29. $this->cartExtensionFactory = $cartExtensionFactory;
  30. }
  31. /**
  32. * @param CartInterface $quote
  33. * @return CartInterface
  34. */
  35. public function load(CartInterface $quote)
  36. {
  37. if (!$quote->getIsActive()) {
  38. return $quote;
  39. }
  40. /** @var \Magento\Quote\Model\Quote $quote */
  41. $quote->setItems($quote->getAllVisibleItems());
  42. $shippingAssignments = [];
  43. if (!$quote->isVirtual() && $quote->getItemsQty() > 0) {
  44. $shippingAssignments[] = $this->shippingAssignmentProcessor->create($quote);
  45. }
  46. $cartExtension = $quote->getExtensionAttributes();
  47. if ($cartExtension === null) {
  48. $cartExtension = $this->cartExtensionFactory->create();
  49. }
  50. $cartExtension->setShippingAssignments($shippingAssignments);
  51. $quote->setExtensionAttributes($cartExtension);
  52. return $quote;
  53. }
  54. }