DataImportBusinessFactory::createDiscountConfig()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
c 0
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 0
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\DataImport\Business;
11
12
use Generated\Shared\Transfer\DataImportConfigurationActionTransfer;
13
use Generated\Shared\Transfer\DataImporterConfigurationTransfer;
14
use Pyz\Zed\DataImport\Business\CombinedProduct\Product\CombinedAttributesExtractorStep;
15
use Pyz\Zed\DataImport\Business\CombinedProduct\Product\CombinedProductLocalizedAttributesExtractorStep;
16
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductAbstract\CombinedProductAbstractHydratorStep;
17
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductAbstract\CombinedProductAbstractTypeDataSetCondition;
18
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductAbstract\Writer\CombinedProductAbstractPropelDataSetWriter;
19
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductAbstractStore\CombinedProductAbstractStoreHydratorStep;
20
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductAbstractStore\CombinedProductAbstractStoreMandatoryColumnCondition;
21
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductAbstractStore\Writer\CombinedProductAbstractStorePropelDataSetWriter;
22
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductConcrete\CombinedProductConcreteHydratorStep;
23
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductConcrete\CombinedProductConcreteTypeDataSetCondition;
24
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductConcrete\Writer\CombinedProductConcretePropelDataSetWriter;
25
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductGroup\CombinedProductGroupMandatoryColumnCondition;
26
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductGroup\CombinedProductGroupWriter;
27
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductImage\CombinedProductImageHydratorStep;
28
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductImage\CombinedProductImageMandatoryColumnCondition;
29
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductImage\Writer\CombinedProductImagePropelDataSetWriter;
30
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductPrice\CombinedProductPriceHydratorStep;
31
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductPrice\CombinedProductPriceMandatoryColumnCondition;
32
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductPrice\Writer\CombinedProductPricePropelDataSetWriter;
33
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductStock\CombinedProductStockHydratorStep;
34
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductStock\CombinedProductStockMandatoryColumnCondition;
35
use Pyz\Zed\DataImport\Business\CombinedProduct\ProductStock\Writer\CombinedProductStockPropelDataSetWriter;
36
use Pyz\Zed\DataImport\Business\Model\CategoryTemplate\CategoryTemplateWriterStep;
37
use Pyz\Zed\DataImport\Business\Model\CmsBlock\CmsBlockWriterStep;
38
use Pyz\Zed\DataImport\Business\Model\CmsBlockStore\CmsBlockStoreWriterStep;
39
use Pyz\Zed\DataImport\Business\Model\CmsTemplate\CmsTemplateWriterStep;
40
use Pyz\Zed\DataImport\Business\Model\Country\Repository\CountryRepository;
41
use Pyz\Zed\DataImport\Business\Model\Country\Repository\CountryRepositoryInterface;
42
use Pyz\Zed\DataImport\Business\Model\Currency\CurrencyWriterStep;
43
use Pyz\Zed\DataImport\Business\Model\Customer\CustomerWriterStep;
44
use Pyz\Zed\DataImport\Business\Model\DataImporterConditional;
45
use Pyz\Zed\DataImport\Business\Model\DataImporterDataSetWriterAwareConditional;
46
use Pyz\Zed\DataImport\Business\Model\DataSet\DataSetConditionInterface;
47
use Pyz\Zed\DataImport\Business\Model\Discount\DiscountWriterStep;
48
use Pyz\Zed\DataImport\Business\Model\DiscountAmount\DiscountAmountWriterStep;
49
use Pyz\Zed\DataImport\Business\Model\DiscountStore\DiscountStoreWriterStep;
50
use Pyz\Zed\DataImport\Business\Model\DiscountVoucher\DiscountVoucherWriterStep;
51
use Pyz\Zed\DataImport\Business\Model\Glossary\GlossaryWriterStep;
52
use Pyz\Zed\DataImport\Business\Model\Locale\AddLocalesStep;
53
use Pyz\Zed\DataImport\Business\Model\Locale\LocaleNameToIdLocaleStep;
54
use Pyz\Zed\DataImport\Business\Model\Locale\Repository\LocaleRepository;
55
use Pyz\Zed\DataImport\Business\Model\Locale\Repository\LocaleRepositoryInterface;
56
use Pyz\Zed\DataImport\Business\Model\MerchantUser\MerchantUserWriterStep;
57
use Pyz\Zed\DataImport\Business\Model\Navigation\NavigationKeyToIdNavigationStep;
58
use Pyz\Zed\DataImport\Business\Model\Navigation\NavigationWriterStep;
59
use Pyz\Zed\DataImport\Business\Model\NavigationNode\NavigationNodeValidityDatesStep;
60
use Pyz\Zed\DataImport\Business\Model\NavigationNode\NavigationNodeWriterStep;
61
use Pyz\Zed\DataImport\Business\Model\Product\AttributesExtractorStep;
62
use Pyz\Zed\DataImport\Business\Model\Product\ProductLocalizedAttributesExtractorStep;
63
use Pyz\Zed\DataImport\Business\Model\Product\Repository\ProductRepository;
64
use Pyz\Zed\DataImport\Business\Model\ProductAbstract\AddCategoryKeysStep;
65
use Pyz\Zed\DataImport\Business\Model\ProductAbstract\AddProductAbstractSkusStep;
66
use Pyz\Zed\DataImport\Business\Model\ProductAbstract\ProductAbstractHydratorStep;
67
use Pyz\Zed\DataImport\Business\Model\ProductAbstract\ProductAbstractSkuToIdProductAbstractStep;
68
use Pyz\Zed\DataImport\Business\Model\ProductAbstract\Writer\ProductAbstractPropelDataSetWriter;
69
use Pyz\Zed\DataImport\Business\Model\ProductAbstractStore\ProductAbstractStoreHydratorStep;
70
use Pyz\Zed\DataImport\Business\Model\ProductAbstractStore\Writer\ProductAbstractStorePropelDataSetWriter;
71
use Pyz\Zed\DataImport\Business\Model\ProductAttributeKey\AddProductAttributeKeysStep;
72
use Pyz\Zed\DataImport\Business\Model\ProductAttributeKey\ProductAttributeKeyWriter;
73
use Pyz\Zed\DataImport\Business\Model\ProductConcrete\ProductConcreteAttributesUniqueCheckStep;
74
use Pyz\Zed\DataImport\Business\Model\ProductConcrete\ProductConcreteHydratorStep;
75
use Pyz\Zed\DataImport\Business\Model\ProductConcrete\ProductSkuToIdProductStep;
76
use Pyz\Zed\DataImport\Business\Model\ProductConcrete\Writer\ProductConcretePropelDataSetWriter;
77
use Pyz\Zed\DataImport\Business\Model\ProductGroup\ProductGroupWriter;
78
use Pyz\Zed\DataImport\Business\Model\ProductImage\ProductImageHydratorStep;
79
use Pyz\Zed\DataImport\Business\Model\ProductImage\Repository\ProductImageRepository;
80
use Pyz\Zed\DataImport\Business\Model\ProductImage\Repository\ProductImageRepositoryInterface;
81
use Pyz\Zed\DataImport\Business\Model\ProductImage\Writer\ProductImagePropelDataSetWriter;
82
use Pyz\Zed\DataImport\Business\Model\ProductManagementAttribute\ProductManagementAttributeWriter;
83
use Pyz\Zed\DataImport\Business\Model\ProductManagementAttribute\ProductManagementLocalizedAttributesExtractorStep;
84
use Pyz\Zed\DataImport\Business\Model\ProductOption\ProductOptionWriterStep;
85
use Pyz\Zed\DataImport\Business\Model\ProductOptionPrice\ProductOptionPriceWriterStep;
86
use Pyz\Zed\DataImport\Business\Model\ProductReview\ProductReviewWriterStep;
87
use Pyz\Zed\DataImport\Business\Model\ProductSearchAttribute\Hook\ProductSearchAfterImportHook;
88
use Pyz\Zed\DataImport\Business\Model\ProductSearchAttribute\ProductSearchAttributeWriter;
89
use Pyz\Zed\DataImport\Business\Model\ProductSearchAttributeMap\ProductSearchAttributeMapWriter;
90
use Pyz\Zed\DataImport\Business\Model\ProductSet\ProductSetImageExtractorStep;
91
use Pyz\Zed\DataImport\Business\Model\ProductSet\ProductSetImageLocalizedAttributesExtractorStep;
92
use Pyz\Zed\DataImport\Business\Model\ProductSet\ProductSetWriterStep;
93
use Pyz\Zed\DataImport\Business\Model\ProductStock\ProductStockHydratorStep;
94
use Pyz\Zed\DataImport\Business\Model\ProductStock\Writer\ProductStockPropelDataSetWriter;
95
use Pyz\Zed\DataImport\Business\Model\Tax\TaxSetNameToIdTaxSetStep;
96
use Pyz\Zed\DataImport\Business\Model\Tax\TaxWriterStep;
97
use Pyz\Zed\DataImport\Communication\Plugin\CombinedProduct\ProductAbstract\CombinedProductAbstractPropelWriterPlugin;
98
use Pyz\Zed\DataImport\Communication\Plugin\CombinedProduct\ProductAbstractStore\CombinedProductAbstractStorePropelWriterPlugin;
99
use Pyz\Zed\DataImport\Communication\Plugin\CombinedProduct\ProductConcrete\CombinedProductConcretePropelWriterPlugin;
100
use Pyz\Zed\DataImport\Communication\Plugin\CombinedProduct\ProductImage\CombinedProductImagePropelWriterPlugin;
101
use Pyz\Zed\DataImport\Communication\Plugin\CombinedProduct\ProductPrice\CombinedProductPricePropelWriterPlugin;
102
use Pyz\Zed\DataImport\Communication\Plugin\CombinedProduct\ProductStock\CombinedProductStockPropelWriterPlugin;
103
use Pyz\Zed\DataImport\Communication\Plugin\ProductAbstract\ProductAbstractPropelWriterPlugin;
104
use Pyz\Zed\DataImport\Communication\Plugin\ProductAbstractStore\ProductAbstractStorePropelWriterPlugin;
105
use Pyz\Zed\DataImport\Communication\Plugin\ProductConcrete\ProductConcretePropelWriterPlugin;
106
use Pyz\Zed\DataImport\Communication\Plugin\ProductImage\ProductImagePropelWriterPlugin;
107
use Pyz\Zed\DataImport\Communication\Plugin\ProductStock\ProductStockPropelWriterPlugin;
108
use Pyz\Zed\DataImport\DataImportConfig;
109
use Pyz\Zed\DataImport\DataImportDependencyProvider;
110
use Spryker\Shared\ProductSearch\Code\KeyBuilder\FilterGlossaryKeyBuilder;
111
use Spryker\Zed\Currency\Business\CurrencyFacadeInterface;
112
use Spryker\Zed\DataImport\Business\DataImportBusinessFactory as SprykerDataImportBusinessFactory;
113
use Spryker\Zed\DataImport\Business\Model\DataImporterDataSetWriterAwareInterface;
114
use Spryker\Zed\DataImport\Business\Model\DataImporterInterface;
115
use Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface;
116
use Spryker\Zed\DataImport\Business\Model\DataReader\DataReaderInterface;
117
use Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterCollection;
118
use Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface;
119
use Spryker\Zed\Discount\DiscountConfig;
120
use Spryker\Zed\Event\Business\EventFacadeInterface;
121
use Spryker\Zed\MerchantUser\Business\MerchantUserFacadeInterface;
122
use Spryker\Zed\PriceProduct\Business\PriceProductFacadeInterface;
123
use Spryker\Zed\ProductBundle\Business\ProductBundleFacadeInterface;
124
use Spryker\Zed\Stock\Business\StockFacadeInterface;
125
use Spryker\Zed\Store\Business\StoreFacadeInterface;
126
127
/**
128
 * @method \Pyz\Zed\DataImport\DataImportConfig getConfig()
129
 * @SuppressWarnings(PHPMD.CyclomaticComplexity)
130
 * @SuppressWarnings(PHPMD.ExcessiveClassComplexity)
131
 * @SuppressWarnings(PHPMD.ExcessiveClassLength)
132
 */
