1717 */
1818class SetShippingAddressesOnCart implements SetShippingAddressesOnCartInterface
1919{
20- /**
21- * @var QuoteAddressFactory
22- */
23- private $ quoteAddressFactory ;
24-
2520 /**
2621 * @var AssignShippingAddressToCart
2722 */
2823 private $ assignShippingAddressToCart ;
24+ /**
25+ * @var GetShippingAddress
26+ */
27+ private $ getShippingAddress ;
2928
3029 /**
31- * @param QuoteAddressFactory $quoteAddressFactory
3230 * @param AssignShippingAddressToCart $assignShippingAddressToCart
31+ * @param GetShippingAddress $getShippingAddress
3332 */
3433 public function __construct (
35- QuoteAddressFactory $ quoteAddressFactory ,
36- AssignShippingAddressToCart $ assignShippingAddressToCart
34+ AssignShippingAddressToCart $ assignShippingAddressToCart ,
35+ GetShippingAddress $ getShippingAddress
3736 ) {
38- $ this ->quoteAddressFactory = $ quoteAddressFactory ;
3937 $ this ->assignShippingAddressToCart = $ assignShippingAddressToCart ;
38+ $ this ->getShippingAddress = $ getShippingAddress ;
4039 }
4140
4241 /**
@@ -50,37 +49,8 @@ public function execute(ContextInterface $context, CartInterface $cart, array $s
5049 );
5150 }
5251 $ 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- }
6552
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 );
8454
8555 $ this ->assignShippingAddressToCart ->execute ($ cart , $ shippingAddress );
8656 }
0 commit comments