Cart.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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\Exception\GraphQlInputException;
  10. use Magento\Framework\GraphQl\Query\ResolverInterface;
  11. use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
  12. use Magento\QuoteGraphQl\Model\Cart\GetCartForUser;
  13. use Magento\QuoteGraphQl\Model\Cart\ExtractDataFromCart;
  14. /**
  15. * @inheritdoc
  16. */
  17. class Cart implements ResolverInterface
  18. {
  19. /**
  20. * @var ExtractDataFromCart
  21. */
  22. private $extractDataFromCart;
  23. /**
  24. * @var GetCartForUser
  25. */
  26. private $getCartForUser;
  27. /**
  28. * @param GetCartForUser $getCartForUser
  29. * @param ExtractDataFromCart $extractDataFromCart
  30. */
  31. public function __construct(
  32. GetCartForUser $getCartForUser,
  33. ExtractDataFromCart $extractDataFromCart
  34. ) {
  35. $this->getCartForUser = $getCartForUser;
  36. $this->extractDataFromCart = $extractDataFromCart;
  37. }
  38. /**
  39. * @inheritdoc
  40. */
  41. public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null)
  42. {
  43. if (!isset($args['cart_id'])) {
  44. throw new GraphQlInputException(__('Required parameter "cart_id" is missing'));
  45. }
  46. $maskedCartId = $args['cart_id'];
  47. $currentUserId = $context->getUserId();
  48. $cart = $this->getCartForUser->execute($maskedCartId, $currentUserId);
  49. $data = array_merge(
  50. [
  51. 'cart_id' => $maskedCartId,
  52. 'model' => $cart
  53. ],
  54. $this->extractDataFromCart->execute($cart)
  55. );
  56. return $data;
  57. }
  58. }