133
class DataImportBusinessFactory extends SprykerDataImportBusinessFactory
134
{
135
    /**
136
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
137
     *
138
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|null
139
     */
140
    public function getDataImporterByType(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer): ?DataImporterInterface
141
    {
142
        switch ($dataImportConfigurationActionTransfer->getDataEntity()) {
143
            case DataImportConfig::IMPORT_TYPE_CURRENCY:
144
                return $this->createCurrencyImporter($dataImportConfigurationActionTransfer);
145
            case DataImportConfig::IMPORT_TYPE_CATEGORY_TEMPLATE:
146
                return $this->createCategoryTemplateImporter($dataImportConfigurationActionTransfer);
147
            case DataImportConfig::IMPORT_TYPE_CUSTOMER:
148
                return $this->createCustomerImporter($dataImportConfigurationActionTransfer);
149
            case DataImportConfig::IMPORT_TYPE_GLOSSARY:
150
                return $this->createGlossaryImporter($dataImportConfigurationActionTransfer);
151
            case DataImportConfig::IMPORT_TYPE_TAX:
152
                return $this->createTaxImporter($dataImportConfigurationActionTransfer);
153
            case DataImportConfig::IMPORT_TYPE_DISCOUNT:
154
                return $this->createDiscountImporter($dataImportConfigurationActionTransfer);
155
            case DataImportConfig::IMPORT_TYPE_DISCOUNT_STORE:
156
                return $this->createDiscountStoreImporter($dataImportConfigurationActionTransfer);
157
            case DataImportConfig::IMPORT_TYPE_DISCOUNT_VOUCHER:
158
                return $this->createDiscountVoucherImporter($dataImportConfigurationActionTransfer);
159
            case DataImportConfig::IMPORT_TYPE_PRODUCT_ATTRIBUTE_KEY:
160
                return $this->createProductAttributeKeyImporter($dataImportConfigurationActionTransfer);
161
            case DataImportConfig::IMPORT_TYPE_PRODUCT_MANAGEMENT_ATTRIBUTE:
162
                return $this->createProductManagementAttributeImporter($dataImportConfigurationActionTransfer);
163
            case DataImportConfig::IMPORT_TYPE_PRODUCT_ABSTRACT:
164
                return $this->createProductAbstractImporter($dataImportConfigurationActionTransfer);
165
            case DataImportConfig::IMPORT_TYPE_PRODUCT_ABSTRACT_STORE:
166
                return $this->createProductAbstractStoreImporter($dataImportConfigurationActionTransfer);
167
            case DataImportConfig::IMPORT_TYPE_PRODUCT_CONCRETE:
168
                return $this->createProductConcreteImporter($dataImportConfigurationActionTransfer);
169
            case DataImportConfig::IMPORT_TYPE_PRODUCT_IMAGE:
170
                return $this->createProductImageImporter($dataImportConfigurationActionTransfer);
171
            case DataImportConfig::IMPORT_TYPE_PRODUCT_OPTION:
172
                return $this->createProductOptionImporter($dataImportConfigurationActionTransfer);
173
            case DataImportConfig::IMPORT_TYPE_PRODUCT_OPTION_PRICE:
174
                return $this->createProductOptionPriceImporter($dataImportConfigurationActionTransfer);
175
            case DataImportConfig::IMPORT_TYPE_PRODUCT_GROUP:
176
                return $this->createProductGroupImporter($dataImportConfigurationActionTransfer);
177
            case DataImportConfig::IMPORT_TYPE_COMBINED_PRODUCT_ABSTRACT:
178
                return $this->createCombinedProductAbstractImporter($dataImportConfigurationActionTransfer);
179
            case DataImportConfig::IMPORT_TYPE_COMBINED_PRODUCT_ABSTRACT_STORE:
180
                return $this->createCombinedProductAbstractStoreImporter($dataImportConfigurationActionTransfer);
181
            case DataImportConfig::IMPORT_TYPE_COMBINED_PRODUCT_CONCRETE:
182
                return $this->createCombinedProductConcreteImporter($dataImportConfigurationActionTransfer);
183
            case DataImportConfig::IMPORT_TYPE_COMBINED_PRODUCT_IMAGE:
184
                return $this->createCombinedProductImageImporter($dataImportConfigurationActionTransfer);
185
            case DataImportConfig::IMPORT_TYPE_COMBINED_PRODUCT_PRICE:
186
                return $this->createCombinedProductPriceImporter($dataImportConfigurationActionTransfer);
187
            case DataImportConfig::IMPORT_TYPE_COMBINED_PRODUCT_STOCK:
188
                return $this->createCombinedProductStockImporter($dataImportConfigurationActionTransfer);
189
            case DataImportConfig::IMPORT_TYPE_COMBINED_PRODUCT_GROUP:
190
                return $this->createCombinedProductGroupImporter($dataImportConfigurationActionTransfer);
191
            case DataImportConfig::IMPORT_TYPE_PRODUCT_REVIEW:
192
                return $this->createProductReviewImporter($dataImportConfigurationActionTransfer);
193
            case DataImportConfig::IMPORT_TYPE_PRODUCT_SET:
194
                return $this->createProductSetImporter($dataImportConfigurationActionTransfer);
195
            case DataImportConfig::IMPORT_TYPE_PRODUCT_SEARCH_ATTRIBUTE_MAP:
196
                return $this->createProductSearchAttributeMapImporter($dataImportConfigurationActionTransfer);
197
            case DataImportConfig::IMPORT_TYPE_PRODUCT_SEARCH_ATTRIBUTE:
198
                return $this->createProductSearchAttributeImporter($dataImportConfigurationActionTransfer);
199
            case DataImportConfig::IMPORT_TYPE_CMS_TEMPLATE:
200
                return $this->createCmsTemplateImporter($dataImportConfigurationActionTransfer);
201
            case DataImportConfig::IMPORT_TYPE_CMS_BLOCK:
202
                return $this->createCmsBlockImporter($dataImportConfigurationActionTransfer);
203
            case DataImportConfig::IMPORT_TYPE_CMS_BLOCK_STORE:
204
                return $this->createCmsBlockStoreImporter($dataImportConfigurationActionTransfer);
205
            case DataImportConfig::IMPORT_TYPE_DISCOUNT_AMOUNT:
206
                return $this->createDiscountAmountImporter($dataImportConfigurationActionTransfer);
207
            case DataImportConfig::IMPORT_TYPE_PRODUCT_STOCK:
208
                return $this->createProductStockImporter($dataImportConfigurationActionTransfer);
209
            case DataImportConfig::IMPORT_TYPE_NAVIGATION:
210
                return $this->createNavigationImporter($dataImportConfigurationActionTransfer);
211
            case DataImportConfig::IMPORT_TYPE_NAVIGATION_NODE:
212
                return $this->createNavigationNodeImporter($dataImportConfigurationActionTransfer);
213
            case DataImportConfig::IMPORT_TYPE_MERCHANT_USER:
214
                return $this->createMerchantUserImporter($dataImportConfigurationActionTransfer);
215
            default:
216
                return null;
217
        }
218
    }
219
220
    /**
221
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
222
     *
223
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface
224
     */
225
    public function createCurrencyImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer): DataImporterInterface
