CreateEmptyCart.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\QuoteGraphQl\Model\Resolver;
  8. use Magento\Framework\GraphQl\Config\Element\Field;
  9. use Magento\Framework\GraphQl\Query\ResolverInterface;
  10. use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
  11. use Magento\Quote\Api\CartManagementInterface;
  12. use Magento\Quote\Api\GuestCartManagementInterface;
  13. use Magento\Quote\Model\QuoteIdToMaskedQuoteIdInterface;
  14. use Magento\Quote\Model\QuoteIdMaskFactory;
  15. /**
  16. * @inheritdoc
  17. */
  18. class CreateEmptyCart implements ResolverInterface
  19. {
  20. /**
  21. * @var CartManagementInterface
  22. */
  23. private $cartManagement;
  24. /**
  25. * @var GuestCartManagementInterface
  26. */
  27. private $guestCartManagement;
  28. /**
  29. * @var QuoteIdToMaskedQuoteIdInterface
  30. */
  31. private $quoteIdToMaskedId;
  32. /**
  33. * @var QuoteIdMaskFactory
  34. */
  35. private $quoteIdMaskFactory;
  36. /**
  37. * @param CartManagementInterface $cartManagement
  38. * @param GuestCartManagementInterface $guestCartManagement
  39. * @param QuoteIdToMaskedQuoteIdInterface $quoteIdToMaskedId
  40. * @param QuoteIdMaskFactory $quoteIdMaskFactory
  41. */
  42. public function __construct(
  43. CartManagementInterface $cartManagement,
  44. GuestCartManagementInterface $guestCartManagement,
  45. QuoteIdToMaskedQuoteIdInterface $quoteIdToMaskedId,
  46. QuoteIdMaskFactory $quoteIdMaskFactory
  47. ) {
  48. $this->cartManagement = $cartManagement;
  49. $this->guestCartManagement = $guestCartManagement;
  50. $this->quoteIdToMaskedId = $quoteIdToMaskedId;
  51. $this->quoteIdMaskFactory = $quoteIdMaskFactory;
  52. }
  53. /**
  54. * @inheritdoc
  55. */
  56. public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null)
  57. {
  58. $customerId = $context->getUserId();
  59. if (0 !== $customerId && null !== $customerId) {
  60. $quoteId = $this->cartManagement->createEmptyCartForCustomer($customerId);
  61. $maskedQuoteId = $this->quoteIdToMaskedId->execute((int)$quoteId);
  62. if (empty($maskedQuoteId)) {
  63. $quoteIdMask = $this->quoteIdMaskFactory->create();
  64. $quoteIdMask->setQuoteId($quoteId)->save();
  65. $maskedQuoteId = $quoteIdMask->getMaskedId();
  66. }
  67. } else {
  68. $maskedQuoteId = $this->guestCartManagement->createEmptyCart();
  69. }
  70. return $maskedQuoteId;
  71. }
  72. }