17
17
*/
18
18
class SetShippingAddressesOnCart implements SetShippingAddressesOnCartInterface
19
19
{
20
- /**
21
- * @var QuoteAddressFactory
22
- */
23
- private $quoteAddressFactory;
24
-
25
20
/**
26
21
* @var AssignShippingAddressToCart
27
22
*/
28
23
private $assignShippingAddressToCart;
24
+ /**
25
+ * @var GetShippingAddress
26
+ */
27
+ private $getShippingAddress;
29
28
30
29
/**
31
- * @param QuoteAddressFactory $quoteAddressFactory
32
30
* @param AssignShippingAddressToCart $assignShippingAddressToCart
31
+ * @param GetShippingAddress $getShippingAddress
33
32
*/
34
33
public function __construct(
35
- QuoteAddressFactory $quoteAddressFactory ,
36
- AssignShippingAddressToCart $assignShippingAddressToCart
34
+ AssignShippingAddressToCart $assignShippingAddressToCart ,
35
+ GetShippingAddress $getShippingAddress
37
36
) {
38
- $this->quoteAddressFactory = $quoteAddressFactory;
39
37
$this->assignShippingAddressToCart = $assignShippingAddressToCart;
38
+ $this->getShippingAddress = $getShippingAddress;
40
39
}
41
40
42
41
/**
@@ -50,37 +49,8 @@ public function execute(ContextInterface $context, CartInterface $cart, array $s
50
49
);
51
50
}
52
51
$shippingAddressInput = current($shippingAddressesInput);
53
- $customerAddressId = $shippingAddressInput['customer_address_id'] ?? null;
54
- $addressInput = $shippingAddressInput['address'] ?? null;
55
-
56
- if ($addressInput) {
57
- $addressInput['customer_notes'] = $shippingAddressInput['customer_notes'] ?? '';
58
- }
59
-
60
- if (null === $customerAddressId && null === $addressInput) {
61
- throw new GraphQlInputException(
62
- __('The shipping address must contain either "customer_address_id" or "address".')
63
- );
64
- }
65
52
66
- if ($customerAddressId && $addressInput) {
67
- throw new GraphQlInputException(
68
- __('The shipping address cannot contain "customer_address_id" and "address" at the same time.')
69
- );
70
- }
71
-
72
- if (null === $customerAddressId) {
73
- $shippingAddress = $this->quoteAddressFactory->createBasedOnInputData($addressInput);
74
- } else {
75
- if (false === $context->getExtensionAttributes()->getIsCustomer()) {
76
- throw new GraphQlAuthorizationException(__('The current customer isn\'t authorized.'));
77
- }
78
-
79
- $shippingAddress = $this->quoteAddressFactory->createBasedOnCustomerAddress(
80
- (int)$customerAddressId,
81
- $context->getUserId()
82
- );
83
- }
53
+ $shippingAddress = $this->getShippingAddress->execute($context, $shippingAddressInput);
84
54
85
55
$this->assignShippingAddressToCart->execute($cart, $shippingAddress);
86
56
}
0 commit comments