226
    {
227
        $dataImporter = $this->getCsvDataImporterFromConfig(
228
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
229
        );
230
231
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker();
232
        $dataSetStepBroker->addStep(new CurrencyWriterStep());
233
234
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
235
236
        return $dataImporter;
237
    }
238
239
    /**
240
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
241
     *
242
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface
243
     */
244
    public function createGlossaryImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer): DataImporterInterface
245
    {
246
        $dataImporter = $this->getCsvDataImporterFromConfig(
247
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
248
        );
249
250
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(GlossaryWriterStep::BULK_SIZE);
251
        $dataSetStepBroker
252
            ->addStep($this->createLocaleNameToIdStep(GlossaryWriterStep::KEY_LOCALE))
253
            ->addStep(new GlossaryWriterStep());
254
255
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
256
257
        return $dataImporter;
258
    }
259
260
    /**
261
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
262
     *
263
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface
264
     */
265
    public function createCategoryTemplateImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer): DataImporterInterface
266
    {
267
        $dataImporter = $this->getCsvDataImporterFromConfig(
268
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
269
        );
270
271
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker();
272
        $dataSetStepBroker
273
            ->addStep(new CategoryTemplateWriterStep());
274
275
        $dataImporter
276
            ->addDataSetStepBroker($dataSetStepBroker);
277
278
        return $dataImporter;
279
    }
280
281
    /**
282
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
283
     *
284
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
285
     */
286
    public function createCustomerImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
287
    {
288
        $dataImporter = $this->getCsvDataImporterFromConfig(
289
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
290
        );
291
292
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker();
293
        $dataSetStepBroker->addStep(new CustomerWriterStep());
294
295
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
296
297
        return $dataImporter;
298
    }
299
300
    /**
301
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
302
     *
303
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
304
     */
305
    public function createCmsTemplateImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
306
    {
307
        $dataImporter = $this->getCsvDataImporterFromConfig(
308
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
309
        );
310
311
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker();
312
        $dataSetStepBroker
313
            ->addStep(new CmsTemplateWriterStep());
314
315
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
316
317
        return $dataImporter;
318
    }
319
320
    /**
321
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
322
     *
323
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
324
     */
325
    public function createCmsBlockImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
326
    {
327
        $dataImporter = $this->getCsvDataImporterFromConfig(
328
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
329
        );
330
331
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(CmsBlockWriterStep::BULK_SIZE);
332
        $dataSetStepBroker
333
            ->addStep($this->createAddLocalesStep())
334
            ->addStep($this->createLocalizedAttributesExtractorStep([
335
                CmsBlockWriterStep::KEY_PLACEHOLDER_TITLE,
336
                CmsBlockWriterStep::KEY_PLACEHOLDER_CONTENT,
337
                CmsBlockWriterStep::KEY_PLACEHOLDER_LINK,
338
                CmsBlockWriterStep::KEY_PLACEHOLDER_IMAGE_URL,
339
            ]))
340
            ->addStep(new CmsBlockWriterStep());
341
342
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
343
344
        return $dataImporter;
345
    }
346
347
    /**
348
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
349
     *
350
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
351
     */
352
    public function createCmsBlockStoreImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
353
    {
354
        $dataImporter = $this->getCsvDataImporterFromConfig(
355
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
356
        );
357
358
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(CmsBlockStoreWriterStep::BULK_SIZE);
359
        $dataSetStepBroker->addStep(new CmsBlockStoreWriterStep());
360
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
361
362
        return $dataImporter;
363
    }
364
365
    /**
366
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
367
     *
368
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
369
     */
370
    public function createDiscountImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
371
    {
372
        $dataImporter = $this->getCsvDataImporterFromConfig(
373
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
374
        );
375
376
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(DiscountWriterStep::BULK_SIZE);
377
        $dataSetStepBroker
378
            ->addStep(new DiscountWriterStep());
379
380
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
381
382
        return $dataImporter;
383
    }
384
385
    /**
386
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
387
     *
388
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
389
     */
390
    public function createDiscountStoreImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
391
    {
392
        $dataImporter = $this->getCsvDataImporterFromConfig(
393
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
394
        );
395
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(DiscountStoreWriterStep::BULK_SIZE);
396
        $dataSetStepBroker
397
            ->addStep(new DiscountStoreWriterStep());
398
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
399
400
        return $dataImporter;
401
    }
402
403
    /**
404
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
405
     *
406
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
407
     */
408
    public function createDiscountAmountImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
409
    {
410
        $dataImporter = $this->getCsvDataImporterFromConfig(
411
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
412
        );
413
414
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(DiscountAmountWriterStep::BULK_SIZE);
415
        $dataSetStepBroker
416
            ->addStep(new DiscountAmountWriterStep());
417
418
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
419
420
        return $dataImporter;
421
    }
422
423
    /**
424
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
425
     *
426
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
427
     */
428
    public function createDiscountVoucherImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
429
    {
430
        $dataImporter = $this->getCsvDataImporterFromConfig(
431
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
432
        );
433
434
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(DiscountVoucherWriterStep::BULK_SIZE);
435
        $dataSetStepBroker
436
            ->addStep(new DiscountVoucherWriterStep($this->createDiscountConfig()));
437
438
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
439
440
        return $dataImporter;
441
    }
442
443
    /**
444
     * @return \Spryker\Zed\Discount\DiscountConfig
445
     */
446
    public function createDiscountConfig(): DiscountConfig
447
    {
448
        return new DiscountConfig();
449
    }
450
451
    /**
452
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
453
     *
454
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
455
     */
456
    public function createProductOptionImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
457
    {
458
        $dataImporter = $this->getCsvDataImporterFromConfig(
459
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
460
        );
461
462
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker();
463
        $dataSetStepBroker
464
            ->addStep($this->createAddLocalesStep())
465
            ->addStep($this->createTaxSetNameToIdTaxSetStep(ProductOptionWriterStep::KEY_TAX_SET_NAME))
466
            ->addStep($this->createLocalizedAttributesExtractorStep([
467
                ProductOptionWriterStep::KEY_GROUP_NAME,
468
                ProductOptionWriterStep::KEY_OPTION_NAME,
469
            ]))
470
            ->addStep(new ProductOptionWriterStep());
471
472
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
473
474
        return $dataImporter;
475
    }
476
477
    /**
478
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
479
     *
480
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
481
     */
482
    public function createProductOptionPriceImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
483
    {
484
        $dataImporter = $this->getCsvDataImporterFromConfig(
485
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
486
        );
487
488
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker();
489
        $dataSetStepBroker
490
            ->addStep(new ProductOptionPriceWriterStep());
491
492
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
493
494
        return $dataImporter;
495
    }
496
497
    /**
498
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
499
     *
500
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface
501
     */
502
    public function createProductStockImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer): DataImporterInterface
503
    {
504
        /** @var \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface|\Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataImporterDataSetWriterAwareInterface $dataImporter */
505
        $dataImporter = $this->getCsvDataImporterWriterAwareFromConfig(
506
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
507
        );
508
509
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(ProductStockHydratorStep::BULK_SIZE);
510
        $dataSetStepBroker
511
            ->addStep(new ProductStockHydratorStep());
512
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
513
        $dataImporter->setDataSetWriter($this->createProductStockDataImportWriters());
514
515
        return $dataImporter;
516
    }
517
518
    /**
519
     * @return \Spryker\Zed\ProductBundle\Business\ProductBundleFacadeInterface
520
     */
521
    public function getProductBundleFacade(): ProductBundleFacadeInterface
522
    {
523
        return $this->getProvidedDependency(DataImportDependencyProvider::FACADE_PRODUCT_BUNDLE);
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->getProvide...:FACADE_PRODUCT_BUNDLE) could return the type callable which is incompatible with the type-hinted return Spryker\Zed\ProductBundl...ctBundleFacadeInterface. Consider adding an additional type-check to rule them out.
Loading history...
524
    }
525
526
    /**
527
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
528
     *
529
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface
530
     */
531
    public function createProductImageImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer): DataImporterInterface
532
    {
533
        /** @var \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface|\Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataImporterDataSetWriterAwareInterface $dataImporter */
534
        $dataImporter = $this->getCsvDataImporterWriterAwareFromConfig(
535
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
536
        );
537
538
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(ProductImageHydratorStep::BULK_SIZE);
539
        $dataSetStepBroker
540
            ->addStep($this->createProductAbstractSkuToIdProductAbstractStep(ProductImageHydratorStep::COLUMN_ABSTRACT_SKU, ProductImageHydratorStep::KEY_IMAGE_SET_FK_PRODUCT_ABSTRACT))
541
            ->addStep($this->createProductSkuToIdProductStep(ProductImageHydratorStep::COLUMN_CONCRETE_SKU, ProductImageHydratorStep::KEY_IMAGE_SET_FK_PRODUCT))
542
            ->addStep($this->createLocaleNameToIdStep(ProductImageHydratorStep::COLUMN_LOCALE, ProductImageHydratorStep::KEY_IMAGE_SET_FK_LOCALE))
543
            ->addStep(new ProductImageHydratorStep())
544
            ->addStep($this->createAddLocalesStep())
545
            ->addStep($this->createLocalizedAttributesExtractorStep([
546
                ProductImagePropelDataSetWriter::KEY_ALT_TEXT_SMALL,
547
                ProductImagePropelDataSetWriter::KEY_ALT_TEXT_LARGE,
548
            ]));
549
550
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
551
        $dataImporter->setDataSetWriter($this->createProductImageDataWriters());
552
553
        return $dataImporter;
554
    }
