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