Passed
Push — master ( 813c2b...31a484 )
by Ilya
05:35 queued 14s
created

getExpanderPluginsForOrderAmendment()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 26
Code Lines 24

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 24
dl 0
loc 26
rs 9.536
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
/**
4
 * This file is part of the Spryker Commerce OS.
5
 * For full license information, please view the LICENSE file that was distributed with this source code.
6
 */
7
8
declare(strict_types = 1);
9
10
namespace Pyz\Zed\Cart;
11
12
use Spryker\Zed\AvailabilityCartConnector\Communication\Plugin\Cart\CheckAvailabilityPlugin;
13
use Spryker\Zed\Cart\CartDependencyProvider as SprykerCartDependencyProvider;
14
use Spryker\Zed\Cart\Communication\Plugin\CleanUpItemsPreReloadPlugin;
15
use Spryker\Zed\Cart\Communication\Plugin\SkuGroupKeyPlugin;
16
use Spryker\Zed\ConfigurableBundle\Communication\Plugin\Cart\CartConfigurableBundlePreReloadPlugin;
17
use Spryker\Zed\ConfigurableBundleCart\Communication\Plugin\Cart\ConfiguredBundleGroupKeyItemExpanderPlugin;
18
use Spryker\Zed\ConfigurableBundleCart\Communication\Plugin\Cart\ConfiguredBundleQuantityCartTerminationPlugin;
19
use Spryker\Zed\ConfigurableBundleCart\Communication\Plugin\Cart\ConfiguredBundleQuantityPerSlotItemExpanderPlugin;
20
use Spryker\Zed\ConfigurableBundleCart\Communication\Plugin\Cart\ConfiguredBundleQuantityPerSlotPreReloadItemsPlugin;
21
use Spryker\Zed\ConfigurableBundleCart\Communication\Plugin\Cart\ConfiguredBundleQuantityPostSavePlugin;
22
use Spryker\Zed\ConfigurableBundleCart\Communication\Plugin\Cart\ConfiguredBundleTemplateSlotCombinationPreCheckPlugin;
23
use Spryker\Zed\Discount\Communication\Plugin\Cart\DiscountQuoteChangeObserverPlugin;
24
use Spryker\Zed\DiscountPromotion\Communication\Plugin\Cart\CartGroupPromotionItems;
25
use Spryker\Zed\DiscountPromotion\Communication\Plugin\Cart\DiscountPromotionCartPreCheckPlugin;
26
use Spryker\Zed\GiftCard\Communication\Plugin\GiftCardMetadataExpanderPlugin;
27
use Spryker\Zed\Kernel\Container;
28
use Spryker\Zed\MerchantProductOption\Communication\Plugin\Cart\MerchantProductOptionCartPreCheckPlugin;
29
use Spryker\Zed\MerchantShipment\Communication\Plugin\Cart\MerchantShipmentItemExpanderPlugin;
30
use Spryker\Zed\PaymentCartConnector\Communication\Plugin\Cart\RemovePaymentCartPostSavePlugin;
31
use Spryker\Zed\PaymentCartConnector\Communication\Plugin\Cart\RemoveQuotePaymentCartItemExpanderPlugin;
32
use Spryker\Zed\PriceCartConnector\Communication\Plugin\Cart\PriceItemExpanderPlugin;
33
use Spryker\Zed\PriceCartConnector\Communication\Plugin\CartItemPricePlugin;
34
use Spryker\Zed\PriceCartConnector\Communication\Plugin\CartItemPricePreCheckPlugin;
35
use Spryker\Zed\PriceCartConnector\Communication\Plugin\FilterItemsWithoutPricePlugin;
36
use Spryker\Zed\PriceProductSalesOrderAmendment\Communication\Plugin\Cart\OriginalSalesOrderItemPriceItemExpanderPlugin;
37
use Spryker\Zed\PriceProductSalesOrderAmendment\Communication\Plugin\Cart\ResetOriginalSalesOrderItemUnitPricesPreReloadItemsPlugin;
38
use Spryker\Zed\ProductApproval\Communication\Plugin\Cart\OrderAmendmentProductApprovalCartPreCheckPlugin;
39
use Spryker\Zed\ProductApproval\Communication\Plugin\Cart\OrderAmendmentProductApprovalPreReloadItemsPlugin;
40
use Spryker\Zed\ProductApproval\Communication\Plugin\Cart\ProductApprovalCartPreCheckPlugin;
41
use Spryker\Zed\ProductApproval\Communication\Plugin\Cart\ProductApprovalPreReloadItemsPlugin;
42
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\BundleItemPriceQuoteChangeObserverPlugin;
43
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\CartBundleActivePreCheckPlugin;
44
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\CartBundleAvailabilityPreCheckPlugin;
45
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\CartBundleItemsPreReloadPlugin;
46
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\CartBundlePricesPreCheckPlugin;
47
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\CartItemWithBundleGroupKeyExpanderPlugin;
48
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\CartPostSaveUpdateBundlesPlugin;
49
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\ExpandBundleItemsPlugin;
50
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\ExpandBundleItemsWithImagesPlugin;
51
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\OrderAmendmentProductBundleAvailabilityCartPreCheckPlugin;
52
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\OrderAmendmentProductBundleStatusCartPreCheckPlugin;
53
use Spryker\Zed\ProductCartConnector\Communication\Plugin\Cart\OrderAmendmentProductExistsCartPreCheckPlugin;
54
use Spryker\Zed\ProductCartConnector\Communication\Plugin\Cart\OrderAmendmentRemoveInactiveItemsPreReloadPlugin;
55
use Spryker\Zed\ProductCartConnector\Communication\Plugin\ProductCartPlugin;
56
use Spryker\Zed\ProductCartConnector\Communication\Plugin\ProductExistsCartPreCheckPlugin;
57
use Spryker\Zed\ProductCartConnector\Communication\Plugin\ProductUrlItemExpanderPlugin;
58
use Spryker\Zed\ProductCartConnector\Communication\Plugin\RemoveInactiveItemsPreReloadPlugin;
59
use Spryker\Zed\ProductConfigurationCart\Communication\Plugin\Cart\ProductConfigurationGroupKeyItemExpanderPlugin;
60
use Spryker\Zed\ProductDiscontinued\Communication\Plugin\Cart\OrderAmendmentProductDiscontinuedCartPreCheckPlugin;
61
use Spryker\Zed\ProductDiscontinued\Communication\Plugin\Cart\ProductDiscontinuedCartPreCheckPlugin;
62
use Spryker\Zed\ProductImageCartConnector\Communication\Plugin\Cart\ProductImageItemExpanderPlugin;
63
use Spryker\Zed\ProductList\Communication\Plugin\CartExtension\ProductListRestrictedItemsPreCheckPlugin;
64
use Spryker\Zed\ProductList\Communication\Plugin\CartExtension\RemoveRestrictedItemsPreReloadPlugin;
65
use Spryker\Zed\ProductOffer\Communication\Plugin\Cart\FilterInactiveProductOfferPreReloadItemsPlugin;
66
use Spryker\Zed\ProductOffer\Communication\Plugin\Cart\OrderAmendmentFilterInactiveProductOfferPreReloadItemsPlugin;
67
use Spryker\Zed\ProductOffer\Communication\Plugin\Cart\OrderAmendmentProductOfferCartPreCheckPlugin;
68
use Spryker\Zed\ProductOffer\Communication\Plugin\Cart\ProductOfferCartPreCheckPlugin;
69
use Spryker\Zed\ProductOffer\Communication\Plugin\Cart\ProductOfferGroupKeyItemExpanderPlugin;
70
use Spryker\Zed\ProductOptionCartConnector\Communication\Plugin\Cart\CartItemOptionPreCheckPlugin;
71
use Spryker\Zed\ProductOptionCartConnector\Communication\Plugin\CartItemGroupKeyOptionPlugin;
72
use Spryker\Zed\ProductOptionCartConnector\Communication\Plugin\CartItemProductOptionPlugin;
73
use Spryker\Zed\ProductOptionCartConnector\Communication\Plugin\ChangeProductOptionQuantityPlugin;
74
use Spryker\Zed\ProductOptionCartConnector\Communication\Plugin\ProductOptionValuePriceExistsCartPreCheckPlugin;
75
use Spryker\Zed\ProductQuantity\Communication\Plugin\Cart\CartChangeTransferQuantityNormalizerPlugin;
76
use Spryker\Zed\ProductQuantity\Communication\Plugin\Cart\ProductQuantityRestrictionCartPreCheckPlugin;
77
use Spryker\Zed\ProductQuantity\Communication\Plugin\CartExtension\ProductQuantityRestrictionCartRemovalPreCheckPlugin;
78
use Spryker\Zed\SalesMerchantCommission\Communication\Plugin\Cart\SanitizeMerchantCommissionPreReloadPlugin;
79
use Spryker\Zed\SalesOrderAmendment\Communication\Plugin\Cart\OrderAmendmentCartPreCheckPlugin;
80
use Spryker\Zed\SalesOrderAmendment\Communication\Plugin\Cart\ResetAmendmentOrderReferencePreReloadItemsPlugin;
81
use Spryker\Zed\SalesOrderThreshold\Communication\Plugin\Cart\AddThresholdMessagesCartPostReloadItemsPlugin;
82
use Spryker\Zed\SalesOrderThreshold\Communication\Plugin\Cart\SalesOrderThresholdCartTerminationPlugin;
83
use Spryker\Zed\SalesQuantity\Communication\Plugin\Cart\IsQuantitySplittableItemExpanderPlugin;
84
use Spryker\Zed\ShipmentCartConnector\Communication\Plugin\Cart\CartShipmentCartOperationPostSavePlugin;
85
use Spryker\Zed\ShipmentCartConnector\Communication\Plugin\Cart\CartShipmentPreCheckPlugin;
86
use Spryker\Zed\ShipmentCartConnector\Communication\Plugin\Cart\SanitizeCartShipmentItemExpanderPlugin;
87
use Spryker\Zed\ShipmentTypeCart\Communication\Plugin\Cart\ShipmentTypeItemExpanderPlugin;
88
89
class CartDependencyProvider extends SprykerCartDependencyProvider
90
{
91
    /**
92
     * @param \Spryker\Zed\Kernel\Container $container
93
     *
94
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\ItemExpanderPluginInterface>
95
     */
96
    protected function getExpanderPlugins(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
97
    {
98
        return [
99
            new ProductCartPlugin(),
100
            new IsQuantitySplittableItemExpanderPlugin(),
101
            new CartItemPricePlugin(),
102
            new CartItemProductOptionPlugin(),
103
            new ExpandBundleItemsPlugin(),
104
            new ExpandBundleItemsWithImagesPlugin(),
105
            new SkuGroupKeyPlugin(),
106
            new CartItemGroupKeyOptionPlugin(),
107
            new CartItemWithBundleGroupKeyExpanderPlugin(),
108
            new ProductImageItemExpanderPlugin(),
109
            new CartGroupPromotionItems(),
110
            new GiftCardMetadataExpanderPlugin(), #GiftCardFeature
111
            new ConfiguredBundleQuantityPerSlotItemExpanderPlugin(),
112
            new ConfiguredBundleGroupKeyItemExpanderPlugin(),
113
            new ProductUrlItemExpanderPlugin(),
114
            new SanitizeCartShipmentItemExpanderPlugin(),
115
            new ProductOfferGroupKeyItemExpanderPlugin(),
116
            new MerchantShipmentItemExpanderPlugin(),
117
            new ProductConfigurationGroupKeyItemExpanderPlugin(),
118
            new ShipmentTypeItemExpanderPlugin(),
119
            new RemoveQuotePaymentCartItemExpanderPlugin(),
120
        ];
121
    }
122
123
    /**
124
     * @param \Spryker\Zed\Kernel\Container $container
125
     *
126
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\CartChangeTransferNormalizerPluginInterface>
127
     */
128
    protected function getCartBeforePreCheckNormalizerPlugins(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
129
    {
130
        return [
131
            new CartChangeTransferQuantityNormalizerPlugin(),
132
        ];
133
    }
134
135
    /**
136
     * @param \Spryker\Zed\Kernel\Container $container
137
     *
138
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\CartPreCheckPluginInterface>
139
     */
140
    protected function getCartPreCheckPlugins(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
141
    {
142
        return [
143
            new ProductExistsCartPreCheckPlugin(),
144
            new CheckAvailabilityPlugin(),
145
            new CartItemPricePreCheckPlugin(),
146
            new CartBundlePricesPreCheckPlugin(),
147
            new CartItemOptionPreCheckPlugin(),
148
            new ProductOptionValuePriceExistsCartPreCheckPlugin(),
149
            new CartBundleAvailabilityPreCheckPlugin(),
150
            new CartBundleActivePreCheckPlugin(),
151
            new CartShipmentPreCheckPlugin(),
152
            new ProductQuantityRestrictionCartPreCheckPlugin(),
153
            new ProductListRestrictedItemsPreCheckPlugin(),
154
            new ProductDiscontinuedCartPreCheckPlugin(), #ProductDiscontinuedFeature
155
            new ConfiguredBundleTemplateSlotCombinationPreCheckPlugin(),
156
            new DiscountPromotionCartPreCheckPlugin(),
157
            new ProductOfferCartPreCheckPlugin(),
158
            new MerchantProductOptionCartPreCheckPlugin(),
159
            new ProductApprovalCartPreCheckPlugin(),
160
        ];
161
    }
162
163
    /**
164
     * @param \Spryker\Zed\Kernel\Container $container
165
     *
166
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\CartOperationPostSavePluginInterface>
167
     */
168
    protected function getPostSavePlugins(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
169
    {
170
        return [
171
            new ChangeProductOptionQuantityPlugin(),
172
            new CartPostSaveUpdateBundlesPlugin(),
173
            new RemovePaymentCartPostSavePlugin(),
174
            new ConfiguredBundleQuantityPostSavePlugin(),
175
            new CartShipmentCartOperationPostSavePlugin(),
176
        ];
177
    }
178
179
    /**
180
     * @param \Spryker\Zed\Kernel\Container $container
181
     *
182
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\PreReloadItemsPluginInterface>
183
     */
184
    protected function getPreReloadPlugins(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
185
    {
186
        return [
187
            new CartConfigurableBundlePreReloadPlugin(),
188
            new CartBundleItemsPreReloadPlugin(),
189
            new RemoveInactiveItemsPreReloadPlugin(),
190
            new RemoveRestrictedItemsPreReloadPlugin(),
191
            new CleanUpItemsPreReloadPlugin(),
192
            new FilterItemsWithoutPricePlugin(),
193
            new ConfiguredBundleQuantityPerSlotPreReloadItemsPlugin(),
194
            new RemoveRestrictedItemsPreReloadPlugin(),
195
            new FilterInactiveProductOfferPreReloadItemsPlugin(),
196
            new ProductApprovalPreReloadItemsPlugin(),
197
            new SanitizeMerchantCommissionPreReloadPlugin(),
198
            new ResetAmendmentOrderReferencePreReloadItemsPlugin(),
199
            new ResetOriginalSalesOrderItemUnitPricesPreReloadItemsPlugin(),
200
        ];
201
    }
202
203
    /**
204
     * @param \Spryker\Zed\Kernel\Container $container
205
     *
206
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\PostReloadItemsPluginInterface>
207
     */
208
    protected function getPostReloadItemsPlugins(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
209
    {
210
        return [
211
            new AddThresholdMessagesCartPostReloadItemsPlugin(), #SalesOrderThresholdFeature
212
        ];
213
    }
214
215
    /**
216
     * @param \Spryker\Zed\Kernel\Container $container
217
     *
218
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\CartTerminationPluginInterface>
219
     */
220
    protected function getTerminationPlugins(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
221
    {
222
        return [
223
            new ConfiguredBundleQuantityCartTerminationPlugin(),
224
            new SalesOrderThresholdCartTerminationPlugin(),
225
        ];
226
    }
227
228
    /**
229
     * @param \Spryker\Zed\Kernel\Container $container
230
     *
231
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\CartRemovalPreCheckPluginInterface>
232
     */
233
    protected function getCartRemovalPreCheckPlugins(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
234
    {
235
        return [
236
            new ProductQuantityRestrictionCartRemovalPreCheckPlugin(),
237
        ];
238
    }
239
240
    /**
241
     * @param \Spryker\Zed\Kernel\Container $container
242
     *
243
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\QuoteChangeObserverPluginInterface>
244
     */
245
    protected function getQuoteChangeObserverPlugins(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
246
    {
247
        return [
248
            new DiscountQuoteChangeObserverPlugin(),
249
            new BundleItemPriceQuoteChangeObserverPlugin(),
250
        ];
251
    }
252
253
    /**
254
     * @param \Spryker\Zed\Kernel\Container $container
255
     *
256
     * @return list<\Spryker\Zed\CartExtension\Dependency\Plugin\ItemExpanderPluginInterface>
257
     */
258
    protected function getExpanderPluginsForOrderAmendment(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
259
    {
260
        return [
261
            new ProductCartPlugin(),
262
            new IsQuantitySplittableItemExpanderPlugin(),
263
            new CartItemPricePlugin(),
264
            new CartItemProductOptionPlugin(),
265
            new ExpandBundleItemsPlugin(),
266
            new ExpandBundleItemsWithImagesPlugin(),
267
            new SkuGroupKeyPlugin(),
268
            new CartItemGroupKeyOptionPlugin(),
269
            new CartItemWithBundleGroupKeyExpanderPlugin(),
270
            new ProductImageItemExpanderPlugin(),
271
            new CartGroupPromotionItems(),
272
            new GiftCardMetadataExpanderPlugin(), #GiftCardFeature
273
            new ConfiguredBundleQuantityPerSlotItemExpanderPlugin(),
274
            new ConfiguredBundleGroupKeyItemExpanderPlugin(),
275
            new ProductUrlItemExpanderPlugin(),
276
            new SanitizeCartShipmentItemExpanderPlugin(),
277
            new ProductOfferGroupKeyItemExpanderPlugin(),
278
            new MerchantShipmentItemExpanderPlugin(),
279
            new ProductConfigurationGroupKeyItemExpanderPlugin(),
280
            new ShipmentTypeItemExpanderPlugin(),
281
            new RemoveQuotePaymentCartItemExpanderPlugin(),
282
            new PriceItemExpanderPlugin(),
283
            new OriginalSalesOrderItemPriceItemExpanderPlugin(),
284
        ];
285
    }
286
287
    /**
288
     * @return list<\Spryker\Zed\CartExtension\Dependency\Plugin\CartPreCheckPluginInterface>
289
     */
290
    protected function getCartPreCheckPluginsForOrderAmendment(): array
291
    {
292
        return [
293
            new CheckAvailabilityPlugin(),
294
            new CartBundlePricesPreCheckPlugin(),
295
            new CartItemOptionPreCheckPlugin(),
296
            new ProductOptionValuePriceExistsCartPreCheckPlugin(),
297
            new CartShipmentPreCheckPlugin(),
298
            new ProductQuantityRestrictionCartPreCheckPlugin(),
299
            new ProductListRestrictedItemsPreCheckPlugin(),
300
            new ConfiguredBundleTemplateSlotCombinationPreCheckPlugin(),
301
            new DiscountPromotionCartPreCheckPlugin(),
302
            new MerchantProductOptionCartPreCheckPlugin(),
303
            new OrderAmendmentProductExistsCartPreCheckPlugin(),
304
            new OrderAmendmentProductBundleAvailabilityCartPreCheckPlugin(),
305
            new OrderAmendmentProductBundleStatusCartPreCheckPlugin(),
306
            new OrderAmendmentProductDiscontinuedCartPreCheckPlugin(), #ProductDiscontinuedFeature
307
            new OrderAmendmentProductOfferCartPreCheckPlugin(),
308
            new OrderAmendmentProductApprovalCartPreCheckPlugin(),
309
            new OrderAmendmentCartPreCheckPlugin(),
310
        ];
311
    }
312
313
    /**
314
     * @param \Spryker\Zed\Kernel\Container $container
315
     *
316
     * @return list<\Spryker\Zed\CartExtension\Dependency\Plugin\PreReloadItemsPluginInterface>
317
     */
318
    protected function getPreReloadPluginsForOrderAmendment(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
319
    {
320
        return [
321
            new CartConfigurableBundlePreReloadPlugin(),
322
            new CartBundleItemsPreReloadPlugin(),
323
            new RemoveRestrictedItemsPreReloadPlugin(),
324
            new CleanUpItemsPreReloadPlugin(),
325
            new ConfiguredBundleQuantityPerSlotPreReloadItemsPlugin(),
326
            new SanitizeMerchantCommissionPreReloadPlugin(),
327
            new OrderAmendmentRemoveInactiveItemsPreReloadPlugin(),
328
            new OrderAmendmentFilterInactiveProductOfferPreReloadItemsPlugin(),
329
            new OrderAmendmentProductApprovalPreReloadItemsPlugin(),
330
        ];
331
    }
332
}
333