555
556
    /**
557
     * @return \Pyz\Zed\DataImport\Business\Model\Locale\Repository\LocaleRepositoryInterface
558
     */
559
    public function createLocaleRepository(): LocaleRepositoryInterface
560
    {
561
        return new LocaleRepository();
562
    }
563
564
    /**
565
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
566
     *
567
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
568
     */
569
    public function createTaxImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
570
    {
571
        $dataImporter = $this->getCsvDataImporterFromConfig(
572
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
573
        );
574
575
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(TaxWriterStep::BULK_SIZE);
576
        $dataSetStepBroker
577
            ->addStep(new TaxWriterStep($this->createCountryRepository()));
578
579
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
580
581
        return $dataImporter;
582
    }
583
584
    /**
585
     * @return \Pyz\Zed\DataImport\Business\Model\Country\Repository\CountryRepositoryInterface
586
     */
587
    public function createCountryRepository(): CountryRepositoryInterface
588
    {
589
        return new CountryRepository();
590
    }
591
592
    /**
593
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
594
     *
595
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
596
     */
597
    public function createNavigationImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
598
    {
599
        $dataImporter = $this->getCsvDataImporterFromConfig(
600
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
601
        );
602
603
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(NavigationWriterStep::BULK_SIZE);
604
        $dataSetStepBroker
605
            ->addStep(new NavigationWriterStep());
606
607
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
608
609
        return $dataImporter;
610
    }
611
612
    /**
613
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
614
     *
615
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
616
     */
617
    public function createNavigationNodeImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
618
    {
619
        $dataImporter = $this->getCsvDataImporterFromConfig(
620
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
621
        );
622
623
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(NavigationNodeWriterStep::BULK_SIZE);
624
        $dataSetStepBroker
625
            ->addStep($this->createAddLocalesStep())
626
            ->addStep($this->createNavigationKeyToIdNavigationStep(NavigationNodeWriterStep::KEY_NAVIGATION_KEY))
627
            ->addStep($this->createLocalizedAttributesExtractorStep([
628
                NavigationNodeWriterStep::KEY_TITLE,
629
                NavigationNodeWriterStep::KEY_URL,
630
                NavigationNodeWriterStep::KEY_CSS_CLASS,
631
            ]))
632
            ->addStep($this->createNavigationNodeValidityDatesStep(NavigationNodeWriterStep::KEY_VALID_FROM, NavigationNodeWriterStep::KEY_VALID_TO))
633
            ->addStep(new NavigationNodeWriterStep());
634
635
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
636
637
        return $dataImporter;
638
    }
639
640
    /**
641
     * @param string $source
642
     * @param string $target
643
     *
644
     * @return \Pyz\Zed\DataImport\Business\Model\Navigation\NavigationKeyToIdNavigationStep
645
     */
646
    public function createNavigationKeyToIdNavigationStep(
647
        string $source = NavigationKeyToIdNavigationStep::KEY_SOURCE,
648
        string $target = NavigationKeyToIdNavigationStep::KEY_TARGET,
649
    ): NavigationKeyToIdNavigationStep {
650
        return new NavigationKeyToIdNavigationStep($source, $target);
651
    }
652
653
    /**
654
     * @param string $keyValidFrom
655
     * @param string $keyValidTo
656
     *
657
     * @return \Pyz\Zed\DataImport\Business\Model\NavigationNode\NavigationNodeValidityDatesStep
658
     */
659
    public function createNavigationNodeValidityDatesStep(
660
        string $keyValidFrom,
661
        string $keyValidTo,
662
    ): NavigationNodeValidityDatesStep {
663
        return new NavigationNodeValidityDatesStep($keyValidFrom, $keyValidTo);
664
    }
665
666
    /**
667
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
668
     *
669
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface
670
     */
671
    public function createProductAbstractImporter(
672
        DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer,
673
    ): DataImporterInterface {
674
        /** @var \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface|\Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataImporterDataSetWriterAwareInterface $dataImporter */
675
        $dataImporter = $this->getCsvDataImporterWriterAwareFromConfig(
676
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
677
        );
678
679
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(ProductAbstractHydratorStep::BULK_SIZE);
680
        $dataSetStepBroker
681
            ->addStep($this->createAddLocalesStep())
682
            ->addStep($this->createAddCategoryKeysStep())
683
            ->addStep($this->createTaxSetNameToIdTaxSetStep(ProductAbstractHydratorStep::COLUMN_TAX_SET_NAME))
684
            ->addStep($this->createAttributesExtractorStep())
685
            ->addStep($this->createProductLocalizedAttributesExtractorStep([
686
                ProductAbstractHydratorStep::COLUMN_NAME,
687
                ProductAbstractHydratorStep::COLUMN_URL,
688
                ProductAbstractHydratorStep::COLUMN_DESCRIPTION,
689
                ProductAbstractHydratorStep::COLUMN_META_TITLE,
690
                ProductAbstractHydratorStep::COLUMN_META_DESCRIPTION,
691
                ProductAbstractHydratorStep::COLUMN_META_KEYWORDS,
692
            ]))
693
            ->addStep(new ProductAbstractHydratorStep());
694
695
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
696
        $dataImporter->setDataSetWriter($this->createProductAbstractDataImportWriters());
697
698
        return $dataImporter;
699
    }
700
701
    /**
702
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
703
     *
704
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface
705
     */
706
    public function createProductAbstractStoreImporter(
707
        DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer,
708
    ): DataImporterInterface {
709
        /** @var \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface|\Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataImporterDataSetWriterAwareInterface $dataImporter */
710
        $dataImporter = $this->getCsvDataImporterWriterAwareFromConfig(
711
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
712
        );
713
714
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(ProductAbstractStoreHydratorStep::BULK_SIZE);
715
        $dataSetStepBroker->addStep(new ProductAbstractStoreHydratorStep());
716
717
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
718
        $dataImporter->setDataSetWriter($this->createProductAbstractStoreDataImportWriters());
719
720
        return $dataImporter;
721
    }
722
723
    /**
724
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
725
     *
726
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface
727
     */
728
    public function createProductConcreteImporter(
729
        DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer,
730
    ): DataImporterInterface {
731
        /** @var \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface|\Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataImporterBeforeImportAwareInterface|\Spryker\Zed\DataImport\Business\Model\DataImporterAfterImportAwareInterface|\Spryker\Zed\DataImport\Business\Model\DataImporterDataSetWriterAwareInterface $dataImporter */
732
        $dataImporter = $this->getCsvDataImporterWriterAwareFromConfig(
733
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
734
        );
735
736
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(ProductConcreteHydratorStep::BULK_SIZE);
737
        $dataSetStepBroker
738
            ->addStep($this->createAddLocalesStep())
739
            ->addStep($this->createAttributesExtractorStep())
740
            ->addStep($this->createProductConcreteAttributesUniqueCheckStep())
741
            ->addStep($this->createProductLocalizedAttributesExtractorStep([
742
                ProductConcreteHydratorStep::COLUMN_NAME,
743
                ProductConcreteHydratorStep::COLUMN_DESCRIPTION,
744
                ProductConcreteHydratorStep::COLUMN_IS_SEARCHABLE,
745
            ]))
746
            ->addStep(new ProductConcreteHydratorStep(
747
                $this->createProductRepository(),
748
            ));
749
750
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
751
        $dataImporter->setDataSetWriter($this->createProductConcreteDataImportWriters());
752
753
        return $dataImporter;
754
    }
755
756
    /**
757
     * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface
758
     */
759
    public function createProductConcreteAttributesUniqueCheckStep(): DataImportStepInterface
760
    {
761
        return new ProductConcreteAttributesUniqueCheckStep(
762
            $this->createProductRepository(),
763
            $this->getUtilEncodingService(),
764
            $this->getConfig(),
765
        );
766
    }
767
768
    /**
769
     * @return \Pyz\Zed\DataImport\Business\Model\Product\Repository\ProductRepository
770
     */
771
    public function createProductRepository(): ProductRepository
772
    {
773
        return new ProductRepository();
774
    }
775
776
    /**
777
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
778
     *
779
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
780
     */
781
    public function createProductAttributeKeyImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
782
    {
783
        $dataImporter = $this->getCsvDataImporterFromConfig(
784
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
785
        );
786
787
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker();
788
        $dataSetStepBroker
789
            ->addStep(new ProductAttributeKeyWriter());
790
791
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
792
793
        return $dataImporter;
794
    }
795
796
    /**
797
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
798
     *
799
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
800
     */
801
    public function createProductManagementAttributeImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
802
    {
803
        $dataImporter = $this->getCsvDataImporterFromConfig(
804
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
805
        );
806
807
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker();
808
        $dataSetStepBroker
809
            ->addStep($this->createAddLocalesStep())
810
            ->addStep($this->createAddProductAttributeKeysStep())
811
            ->addStep($this->createProductManagementLocalizedAttributesExtractorStep())
812
            ->addStep(new ProductManagementAttributeWriter());
813
814
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
815
816
        return $dataImporter;
817
    }
818
819
    /**
820
     * @return \Pyz\Zed\DataImport\Business\Model\ProductManagementAttribute\ProductManagementLocalizedAttributesExtractorStep
821
     */
822
    public function createProductManagementLocalizedAttributesExtractorStep(): ProductManagementLocalizedAttributesExtractorStep
823
    {
824
        return new ProductManagementLocalizedAttributesExtractorStep();
825
    }
826
827
    /**
828
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
829
     *
830
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
831
     */
832
    public function createProductGroupImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
