7
7
8
8
namespace Magento \QuoteGraphQl \Model \Resolver ;
9
9
10
+ use Magento \Framework \App \ObjectManager ;
10
11
use Magento \Framework \GraphQl \Config \Element \Field ;
11
12
use Magento \Framework \GraphQl \Exception \GraphQlInputException ;
12
13
use Magento \Framework \GraphQl \Query \ResolverInterface ;
19
20
use Magento \QuoteGraphQl \Model \Cart \GetCartForUser ;
20
21
use Magento \Quote \Model \Cart \Data \Error ;
21
22
use Magento \QuoteGraphQl \Model \CartItem \DataProvider \Processor \ItemDataProcessorInterface ;
23
+ use Magento \QuoteGraphQl \Model \CartItem \PrecursorInterface ;
22
24
23
25
/**
24
26
* Resolver for addProductsToCart mutation
@@ -38,31 +40,35 @@ class AddProductsToCart implements ResolverInterface
38
40
private $ addProductsToCartService ;
39
41
40
42
/**
41
- * @var ItemDataProcessorInterface
43
+ * @var QuoteMutexInterface
42
44
*/
43
- private $ itemDataProcessor ;
45
+ private $ quoteMutex ;
44
46
45
47
/**
46
- * @var QuoteMutexInterface
48
+ * @var PrecursorInterface|null
47
49
*/
48
- private $ quoteMutex ;
50
+ private $ cartItemPrecursor ;
49
51
50
52
/**
51
53
* @param GetCartForUser $getCartForUser
52
54
* @param AddProductsToCartService $addProductsToCart
53
55
* @param ItemDataProcessorInterface $itemDataProcessor
54
56
* @param QuoteMutexInterface $quoteMutex
57
+ * @param PrecursorInterface|null $cartItemPrecursor
58
+ *
59
+ * @SuppressWarnings(PHPMD.UnusedFormalParameter)
55
60
*/
56
61
public function __construct (
57
62
GetCartForUser $ getCartForUser ,
58
63
AddProductsToCartService $ addProductsToCart ,
59
64
ItemDataProcessorInterface $ itemDataProcessor ,
60
- QuoteMutexInterface $ quoteMutex
65
+ QuoteMutexInterface $ quoteMutex ,
66
+ PrecursorInterface $ cartItemPrecursor = null
61
67
) {
62
68
$ this ->getCartForUser = $ getCartForUser ;
63
69
$ this ->addProductsToCartService = $ addProductsToCart ;
64
- $ this ->itemDataProcessor = $ itemDataProcessor ;
65
70
$ this ->quoteMutex = $ quoteMutex ;
71
+ $ this ->cartItemPrecursor = $ cartItemPrecursor ?: ObjectManager::getInstance ()->get (PrecursorInterface::class);
66
72
}
67
73
68
74
/**
@@ -102,11 +108,9 @@ private function run($context, ?array $args): array
102
108
103
109
// Shopping Cart validation
104
110
$ this ->getCartForUser ->execute ($ maskedCartId , $ context ->getUserId (), $ storeId );
111
+ $ cartItemsData = $ this ->cartItemPrecursor ->process ($ cartItemsData , $ context );
105
112
$ cartItems = [];
106
113
foreach ($ cartItemsData as $ cartItemData ) {
107
- if (!$ this ->itemIsAllowedToCart ($ cartItemData , $ context )) {
108
- continue ;
109
- }
110
114
$ cartItems [] = (new CartItemFactory ())->create ($ cartItemData );
111
115
}
112
116
@@ -125,25 +129,8 @@ function (Error $error) {
125
129
'path ' => [$ error ->getCartItemPosition ()]
126
130
];
127
131
},
128
- $ addProductsToCartOutput ->getErrors ()
132
+ array_merge ( $ addProductsToCartOutput ->getErrors (), $ this -> cartItemPrecursor -> getErrors () )
129
133
)
130
134
];
131
135
}
132
-
133
- /**
134
- * Check if the item can be added to cart
135
- *
136
- * @param array $cartItemData
137
- * @param ContextInterface $context
138
- * @return bool
139
- */
140
- private function itemIsAllowedToCart (array $ cartItemData , ContextInterface $ context ): bool
141
- {
142
- $ cartItemData = $ this ->itemDataProcessor ->process ($ cartItemData , $ context );
143
- if (isset ($ cartItemData ['grant_checkout ' ]) && $ cartItemData ['grant_checkout ' ] === false ) {
144
- return false ;
145
- }
146
-
147
- return true ;
148
- }
149
136
}
0 commit comments