Completed
Push — master ( 0541e3...1b0cb6 )
by Ilya
55s queued 18s
created

getExpanderPluginsForOrderAmendment()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 23
Code Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 21
dl 0
loc 23
rs 9.584
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\PaymentCartConnector\Communication\Plugin\Cart\RemovePaymentCartPostSavePlugin;
29
use Spryker\Zed\PaymentCartConnector\Communication\Plugin\Cart\RemoveQuotePaymentCartItemExpanderPlugin;
30
use Spryker\Zed\PriceCartConnector\Communication\Plugin\Cart\PriceItemExpanderPlugin;
31
use Spryker\Zed\PriceCartConnector\Communication\Plugin\CartItemPricePlugin;
32
use Spryker\Zed\PriceCartConnector\Communication\Plugin\CartItemPricePreCheckPlugin;
33
use Spryker\Zed\PriceCartConnector\Communication\Plugin\FilterItemsWithoutPricePlugin;
34
use Spryker\Zed\PriceProductSalesOrderAmendment\Communication\Plugin\Cart\OriginalSalesOrderItemPriceItemExpanderPlugin;
35
use Spryker\Zed\PriceProductSalesOrderAmendment\Communication\Plugin\Cart\ResetOriginalSalesOrderItemUnitPricesPreReloadItemsPlugin;
36
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\BundleItemPriceQuoteChangeObserverPlugin;
37
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\CartBundleActivePreCheckPlugin;
38
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\CartBundleAvailabilityPreCheckPlugin;
39
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\CartBundleItemsPreReloadPlugin;
40
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\CartBundlePricesPreCheckPlugin;
41
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\CartItemWithBundleGroupKeyExpanderPlugin;
42
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\CartPostSaveUpdateBundlesPlugin;
43
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\ExpandBundleItemsPlugin;
44
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\ExpandBundleItemsWithImagesPlugin;
45
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\OrderAmendmentProductBundleAvailabilityCartPreCheckPlugin;
46
use Spryker\Zed\ProductBundle\Communication\Plugin\Cart\OrderAmendmentProductBundleStatusCartPreCheckPlugin;
47
use Spryker\Zed\ProductCartConnector\Communication\Plugin\Cart\OrderAmendmentProductExistsCartPreCheckPlugin;
48
use Spryker\Zed\ProductCartConnector\Communication\Plugin\Cart\OrderAmendmentRemoveInactiveItemsPreReloadPlugin;
49
use Spryker\Zed\ProductCartConnector\Communication\Plugin\ProductCartPlugin;
50
use Spryker\Zed\ProductCartConnector\Communication\Plugin\ProductExistsCartPreCheckPlugin;
51
use Spryker\Zed\ProductCartConnector\Communication\Plugin\ProductUrlItemExpanderPlugin;
52
use Spryker\Zed\ProductCartConnector\Communication\Plugin\RemoveInactiveItemsPreReloadPlugin;
53
use Spryker\Zed\ProductConfigurationCart\Communication\Plugin\Cart\ProductConfigurationGroupKeyItemExpanderPlugin;
54
use Spryker\Zed\ProductDiscontinued\Communication\Plugin\Cart\OrderAmendmentProductDiscontinuedCartPreCheckPlugin;
55
use Spryker\Zed\ProductDiscontinued\Communication\Plugin\Cart\ProductDiscontinuedCartPreCheckPlugin;
56
use Spryker\Zed\ProductImageCartConnector\Communication\Plugin\Cart\ProductImageItemExpanderPlugin;
57
use Spryker\Zed\ProductList\Communication\Plugin\CartExtension\ProductListRestrictedItemsPreCheckPlugin;
58
use Spryker\Zed\ProductList\Communication\Plugin\CartExtension\RemoveRestrictedItemsPreReloadPlugin;
59
use Spryker\Zed\ProductOptionCartConnector\Communication\Plugin\Cart\CartItemOptionPreCheckPlugin;
60
use Spryker\Zed\ProductOptionCartConnector\Communication\Plugin\CartItemGroupKeyOptionPlugin;
61
use Spryker\Zed\ProductOptionCartConnector\Communication\Plugin\CartItemProductOptionPlugin;
62
use Spryker\Zed\ProductOptionCartConnector\Communication\Plugin\ChangeProductOptionQuantityPlugin;
63
use Spryker\Zed\ProductOptionCartConnector\Communication\Plugin\ProductOptionValuePriceExistsCartPreCheckPlugin;
64
use Spryker\Zed\ProductQuantity\Communication\Plugin\Cart\CartChangeTransferQuantityNormalizerPlugin;
65
use Spryker\Zed\ProductQuantity\Communication\Plugin\Cart\ProductQuantityRestrictionCartPreCheckPlugin;
66
use Spryker\Zed\ProductQuantity\Communication\Plugin\CartExtension\ProductQuantityRestrictionCartRemovalPreCheckPlugin;
67
use Spryker\Zed\SalesOrderAmendment\Communication\Plugin\Cart\OrderAmendmentCartPreCheckPlugin;
68
use Spryker\Zed\SalesOrderAmendment\Communication\Plugin\Cart\ResetAmendmentOrderReferencePreReloadItemsPlugin;
69
use Spryker\Zed\SalesOrderThreshold\Communication\Plugin\Cart\AddThresholdMessagesCartPostReloadItemsPlugin;
70
use Spryker\Zed\SalesOrderThreshold\Communication\Plugin\Cart\SalesOrderThresholdCartTerminationPlugin;
71
use Spryker\Zed\SalesQuantity\Communication\Plugin\Cart\IsQuantitySplittableItemExpanderPlugin;
72
use Spryker\Zed\ShipmentCartConnector\Communication\Plugin\Cart\CartShipmentCartOperationPostSavePlugin;
73
use Spryker\Zed\ShipmentCartConnector\Communication\Plugin\Cart\CartShipmentPreCheckPlugin;
74
use Spryker\Zed\ShipmentCartConnector\Communication\Plugin\Cart\SanitizeCartShipmentItemExpanderPlugin;
75
76
class CartDependencyProvider extends SprykerCartDependencyProvider
77
{
78
    /**
79
     * @param \Spryker\Zed\Kernel\Container $container
80
     *
81
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\ItemExpanderPluginInterface>
82
     */
83
    protected function getExpanderPlugins(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
84
    {
85
        return [
86
            new ProductCartPlugin(),
87
            new IsQuantitySplittableItemExpanderPlugin(),
88
            new CartItemPricePlugin(),
89
            new CartItemProductOptionPlugin(),
90
            new ExpandBundleItemsPlugin(),
91
            new ExpandBundleItemsWithImagesPlugin(),
92
            new SkuGroupKeyPlugin(),
93
            new CartItemGroupKeyOptionPlugin(),
94
            new CartItemWithBundleGroupKeyExpanderPlugin(),
95
            new ProductImageItemExpanderPlugin(),
96
            new CartGroupPromotionItems(),
97
            new GiftCardMetadataExpanderPlugin(), #GiftCardFeature
98
            new ConfiguredBundleQuantityPerSlotItemExpanderPlugin(),
99
            new ConfiguredBundleGroupKeyItemExpanderPlugin(),
100
            new ProductUrlItemExpanderPlugin(),
101
            new SanitizeCartShipmentItemExpanderPlugin(),
102
            new ProductConfigurationGroupKeyItemExpanderPlugin(),
103
            new RemoveQuotePaymentCartItemExpanderPlugin(),
104
        ];
105
    }
106
107
    /**
108
     * @param \Spryker\Zed\Kernel\Container $container
109
     *
110
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\ItemExpanderPluginInterface>
111
     */
112
    protected function getExpanderPluginsForOrderAmendment(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
113
    {
114
        return [
115
            new ProductCartPlugin(),
116
            new IsQuantitySplittableItemExpanderPlugin(),
117
            new CartItemPricePlugin(),
118
            new CartItemProductOptionPlugin(),
119
            new ExpandBundleItemsPlugin(),
120
            new ExpandBundleItemsWithImagesPlugin(),
121
            new SkuGroupKeyPlugin(),
122
            new CartItemGroupKeyOptionPlugin(),
123
            new CartItemWithBundleGroupKeyExpanderPlugin(),
124
            new ProductImageItemExpanderPlugin(),
125
            new CartGroupPromotionItems(),
126
            new GiftCardMetadataExpanderPlugin(), #GiftCardFeature
127
            new ConfiguredBundleQuantityPerSlotItemExpanderPlugin(),
128
            new ConfiguredBundleGroupKeyItemExpanderPlugin(),
129
            new ProductUrlItemExpanderPlugin(),
130
            new SanitizeCartShipmentItemExpanderPlugin(),
131
            new ProductConfigurationGroupKeyItemExpanderPlugin(),
132
            new RemoveQuotePaymentCartItemExpanderPlugin(),
133
            new PriceItemExpanderPlugin(),
134
            new OriginalSalesOrderItemPriceItemExpanderPlugin(),
135
        ];
136
    }
137
138
    /**
139
     * @param \Spryker\Zed\Kernel\Container $container
140
     *
141
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\CartChangeTransferNormalizerPluginInterface>
142
     */
143
    protected function getCartBeforePreCheckNormalizerPlugins(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
144
    {
145
        return [
146
            new CartChangeTransferQuantityNormalizerPlugin(),
147
        ];
148
    }
149
150
    /**
151
     * @param \Spryker\Zed\Kernel\Container $container
152
     *
153
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\CartPreCheckPluginInterface>
154
     */
155
    protected function getCartPreCheckPlugins(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
156
    {
157
        return [
158
            new ProductExistsCartPreCheckPlugin(),
159
            new CheckAvailabilityPlugin(),
160
            new CartItemPricePreCheckPlugin(),
161
            new CartBundlePricesPreCheckPlugin(),
162
            new CartItemOptionPreCheckPlugin(),
163
            new ProductOptionValuePriceExistsCartPreCheckPlugin(),
164
            new CartBundleAvailabilityPreCheckPlugin(),
165
            new CartBundleActivePreCheckPlugin(),
166
            new CartShipmentPreCheckPlugin(),
167
            new ProductQuantityRestrictionCartPreCheckPlugin(),
168
            new ProductListRestrictedItemsPreCheckPlugin(),
169
            new ProductDiscontinuedCartPreCheckPlugin(), #ProductDiscontinuedFeature
170
            new ConfiguredBundleTemplateSlotCombinationPreCheckPlugin(),
171
            new DiscountPromotionCartPreCheckPlugin(),
172
        ];
173
    }
174
175
    /**
176
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\CartPreCheckPluginInterface>
177
     */
178
    protected function getCartPreCheckPluginsForOrderAmendment(): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
179
    {
180
        return [
181
            new CheckAvailabilityPlugin(),
182
            new CartBundlePricesPreCheckPlugin(),
183
            new CartItemOptionPreCheckPlugin(),
184
            new ProductOptionValuePriceExistsCartPreCheckPlugin(),
185
            new CartShipmentPreCheckPlugin(),
186
            new ProductQuantityRestrictionCartPreCheckPlugin(),
187
            new ProductListRestrictedItemsPreCheckPlugin(),
188
            new ConfiguredBundleTemplateSlotCombinationPreCheckPlugin(),
189
            new DiscountPromotionCartPreCheckPlugin(),
190
            new OrderAmendmentProductExistsCartPreCheckPlugin(),
191
            new OrderAmendmentProductBundleAvailabilityCartPreCheckPlugin(),
192
            new OrderAmendmentProductBundleStatusCartPreCheckPlugin(),
193
            new OrderAmendmentProductDiscontinuedCartPreCheckPlugin(), #ProductDiscontinuedFeature
194
            new OrderAmendmentCartPreCheckPlugin(),
195
        ];
196
    }
197
198
    /**
199
     * @param \Spryker\Zed\Kernel\Container $container
200
     *
201
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\CartOperationPostSavePluginInterface>
202
     */
203
    protected function getPostSavePlugins(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
204
    {
205
        return [
206
            new ChangeProductOptionQuantityPlugin(),
207
            new CartPostSaveUpdateBundlesPlugin(),
208
            new RemovePaymentCartPostSavePlugin(),
209
            new ConfiguredBundleQuantityPostSavePlugin(),
210
            new CartShipmentCartOperationPostSavePlugin(),
211
        ];
212
    }
213
214
    /**
215
     * @param \Spryker\Zed\Kernel\Container $container
216
     *
217
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\PreReloadItemsPluginInterface>
218
     */
219
    protected function getPreReloadPlugins(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
220
    {
221
        return [
222
            new CartConfigurableBundlePreReloadPlugin(),
223
            new CartBundleItemsPreReloadPlugin(),
224
            new RemoveInactiveItemsPreReloadPlugin(),
225
            new RemoveRestrictedItemsPreReloadPlugin(),
226
            new CleanUpItemsPreReloadPlugin(),
227
            new FilterItemsWithoutPricePlugin(),
228
            new ConfiguredBundleQuantityPerSlotPreReloadItemsPlugin(),
229
            new ResetAmendmentOrderReferencePreReloadItemsPlugin(),
230
            new ResetOriginalSalesOrderItemUnitPricesPreReloadItemsPlugin(),
231
        ];
232
    }
233
234
    /**
235
     * @param \Spryker\Zed\Kernel\Container $container
236
     *
237
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\PreReloadItemsPluginInterface>
238
     */
239
    protected function getPreReloadPluginsForOrderAmendment(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
240
    {
241
        return [
242
            new CartConfigurableBundlePreReloadPlugin(),
243
            new CartBundleItemsPreReloadPlugin(),
244
            new RemoveRestrictedItemsPreReloadPlugin(),
245
            new CleanUpItemsPreReloadPlugin(),
246
            new ConfiguredBundleQuantityPerSlotPreReloadItemsPlugin(),
247
            new OrderAmendmentRemoveInactiveItemsPreReloadPlugin(),
248
        ];
249
    }
250
251
    /**
252
     * @param \Spryker\Zed\Kernel\Container $container
253
     *
254
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\PostReloadItemsPluginInterface>
255
     */
256
    protected function getPostReloadItemsPlugins(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
257
    {
258
        return [
259
            new AddThresholdMessagesCartPostReloadItemsPlugin(), #SalesOrderThresholdFeature
260
        ];
261
    }
262
263
    /**
264
     * @param \Spryker\Zed\Kernel\Container $container
265
     *
266
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\CartTerminationPluginInterface>
267
     */
268
    protected function getTerminationPlugins(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
269
    {
270
        return [
271
            new ConfiguredBundleQuantityCartTerminationPlugin(),
272
            new SalesOrderThresholdCartTerminationPlugin(),
273
        ];
274
    }
275
276
    /**
277
     * @param \Spryker\Zed\Kernel\Container $container
278
     *
279
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\CartRemovalPreCheckPluginInterface>
280
     */
281
    protected function getCartRemovalPreCheckPlugins(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
282
    {
283
        return [
284
            new ProductQuantityRestrictionCartRemovalPreCheckPlugin(),
285
        ];
286
    }
287
288
    /**
289
     * @param \Spryker\Zed\Kernel\Container $container
290
     *
291
     * @return array<\Spryker\Zed\CartExtension\Dependency\Plugin\QuoteChangeObserverPluginInterface>
292
     */
293
    protected function getQuoteChangeObserverPlugins(Container $container): array // phpcs:ignore SlevomatCodingStandard.Functions.UnusedParameter
294
    {
295
        return [
296
            new DiscountQuoteChangeObserverPlugin(),
297
            new BundleItemPriceQuoteChangeObserverPlugin(),
298
        ];
299
    }
300
}
301