833
    {
834
        $dataImporter = $this->getCsvDataImporterFromConfig(
835
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
836
        );
837
838
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(ProductGroupWriter::BULK_SIZE);
839
        $dataSetStepBroker
840
            ->addStep(new ProductGroupWriter(
841
                $this->createProductRepository(),
842
            ));
843
844
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
845
846
        return $dataImporter;
847
    }
848
849
    /**
850
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
851
     *
852
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
853
     */
854
    public function createProductReviewImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
855
    {
856
        $dataImporter = $this->getCsvDataImporterFromConfig(
857
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
858
        );
859
860
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker();
861
        $dataSetStepBroker->addStep(new ProductReviewWriterStep(
862
            $this->createProductRepository(),
863
            $this->createLocaleRepository(),
864
        ));
865
866
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
867
868
        return $dataImporter;
869
    }
870
871
    /**
872
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
873
     *
874
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
875
     */
876
    public function createProductSetImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
877
    {
878
        $dataImporter = $this->getCsvDataImporterFromConfig(
879
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
880
        );
881
882
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker();
883
        $dataSetStepBroker
884
            ->addStep($this->createAddProductAbstractSkusStep())
885
            ->addStep($this->createAddLocalesStep())
886
            ->addStep($this->createProductSetImageExtractorStep())
887
            ->addStep($this->createProductSetImageLocalizedAttributesExtractorStep())
888
            ->addStep($this->createLocalizedAttributesExtractorStep([
889
                ProductSetWriterStep::KEY_NAME,
890
                ProductSetWriterStep::KEY_URL,
891
                ProductSetWriterStep::KEY_DESCRIPTION,
892
                ProductSetWriterStep::KEY_META_TITLE,
893
                ProductSetWriterStep::KEY_META_DESCRIPTION,
894
                ProductSetWriterStep::KEY_META_KEYWORDS,
895
            ]))
896
            ->addStep(new ProductSetWriterStep(
897
                $this->createProductRepository(),
898
            ));
899
900
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
901
902
        return $dataImporter;
903
    }
904
905
    /**
906
     * @return \Pyz\Zed\DataImport\Business\Model\ProductSet\ProductSetImageExtractorStep
907
     */
908
    public function createProductSetImageExtractorStep(): ProductSetImageExtractorStep
909
    {
910
        return new ProductSetImageExtractorStep();
911
    }
912
913
    /**
914
     * @return \Pyz\Zed\DataImport\Business\Model\ProductSet\ProductSetImageLocalizedAttributesExtractorStep
915
     */
916
    protected function createProductSetImageLocalizedAttributesExtractorStep(): ProductSetImageLocalizedAttributesExtractorStep
917
    {
918
        return new ProductSetImageLocalizedAttributesExtractorStep();
919
    }
920
921
    /**
922
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
923
     *
924
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
925
     */
926
    public function createProductSearchAttributeMapImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
927
    {
928
        $dataImporter = $this->getCsvDataImporterFromConfig(
929
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
930
        );
931
932
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker();
933
        $dataSetStepBroker
934
            ->addStep($this->createAddProductAttributeKeysStep())
935
            ->addStep(new ProductSearchAttributeMapWriter());
936
937
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
938
939
        return $dataImporter;
940
    }
941
942
    /**
943
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
944
     *
945
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface|\Spryker\Zed\DataImport\Business\Model\DataSet\DataSetStepBrokerAwareInterface
946
     */
947
    public function createProductSearchAttributeImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer)
948
    {
949
        $dataImporter = $this->getCsvDataImporterFromConfig(
950
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
951
        );
952
953
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker();
954
        $dataSetStepBroker
955
            ->addStep($this->createAddLocalesStep())
956
            ->addStep($this->createAddProductAttributeKeysStep())
957
            ->addStep($this->createLocalizedAttributesExtractorStep([ProductSearchAttributeWriter::KEY]))
958
            ->addStep(new ProductSearchAttributeWriter(
959
                $this->createSearchGlossaryKeyBuilder(),
960
            ));
961
962
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
963
        $dataImporter->addAfterImportHook($this->createProductSearchAfterImportHook());
964
965
        return $dataImporter;
966
    }
967
968
    /**
969
     * @return \Pyz\Zed\DataImport\Business\Model\ProductSearchAttribute\Hook\ProductSearchAfterImportHook
970
     */
971
    public function createProductSearchAfterImportHook(): ProductSearchAfterImportHook
972
    {
973
        return new ProductSearchAfterImportHook();
974
    }
975
976
    /**
977
     * @return \Spryker\Shared\ProductSearch\Code\KeyBuilder\FilterGlossaryKeyBuilder
978
     */
979
    public function createSearchGlossaryKeyBuilder(): FilterGlossaryKeyBuilder
980
    {
981
        return new FilterGlossaryKeyBuilder();
982
    }
983
984
    /**
985
     * @return \Pyz\Zed\DataImport\Business\Model\ProductAbstract\AddCategoryKeysStep
986
     */
987
    public function createAddCategoryKeysStep(): AddCategoryKeysStep
988
    {
989
        return new AddCategoryKeysStep();
990
    }
991
992
    /**
993
     * @return \Pyz\Zed\DataImport\Business\Model\Product\AttributesExtractorStep
994
     */
995
    public function createAttributesExtractorStep(): AttributesExtractorStep
996
    {
997
        return new AttributesExtractorStep();
998
    }
999
1000
    /**
1001
     * @param array<string> $defaultAttributes
1002
     *
1003
     * @return \Pyz\Zed\DataImport\Business\Model\Product\ProductLocalizedAttributesExtractorStep
1004
     */
1005
    public function createProductLocalizedAttributesExtractorStep(
1006
        array $defaultAttributes = [],
1007
    ): ProductLocalizedAttributesExtractorStep {
1008
        return new ProductLocalizedAttributesExtractorStep($defaultAttributes);
1009
    }
1010
1011
    /**
1012
     * @return \Pyz\Zed\DataImport\Business\Model\ProductAbstract\AddProductAbstractSkusStep
1013
     */
1014
    public function createAddProductAbstractSkusStep(): AddProductAbstractSkusStep
1015
    {
1016
        return new AddProductAbstractSkusStep();
1017
    }
1018
1019
    /**
1020
     * @param string $source
1021
     * @param string $target
1022
     *
1023
     * @return \Pyz\Zed\DataImport\Business\Model\Locale\LocaleNameToIdLocaleStep
1024
     */
1025
    public function createLocaleNameToIdStep(
1026
        string $source = LocaleNameToIdLocaleStep::KEY_SOURCE,
1027
        string $target = LocaleNameToIdLocaleStep::KEY_TARGET,
1028
    ): LocaleNameToIdLocaleStep {
1029
        return new LocaleNameToIdLocaleStep($source, $target);
1030
    }
1031
1032
    /**
1033
     * @param string $source
1034
     * @param string $target
1035
     *
1036
     * @return \Pyz\Zed\DataImport\Business\Model\Tax\TaxSetNameToIdTaxSetStep
1037
     */
1038
    public function createTaxSetNameToIdTaxSetStep(
1039
        string $source = TaxSetNameToIdTaxSetStep::KEY_SOURCE,
1040
        string $target = TaxSetNameToIdTaxSetStep::KEY_TARGET,
1041
    ): TaxSetNameToIdTaxSetStep {
1042
        return new TaxSetNameToIdTaxSetStep($source, $target);
1043
    }
1044
1045
    /**
1046
     * @return \Pyz\Zed\DataImport\Business\Model\ProductAttributeKey\AddProductAttributeKeysStep
1047
     */
1048
    public function createAddProductAttributeKeysStep(): AddProductAttributeKeysStep
1049
    {
1050
        return new AddProductAttributeKeysStep();
1051
    }
1052
1053
    /**
1054
     * @return \Spryker\Zed\Event\Business\EventFacadeInterface
1055
     */
1056
    public function getEventFacade(): EventFacadeInterface
1057
    {
1058
        return $this->getProvidedDependency(DataImportDependencyProvider::FACADE_EVENT);
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->getProvide...Provider::FACADE_EVENT) could return the type callable which is incompatible with the type-hinted return Spryker\Zed\Event\Business\EventFacadeInterface. Consider adding an additional type-check to rule them out.
Loading history...
1059
    }
1060
1061
    /**
1062
     * @return \Spryker\Zed\DataImport\Business\Model\DataImportStep\DataImportStepInterface
1063
     */
1064
    public function createAddLocalesStep(): DataImportStepInterface
1065
    {
1066
        return new AddLocalesStep($this->getDataImportStoreFacade());
1067
    }
1068
1069
    /**
1070
     * @param string $importType
1071
     * @param \Spryker\Zed\DataImport\Business\Model\DataReader\DataReaderInterface $reader
1072
     *
1073
     * @return \Pyz\Zed\DataImport\Business\Model\DataImporterConditional
1074
     */
1075
    public function createDataImporterConditional(string $importType, DataReaderInterface $reader): DataImporterConditional
1076
    {
1077
        return new DataImporterConditional($importType, $reader, $this->getGracefulRunnerFacade());
1078
    }
1079
1080
    /**
1081
     * @param string $importType
1082
     * @param \Spryker\Zed\DataImport\Business\Model\DataReader\DataReaderInterface $reader
1083
     *
1084
     * @return \Pyz\Zed\DataImport\Business\Model\DataImporterDataSetWriterAwareConditional
1085
     */
1086
    public function createDataImporterWriterAwareConditional(string $importType, DataReaderInterface $reader): DataImporterDataSetWriterAwareInterface
