mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 09:17:35 +00:00
80 lines
2.6 KiB
PHP
80 lines
2.6 KiB
PHP
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
declare(strict_types=1);
|
|
|
|
namespace Magento\QuoteGraphQl\Model\Resolver;
|
|
|
|
use Magento\Framework\GraphQl\Config\Element\Field;
|
|
use Magento\Framework\GraphQl\Exception\GraphQlInputException;
|
|
use Magento\Framework\GraphQl\Query\ResolverInterface;
|
|
use Magento\Framework\GraphQl\Schema\Type\ResolveInfo;
|
|
use Magento\QuoteGraphQl\Model\Cart\CheckCartCheckoutAllowance;
|
|
use Magento\QuoteGraphQl\Model\Cart\GetCartForUser;
|
|
use Magento\QuoteGraphQl\Model\Cart\SetPaymentMethodOnCart as SetPaymentMethodOnCartModel;
|
|
|
|
/**
|
|
* Mutation resolver for setting payment method for shopping cart
|
|
*/
|
|
class SetPaymentMethodOnCart implements ResolverInterface
|
|
{
|
|
/**
|
|
* @var GetCartForUser
|
|
*/
|
|
private $getCartForUser;
|
|
|
|
/**
|
|
* @var SetPaymentMethodOnCartModel
|
|
*/
|
|
private $setPaymentMethodOnCart;
|
|
|
|
/**
|
|
* @var CheckCartCheckoutAllowance
|
|
*/
|
|
private $checkCartCheckoutAllowance;
|
|
|
|
/**
|
|
* @param GetCartForUser $getCartForUser
|
|
* @param SetPaymentMethodOnCartModel $setPaymentMethodOnCart
|
|
* @param CheckCartCheckoutAllowance $checkCartCheckoutAllowance
|
|
*/
|
|
public function __construct(
|
|
GetCartForUser $getCartForUser,
|
|
SetPaymentMethodOnCartModel $setPaymentMethodOnCart,
|
|
CheckCartCheckoutAllowance $checkCartCheckoutAllowance
|
|
) {
|
|
$this->getCartForUser = $getCartForUser;
|
|
$this->setPaymentMethodOnCart = $setPaymentMethodOnCart;
|
|
$this->checkCartCheckoutAllowance = $checkCartCheckoutAllowance;
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public function resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null)
|
|
{
|
|
if (empty($args['input']['cart_id'])) {
|
|
throw new GraphQlInputException(__('Required parameter "cart_id" is missing.'));
|
|
}
|
|
$maskedCartId = $args['input']['cart_id'];
|
|
|
|
if (empty($args['input']['payment_method']['code'])) {
|
|
throw new GraphQlInputException(__('Required parameter "code" for "payment_method" is missing.'));
|
|
}
|
|
$paymentData = $args['input']['payment_method'];
|
|
|
|
$storeId = (int)$context->getExtensionAttributes()->getStore()->getId();
|
|
$cart = $this->getCartForUser->execute($maskedCartId, $context->getUserId(), $storeId);
|
|
$this->checkCartCheckoutAllowance->execute($cart);
|
|
$this->setPaymentMethodOnCart->execute($cart, $paymentData);
|
|
|
|
return [
|
|
'cart' => [
|
|
'model' => $cart,
|
|
],
|
|
];
|
|
}
|
|
}
|