1087
    {
1088
        return new DataImporterDataSetWriterAwareConditional($importType, $reader, $this->getGracefulRunnerFacade());
1089
    }
1090
1091
    /**
1092
     * @param \Generated\Shared\Transfer\DataImporterConfigurationTransfer $dataImporterConfigurationTransfer
1093
     *
1094
     * @return \Pyz\Zed\DataImport\Business\Model\DataImporterConditional
1095
     */
1096
    public function getConditionalCsvDataImporterFromConfig(
1097
        DataImporterConfigurationTransfer $dataImporterConfigurationTransfer,
1098
    ): DataImporterConditional {
1099
        $csvReader = $this->createCsvReaderFromConfig($dataImporterConfigurationTransfer->getReaderConfiguration());
1100
1101
        return $this->createDataImporterConditional($dataImporterConfigurationTransfer->getImportType(), $csvReader);
1102
    }
1103
1104
    /**
1105
     * @param \Generated\Shared\Transfer\DataImporterConfigurationTransfer $dataImporterConfigurationTransfer
1106
     *
1107
     * @return \Pyz\Zed\DataImport\Business\Model\DataImporterDataSetWriterAwareConditional
1108
     */
1109
    public function getConditionalCsvDataImporterWriterAwareFromConfig(
1110
        DataImporterConfigurationTransfer $dataImporterConfigurationTransfer,
1111
    ): DataImporterDataSetWriterAwareInterface {
1112
        $csvReader = $this->createCsvReaderFromConfig($dataImporterConfigurationTransfer->getReaderConfiguration());
1113
1114
        return $this->createDataImporterWriterAwareConditional($dataImporterConfigurationTransfer->getImportType(), $csvReader);
1115
    }
1116
1117
    /**
1118
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1119
     */
1120
    public function createCombinedProductPricePropelDataSetWriter(): DataSetWriterInterface
1121
    {
1122
        return new CombinedProductPricePropelDataSetWriter(
1123
            $this->createProductRepository(),
1124
            $this->getStoreFacade(),
1125
            $this->getCurrencyFacade(),
1126
        );
1127
    }
1128
1129
    /**
1130
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1131
     */
1132
    public function createCombinedProductImagePropelDataSetWriter(): DataSetWriterInterface
1133
    {
1134
        return new CombinedProductImagePropelDataSetWriter(
1135
            $this->createProductImageRepository(),
1136
        );
1137
    }
1138
1139
    /**
1140
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1141
     */
1142
    public function createCombinedProductStockPropelDataSetWriter(): DataSetWriterInterface
1143
    {
1144
        return new CombinedProductStockPropelDataSetWriter(
1145
            $this->getProductBundleFacade(),
1146
            $this->createProductRepository(),
1147
            $this->getStoreFacade(),
1148
            $this->getStockFacade(),
1149
        );
1150
    }
1151
1152
    /**
1153
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1154
     */
1155
    public function createCombinedProductAbstractStorePropelDataSetWriter(): DataSetWriterInterface
1156
    {
1157
        return new CombinedProductAbstractStorePropelDataSetWriter();
1158
    }
1159
1160
    /**
1161
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1162
     */
1163
    public function createCombinedProductAbstractPropelDataSetWriter(): DataSetWriterInterface
1164
    {
1165
        return new CombinedProductAbstractPropelDataSetWriter(
1166
            $this->createProductRepository(),
1167
        );
1168
    }
1169
1170
    /**
1171
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1172
     */
1173
    public function createCombinedProductConcretePropelDataSetWriter(): DataSetWriterInterface
1174
    {
1175
        return new CombinedProductConcretePropelDataSetWriter(
1176
            $this->createProductRepository(),
1177
        );
1178
    }
1179
1180
    /**
1181
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
1182
     *
1183
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface
1184
     */
1185
    public function createCombinedProductPriceImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer): DataImporterInterface
1186
    {
1187
        $dataImporter = $this->getConditionalCsvDataImporterWriterAwareFromConfig(
1188
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
1189
        );
1190
1191
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(CombinedProductPriceHydratorStep::BULK_SIZE);
1192
        $dataSetStepBroker
1193
            ->addStep(new CombinedProductPriceHydratorStep(
1194
                $this->getPriceProductFacade(),
1195
                $this->getUtilEncodingService(),
1196
            ));
1197
1198
        $dataImporter->setDataSetCondition($this->createCombinedProductPriceMandatoryColumnCondition());
1199
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
1200
        $dataImporter->setDataSetWriter($this->createCombinedProductPriceDataSetWriters());
1201
1202
        return $dataImporter;
1203
    }
1204
1205
    /**
1206
     * @return \Spryker\Zed\Currency\Business\CurrencyFacadeInterface
1207
     */
1208
    public function getCurrencyFacade(): CurrencyFacadeInterface
1209
    {
1210
        return $this->getProvidedDependency(DataImportDependencyProvider::FACADE_CURRENCY);
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->getProvide...vider::FACADE_CURRENCY) could return the type callable which is incompatible with the type-hinted return Spryker\Zed\Currency\Bus...CurrencyFacadeInterface. Consider adding an additional type-check to rule them out.
Loading history...
1211
    }
1212
1213
    /**
1214
     * @return \Spryker\Zed\PriceProduct\Business\PriceProductFacadeInterface
1215
     */
1216
    public function getPriceProductFacade(): PriceProductFacadeInterface
1217
    {
1218
        return $this->getProvidedDependency(DataImportDependencyProvider::FACADE_PRICE_PRODUCT);
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->getProvide...::FACADE_PRICE_PRODUCT) could return the type callable which is incompatible with the type-hinted return Spryker\Zed\PriceProduct...eProductFacadeInterface. Consider adding an additional type-check to rule them out.
Loading history...
1219
    }
1220
1221
    /**
1222
     * @return \Spryker\Zed\Stock\Business\StockFacadeInterface
1223
     */
1224
    public function getStockFacade(): StockFacadeInterface
1225
    {
1226
        return $this->getProvidedDependency(DataImportDependencyProvider::FACADE_STOCK);
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->getProvide...Provider::FACADE_STOCK) could return the type callable which is incompatible with the type-hinted return Spryker\Zed\Stock\Business\StockFacadeInterface. Consider adding an additional type-check to rule them out.
Loading history...
1227
    }
1228
1229
    /**
1230
     * @return \Spryker\Zed\Store\Business\StoreFacadeInterface
1231
     */
1232
    public function getStoreFacade(): StoreFacadeInterface
1233
    {
1234
        return $this->getProvidedDependency(DataImportDependencyProvider::FACADE_STORE);
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->getProvide...Provider::FACADE_STORE) could return the type callable which is incompatible with the type-hinted return Spryker\Zed\Store\Business\StoreFacadeInterface. Consider adding an additional type-check to rule them out.
Loading history...
1235
    }
1236
1237
    /**
1238
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1239
     */
1240
    public function createProductStockDataImportWriters(): DataSetWriterInterface
1241
    {
1242
        return new DataSetWriterCollection($this->createProductStockWriterPlugins());
1243
    }
1244
1245
    /**
1246
     * @return array<\Spryker\Zed\DataImportExtension\Dependency\Plugin\DataSetWriterPluginInterface>
1247
     */
1248
    public function createProductStockWriterPlugins(): array
1249
    {
1250
        return [
1251
            new ProductStockPropelWriterPlugin(),
1252
        ];
1253
    }
1254
1255
    /**
1256
     * @return \Pyz\Zed\DataImport\Business\Model\DataSet\DataSetConditionInterface
1257
     */
1258
    public function createCombinedProductPriceMandatoryColumnCondition(): DataSetConditionInterface
1259
    {
1260
        return new CombinedProductPriceMandatoryColumnCondition();
1261
    }
1262
1263
    /**
1264
     * @return \Pyz\Zed\DataImport\Business\Model\ProductImage\Repository\ProductImageRepositoryInterface
1265
     */
1266
    public function createProductImageRepository(): ProductImageRepositoryInterface
1267
    {
1268
        return new ProductImageRepository();
1269
    }
1270
1271
    /**
1272
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1273
     */
1274
    public function createCombinedProductPriceDataSetWriters(): DataSetWriterInterface
1275
    {
1276
        return new DataSetWriterCollection($this->createCombinedProductPriceDataSetWriterPlugins());
1277
    }
1278
1279
    /**
1280
     * @return array<\Spryker\Zed\DataImportExtension\Dependency\Plugin\DataSetWriterPluginInterface>
1281
     */
1282
    public function createCombinedProductPriceDataSetWriterPlugins(): array
1283
    {
1284
        return [
1285
            new CombinedProductPricePropelWriterPlugin(),
1286
        ];
1287
    }
1288
1289
    /**
1290
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
1291
     *
1292
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface
1293
     */
1294
    public function createCombinedProductImageImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer): DataImporterInterface
1295
    {
1296
        $dataImporter = $this->getConditionalCsvDataImporterWriterAwareFromConfig(
1297
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
1298
        );
1299
1300
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(CombinedProductImageHydratorStep::BULK_SIZE);
1301
        $dataSetStepBroker
1302
            ->addStep($this->createProductAbstractSkuToIdProductAbstractStep(CombinedProductImageHydratorStep::COLUMN_ABSTRACT_SKU, ProductImageHydratorStep::KEY_IMAGE_SET_FK_PRODUCT_ABSTRACT))
1303
            ->addStep($this->createProductSkuToIdProductStep(CombinedProductImageHydratorStep::COLUMN_CONCRETE_SKU, ProductImageHydratorStep::KEY_IMAGE_SET_FK_PRODUCT))
1304
            ->addStep($this->createLocaleNameToIdStep(CombinedProductImageHydratorStep::COLUMN_LOCALE, ProductImageHydratorStep::KEY_IMAGE_SET_FK_LOCALE))
1305
            ->addStep(new CombinedProductImageHydratorStep())
1306
            ->addStep($this->createAddLocalesStep())
1307
            ->addStep($this->createLocalizedAttributesExtractorStep([
1308
                CombinedProductImagePropelDataSetWriter::KEY_ALT_TEXT_SMALL,
1309
                CombinedProductImagePropelDataSetWriter::KEY_ALT_TEXT_LARGE,
1310
            ]));
1311
1312
        $dataImporter->setDataSetCondition($this->createCombinedProductImageMandatoryColumnCondition());
1313
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
1314
        $dataImporter->setDataSetWriter($this->createCombinedProductImageDataSetWriters());
1315
1316
        return $dataImporter;
1317
    }
1318
1319
    /**
1320
     * @return \Pyz\Zed\DataImport\Business\Model\DataSet\DataSetConditionInterface
1321
     */
1322
    public function createCombinedProductImageMandatoryColumnCondition(): DataSetConditionInterface
1323
    {
1324
        return new CombinedProductImageMandatoryColumnCondition();
1325
    }
1326
1327
    /**
1328
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1329
     */
1330
    public function createCombinedProductImageDataSetWriters(): DataSetWriterInterface
1331
    {
1332
        return new DataSetWriterCollection($this->createCombinedProductImageDataSetWriterPlugins());
1333
    }
1334
1335
    /**
1336
     * @return array<\Spryker\Zed\DataImportExtension\Dependency\Plugin\DataSetWriterPluginInterface>
1337
     */
1338
    public function createCombinedProductImageDataSetWriterPlugins(): array
1339
    {
1340
        return [
1341
            new CombinedProductImagePropelWriterPlugin(),
1342
        ];
1343
    }
1344
1345
    /**
1346
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
1347
     *
1348
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface
1349
     */
1350
    public function createCombinedProductStockImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer): DataImporterInterface
1351
    {
1352
        $dataImporter = $this->getConditionalCsvDataImporterWriterAwareFromConfig(
1353
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
1354
        );
1355
1356
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(CombinedProductStockHydratorStep::BULK_SIZE);
1357
        $dataSetStepBroker
1358
            ->addStep(new CombinedProductStockHydratorStep());
1359
1360
        $dataImporter->setDataSetCondition($this->createCombinedProductStockMandatoryColumnCondition());
1361
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
1362
        $dataImporter->setDataSetWriter($this->createCombinedProductStockDataSetWriters());
1363
1364
        return $dataImporter;
1365
    }
1366
1367
    /**
1368
     * @return \Pyz\Zed\DataImport\Business\Model\DataSet\DataSetConditionInterface
1369
     */
1370
    public function createCombinedProductStockMandatoryColumnCondition(): DataSetConditionInterface
1371
    {
1372
        return new CombinedProductStockMandatoryColumnCondition();
1373
    }
1374
1375
    /**
1376
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1377
     */
1378
    public function createCombinedProductStockDataSetWriters(): DataSetWriterInterface
1379
    {
1380
        return new DataSetWriterCollection($this->createCombinedProductStockDataSetWriterPlugins());
1381
    }
1382
1383
    /**
1384
     * @return array<\Spryker\Zed\DataImportExtension\Dependency\Plugin\DataSetWriterPluginInterface>
1385
     */
1386
    public function createCombinedProductStockDataSetWriterPlugins(): array
1387
    {
1388
        return [
1389
            new CombinedProductStockPropelWriterPlugin(),
1390
        ];
1391
    }
1392
1393
    /**
1394
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
1395
     *
1396
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface
1397
     */
1398
    public function createCombinedProductAbstractStoreImporter(
1399
        DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer,
1400
    ): DataImporterInterface {
1401
        $dataImporter = $this->getConditionalCsvDataImporterWriterAwareFromConfig(
1402
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
1403
        );
1404
1405
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(CombinedProductAbstractStoreHydratorStep::BULK_SIZE);
1406
        $dataSetStepBroker->addStep(new CombinedProductAbstractStoreHydratorStep());
1407
1408
        $dataImporter->setDataSetCondition($this->createCombinedProductAbstractStoreMandatoryColumnCondition());
1409
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
1410
        $dataImporter->setDataSetWriter($this->createCombinedProductAbstractStoreDataSetWriters());
1411
1412
        return $dataImporter;
1413
    }
1414
1415
    /**
1416
     * @return \Pyz\Zed\DataImport\Business\Model\DataSet\DataSetConditionInterface
1417
     */
1418
    public function createCombinedProductAbstractStoreMandatoryColumnCondition(): DataSetConditionInterface
1419
    {
1420
        return new CombinedProductAbstractStoreMandatoryColumnCondition();
1421
    }
1422
1423
    /**
1424
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1425
     */
1426
    public function createCombinedProductAbstractStoreDataSetWriters(): DataSetWriterInterface
1427
    {
1428
        return new DataSetWriterCollection($this->createCombinedProductAbstractStoreDataSetWriterPlugins());
1429
    }
1430
1431
    /**
1432
     * @return array<\Spryker\Zed\DataImportExtension\Dependency\Plugin\DataSetWriterPluginInterface>
1433
     */
1434
    public function createCombinedProductAbstractStoreDataSetWriterPlugins(): array
1435
    {
1436
        return [
1437
            new CombinedProductAbstractStorePropelWriterPlugin(),
1438
        ];
1439
    }
1440
1441
    /**
1442
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
1443
     *
1444
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface
1445
     */
1446
    public function createCombinedProductAbstractImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer): DataImporterInterface
1447
    {
1448
        $dataImporter = $this->getConditionalCsvDataImporterWriterAwareFromConfig(
1449
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
1450
        );
1451
1452
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(CombinedProductAbstractHydratorStep::BULK_SIZE);
1453
        $dataSetStepBroker
1454
            ->addStep($this->createAddLocalesStep())
1455
            ->addStep($this->createAddCategoryKeysStep())
1456
            ->addStep($this->createTaxSetNameToIdTaxSetStep(CombinedProductAbstractHydratorStep::COLUMN_TAX_SET_NAME))
1457
            ->addStep($this->createCombinedAttributesExtractorStep())
1458
            ->addStep($this->createCombinedProductLocalizedAttributesExtractorStep([
1459
                CombinedProductAbstractHydratorStep::COLUMN_NAME,
1460
                CombinedProductAbstractHydratorStep::COLUMN_URL,
1461
                CombinedProductAbstractHydratorStep::COLUMN_DESCRIPTION,
1462
                CombinedProductAbstractHydratorStep::COLUMN_META_TITLE,
1463
                CombinedProductAbstractHydratorStep::COLUMN_META_DESCRIPTION,
1464
                CombinedProductAbstractHydratorStep::COLUMN_META_KEYWORDS,
1465
            ]))
1466
            ->addStep(new CombinedProductAbstractHydratorStep());
1467
1468
        $dataImporter->setDataSetCondition($this->createCombinedProductAbstractTypeDataSetCondition());
1469
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
1470
        $dataImporter->setDataSetWriter($this->createCombinedProductAbstractDataSetWriters());
1471
1472
        return $dataImporter;
1473
    }
1474
1475
    /**
1476
     * @return \Pyz\Zed\DataImport\Business\Model\DataSet\DataSetConditionInterface
1477
     */
1478
    public function createCombinedProductAbstractTypeDataSetCondition(): DataSetConditionInterface
1479
    {
1480
        return new CombinedProductAbstractTypeDataSetCondition();
1481
    }
1482
1483
    /**
1484
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1485
     */
1486
    public function createCombinedProductAbstractDataSetWriters(): DataSetWriterInterface
1487
    {
1488
        return new DataSetWriterCollection($this->createCombinedProductAbstractDataSetWriterPlugins());
1489
    }
1490
1491
    /**
1492
     * @return array<\Spryker\Zed\DataImportExtension\Dependency\Plugin\DataSetWriterPluginInterface>
1493
     */
1494
    public function createCombinedProductAbstractDataSetWriterPlugins(): array
1495
    {
1496
        return [
1497
            new CombinedProductAbstractPropelWriterPlugin(),
1498
        ];
1499
    }
1500
1501
    /**
1502
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
1503
     *
1504
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface
1505
     */
1506
    public function createCombinedProductConcreteImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer): DataImporterInterface
1507
    {
1508
        $dataImporter = $this->getConditionalCsvDataImporterWriterAwareFromConfig(
1509
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
1510
        );
1511
1512
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(CombinedProductConcreteHydratorStep::BULK_SIZE);
1513
        $dataSetStepBroker
1514
            ->addStep($this->createAddLocalesStep())
1515
            ->addStep($this->createCombinedAttributesExtractorStep())
1516
            ->addStep($this->createProductConcreteAttributesUniqueCheckStep())
1517
            ->addStep($this->createCombinedProductLocalizedAttributesExtractorStep([
1518
                CombinedProductConcreteHydratorStep::COLUMN_NAME,
1519
                CombinedProductConcreteHydratorStep::COLUMN_DESCRIPTION,
1520
                CombinedProductConcreteHydratorStep::COLUMN_IS_SEARCHABLE,
1521
            ]))
1522
            ->addStep(new CombinedProductConcreteHydratorStep(
1523
                $this->createProductRepository(),
1524
            ));
1525
1526
        $dataImporter->setDataSetCondition($this->createCombinedProductConcreteTypeDataSetCondition());
1527
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
1528
        $dataImporter->setDataSetWriter($this->createCombinedProductConcreteDataSetWriters());
1529
1530
        return $dataImporter;
1531
    }
1532
1533
    /**
1534
     * @return \Pyz\Zed\DataImport\Business\Model\DataSet\DataSetConditionInterface
1535
     */
1536
    public function createCombinedProductConcreteTypeDataSetCondition(): DataSetConditionInterface
1537
    {
1538
        return new CombinedProductConcreteTypeDataSetCondition();
1539
    }
1540
1541
    /**
1542
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1543
     */
1544
    public function createCombinedProductConcreteDataSetWriters(): DataSetWriterInterface
1545
    {
1546
        return new DataSetWriterCollection($this->createCombinedProductConcreteDataSetWriterPlugins());
1547
    }
1548
1549
    /**
1550
     * @return array<\Spryker\Zed\DataImportExtension\Dependency\Plugin\DataSetWriterPluginInterface>
1551
     */
1552
    public function createCombinedProductConcreteDataSetWriterPlugins(): array
1553
    {
1554
        return [
1555
            new CombinedProductConcretePropelWriterPlugin(),
1556
        ];
1557
    }
1558
1559
    /**
1560
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
1561
     *
1562
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface
1563
     */
1564
    public function createCombinedProductGroupImporter(DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer): DataImporterInterface
1565
    {
1566
        $dataImporter = $this->getConditionalCsvDataImporterFromConfig(
1567
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
1568
        );
1569
1570
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker(ProductGroupWriter::BULK_SIZE);
1571
        $dataSetStepBroker
1572
            ->addStep(new CombinedProductGroupWriter($this->createProductRepository()));
1573
1574
        $dataImporter->setDataSetCondition($this->createCombinedProductGroupMandatoryColumnCondition());
1575
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
1576
1577
        return $dataImporter;
1578
    }
1579
1580
    /**
1581
     * @return \Pyz\Zed\DataImport\Business\Model\DataSet\DataSetConditionInterface
1582
     */
1583
    public function createCombinedProductGroupMandatoryColumnCondition(): DataSetConditionInterface
1584
    {
1585
        return new CombinedProductGroupMandatoryColumnCondition();
1586
    }
1587
1588
    /**
1589
     * @param string $source
1590
     * @param string $target
1591
     *
1592
     * @return \Pyz\Zed\DataImport\Business\Model\ProductAbstract\ProductAbstractSkuToIdProductAbstractStep
1593
     */
1594
    public function createProductAbstractSkuToIdProductAbstractStep(
1595
        string $source = ProductAbstractSkuToIdProductAbstractStep::KEY_SOURCE,
1596
        string $target = ProductAbstractSkuToIdProductAbstractStep::KEY_TARGET,
1597
    ): DataImportStepInterface {
1598
        return new ProductAbstractSkuToIdProductAbstractStep($source, $target);
1599
    }
1600
1601
    /**
1602
     * @param string $source
1603
     * @param string $target
1604
     *
1605
     * @return \Pyz\Zed\DataImport\Business\Model\ProductConcrete\ProductSkuToIdProductStep
1606
     */
1607
    public function createProductSkuToIdProductStep(
1608
        string $source = ProductSkuToIdProductStep::KEY_SOURCE,
1609
        string $target = ProductSkuToIdProductStep::KEY_TARGET,
1610
    ): DataImportStepInterface {
1611
        return new ProductSkuToIdProductStep($source, $target);
1612
    }
1613
1614
    /**
1615
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1616
     */
1617
    public function createProductAbstractDataImportWriters(): DataSetWriterInterface
1618
    {
1619
        return new DataSetWriterCollection($this->createProductAbstractWriterPlugins());
1620
    }
1621
1622
    /**
1623
     * @return array<\Spryker\Zed\DataImportExtension\Dependency\Plugin\DataSetWriterPluginInterface>
1624
     */
1625
    public function createProductAbstractWriterPlugins(): array
1626
    {
1627
        return [
1628
            new ProductAbstractPropelWriterPlugin(),
1629
        ];
1630
    }
1631
1632
    /**
1633
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1634
     */
1635
    public function createProductConcreteDataImportWriters(): DataSetWriterInterface
1636
    {
1637
        return new DataSetWriterCollection($this->createProductConcreteWriterPlugins());
1638
    }
1639
1640
    /**
1641
     * @return array<\Spryker\Zed\DataImportExtension\Dependency\Plugin\DataSetWriterPluginInterface>
1642
     */
1643
    public function createProductConcreteWriterPlugins(): array
1644
    {
1645
        return [
1646
            new ProductConcretePropelWriterPlugin(),
1647
        ];
1648
    }
1649
1650
    /**
1651
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1652
     */
1653
    public function createProductImageDataWriters(): DataSetWriterInterface
1654
    {
1655
        return new DataSetWriterCollection($this->createProductImageWriterPlugins());
1656
    }
1657
1658
    /**
1659
     * @return array<\Spryker\Zed\DataImportExtension\Dependency\Plugin\DataSetWriterPluginInterface>
1660
     */
1661
    public function createProductImageWriterPlugins(): array
1662
    {
1663
        return [
1664
            new ProductImagePropelWriterPlugin(),
1665
        ];
1666
    }
1667
1668
    /**
1669
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1670
     */
1671
    public function createProductAbstractStoreDataImportWriters(): DataSetWriterInterface
1672
    {
1673
        return new DataSetWriterCollection($this->createProductAbstractStoreWriterPlugins());
1674
    }
1675
1676
    /**
1677
     * @return array<\Spryker\Zed\DataImportExtension\Dependency\Plugin\DataSetWriterPluginInterface>
1678
     */
1679
    public function createProductAbstractStoreWriterPlugins(): array
1680
    {
1681
        return [
1682
            new ProductAbstractStorePropelWriterPlugin(),
1683
        ];
1684
    }
1685
1686
    /**
1687
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1688
     */
1689
    public function createProductAbstractPropelWriter(): DataSetWriterInterface
1690
    {
1691
        return new ProductAbstractPropelDataSetWriter($this->createProductRepository());
1692
    }
1693
1694
    /**
1695
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1696
     */
1697
    public function createProductConcretePropelWriter(): DataSetWriterInterface
1698
    {
1699
        return new ProductConcretePropelDataSetWriter($this->createProductRepository());
1700
    }
1701
1702
    /**
1703
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1704
     */
1705
    public function createProductImagePropelWriter(): DataSetWriterInterface
1706
    {
1707
        return new ProductImagePropelDataSetWriter($this->createProductImageRepository());
1708
    }
1709
1710
    /**
1711
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1712
     */
1713
    public function createProductStockPropelWriter(): DataSetWriterInterface
1714
    {
1715
        return new ProductStockPropelDataSetWriter(
1716
            $this->getProductBundleFacade(),
1717
            $this->createProductRepository(),
1718
            $this->getStoreFacade(),
1719
            $this->getStockFacade(),
1720
        );
1721
    }
1722
1723
    /**
1724
     * @return \Spryker\Zed\DataImport\Business\Model\DataSet\DataSetWriterInterface
1725
     */
1726
    public function createProductAbstractStorePropelWriter(): DataSetWriterInterface
1727
    {
1728
        return new ProductAbstractStorePropelDataSetWriter();
1729
    }
1730
1731
    /**
1732
     * @return \Pyz\Zed\DataImport\Business\Model\Product\AttributesExtractorStep
1733
     */
1734
    public function createCombinedAttributesExtractorStep(): DataImportStepInterface
1735
    {
1736
        return new CombinedAttributesExtractorStep();
1737
    }
1738
1739
    /**
1740
     * @param array<string> $defaultAttributes
1741
     *
1742
     * @return \Pyz\Zed\DataImport\Business\Model\Product\ProductLocalizedAttributesExtractorStep
1743
     */
1744
    public function createCombinedProductLocalizedAttributesExtractorStep(
1745
        array $defaultAttributes = [],
1746
    ): ProductLocalizedAttributesExtractorStep {
1747
        return new CombinedProductLocalizedAttributesExtractorStep($defaultAttributes);
1748
    }
1749
1750
    /**
1751
     * @param \Generated\Shared\Transfer\DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer
1752
     *
1753
     * @return \Spryker\Zed\DataImport\Business\Model\DataImporterInterface
1754
     */
1755
    public function createMerchantUserImporter(
1756
        DataImportConfigurationActionTransfer $dataImportConfigurationActionTransfer,
1757
    ): DataImporterInterface {
1758
        $dataImporter = $this->getCsvDataImporterFromConfig(
1759
            $this->getConfig()->buildImporterConfigurationByDataImportConfigAction($dataImportConfigurationActionTransfer),
1760
        );
1761
1762
        $dataSetStepBroker = $this->createTransactionAwareDataSetStepBroker();
1763
        $dataSetStepBroker->addStep(new MerchantUserWriterStep(
1764
            $this->getMerchantUserFacade(),
1765
        ));
1766
1767
        $dataImporter->addDataSetStepBroker($dataSetStepBroker);
1768
1769
        return $dataImporter;
1770
    }
1771
1772
    /**
1773
     * @return \Spryker\Zed\MerchantUser\Business\MerchantUserFacadeInterface
1774
     */
1775
    public function getMerchantUserFacade(): MerchantUserFacadeInterface
1776
    {
1777
        return $this->getProvidedDependency(DataImportDependencyProvider::FACADE_MERCHANT_USER);
0 ignored issues
show
Bug Best Practice introduced by
The expression return $this->getProvide...::FACADE_MERCHANT_USER) could return the type callable which is incompatible with the type-hinted return Spryker\Zed\MerchantUser...hantUserFacadeInterface. Consider adding an additional type-check to rule them out.
Loading history...
1778
    }
1779
}
1780