Passed
Pull Request — master (#23)
by
unknown
10:09 queued 03:56
created

AfterPayBusinessFactory::createAfterPayMapper()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * MIT License
5
 * For full license information, please view the LICENSE file that was distributed with this source code.
6
 */
7
8
namespace SprykerEco\Zed\AfterPay\Business;
9
10
use Spryker\Zed\Kernel\Business\AbstractBusinessFactory;
11
use SprykerEco\Shared\AfterPay\AfterPayConfig;
12
use SprykerEco\Zed\AfterPay\AfterPayDependencyProvider;
13
use SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\LookupCustomerHandler;
14
use SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\LookupCustomerHandlerInterface;
15
use SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\LookupInstallmentPlansHandler;
16
use SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\LookupInstallmentPlansHandlerInterface;
17
use SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\ValidateBankAccountHandler;
18
use SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\ValidateBankAccountHandlerInterface;
19
use SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\ValidateCustomerHandler;
20
use SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\ValidateCustomerHandlerInterface;
21
use SprykerEco\Zed\AfterPay\Business\Api\Adapter\AdapterFactory;
22
use SprykerEco\Zed\AfterPay\Business\Api\Adapter\AdapterFactoryInterface;
23
use SprykerEco\Zed\AfterPay\Business\Api\Adapter\AdapterInterface;
24
use SprykerEco\Zed\AfterPay\Business\Api\Adapter\AfterPayApiAdapter;
25
use SprykerEco\Zed\AfterPay\Business\Converter\QuoteToCallConverter;
0 ignored issues
show
Bug introduced by
The type SprykerEco\Zed\AfterPay\...er\QuoteToCallConverter was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
26
use SprykerEco\Zed\AfterPay\Business\Converter\QuoteToCallConverterInterface;
0 ignored issues
show
Bug introduced by
The type SprykerEco\Zed\AfterPay\...oCallConverterInterface was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
27
use SprykerEco\Zed\AfterPay\Business\Exception\InvalidAfterPayAuthorizeRequestBuilderException;
28
use SprykerEco\Zed\AfterPay\Business\Exception\InvalidAfterPayPaymentMethodsFilterException;
29
use SprykerEco\Zed\AfterPay\Business\Hook\PostSaveHook;
30
use SprykerEco\Zed\AfterPay\Business\Hook\PostSaveHookInterface;
31
use SprykerEco\Zed\AfterPay\Business\Mapper\AfterPayMapper;
32
use SprykerEco\Zed\AfterPay\Business\Mapper\AfterPayMapperInterface;
33
use SprykerEco\Zed\AfterPay\Business\Order\Saver;
34
use SprykerEco\Zed\AfterPay\Business\Order\SaverInterface;
35
use SprykerEco\Zed\AfterPay\Business\Payment\Filter\AfterPayPaymentMethodsFilterInterface;
36
use SprykerEco\Zed\AfterPay\Business\Payment\Filter\OneStepAuthorizePaymentMethodsFilter;
37
use SprykerEco\Zed\AfterPay\Business\Payment\Filter\Provider\AfterPayPaymentMethodsProvider;
38
use SprykerEco\Zed\AfterPay\Business\Payment\Filter\Provider\AfterPayPaymentMethodsProviderInterface;
39
use SprykerEco\Zed\AfterPay\Business\Payment\Filter\TwoStepAuthorizePaymentMethodsFilter;
40
use SprykerEco\Zed\AfterPay\Business\Payment\Mapper\OrderToRequestTransfer;
41
use SprykerEco\Zed\AfterPay\Business\Payment\Mapper\OrderToRequestTransferInterface;
42
use SprykerEco\Zed\AfterPay\Business\Payment\Mapper\QuoteToRequestTransfer;
43
use SprykerEco\Zed\AfterPay\Business\Payment\Mapper\QuoteToRequestTransferInterface;
44
use SprykerEco\Zed\AfterPay\Business\Payment\PaymentReader;
45
use SprykerEco\Zed\AfterPay\Business\Payment\PaymentReaderInterface;
46
use SprykerEco\Zed\AfterPay\Business\Payment\PaymentWriter;
47
use SprykerEco\Zed\AfterPay\Business\Payment\PaymentWriterInterface;
48
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\PaymentAuthorizeWriter;
49
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\PaymentAuthorizeWriterInterface;
50
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface;
51
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\OneStepAuthorizeRequestBuilder;
52
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\TwoStepsAuthorizeRequestBuilder;
53
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\AuthorizeTransaction;
54
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\AuthorizeTransactionInterface;
55
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Cancel\CancelRequestBuilder;
56
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Cancel\CancelRequestBuilderInterface;
57
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\CancelTransaction;
58
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\CancelTransactionInterface;
59
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Capture\CaptureRequestBuilder;
60
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Capture\CaptureRequestBuilderInterface;
61
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\CaptureTransaction;
62
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\CaptureTransactionInterface;
63
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\AuthorizeTransactionHandler;
64
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\AuthorizeTransactionHandlerInterface;
65
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\CancelTransactionHandler;
66
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\CancelTransactionHandlerInterface;
67
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\CaptureTransactionHandler;
68
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\CaptureTransactionHandlerInterface;
69
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\RefundTransactionHandler;
70
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\RefundTransactionHandlerInterface;
71
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Logger\TransactionLogger;
72
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Logger\TransactionLoggerInterface;
73
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\PriceToPayProvider;
74
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\PriceToPayProviderInterface;
75
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Refund\RefundRequestBuilder;
76
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Refund\RefundRequestBuilderInterface;
77
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\RefundTransaction;
78
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\RefundTransactionInterface;
79
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\TransactionLogReader;
80
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\TransactionLogReaderInterface;
81
use SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToCustomerFacadeInterface;
82
use SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToMoneyFacadeInterface;
83
use SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToPaymentFacadeInterface;
84
use SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToStoreFacadeInterface;
85
use SprykerEco\Zed\AfterPay\Dependency\Service\AfterPayToUtilEncodingServiceInterface;
86
87
/**
88
 * @method \SprykerEco\Zed\AfterPay\Persistence\AfterPayQueryContainerInterface getQueryContainer()
89
 * @method \SprykerEco\Zed\AfterPay\AfterPayConfig getConfig()
90
 * @method \SprykerEco\Zed\AfterPay\Persistence\AfterPayEntityManagerInterface getEntityManager()
91
 */
92
class AfterPayBusinessFactory extends AbstractBusinessFactory
93
{
94
    /**
95
     * @return \SprykerEco\Zed\AfterPay\Business\Order\SaverInterface
96
     */
97
    public function createOrderSaver(): SaverInterface
98
    {
99
        return new Saver($this->getConfig());
100
    }
101
102
    /**
103
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\AuthorizeTransactionHandlerInterface
104
     */
105
    public function createAuthorizeTransactionHandler(): AuthorizeTransactionHandlerInterface
106
    {
107
        return new AuthorizeTransactionHandler(
108
            $this->createAuthorizeTransaction(),
109
            $this->getAuthorizeRequestBuilder(),
110
            $this->createPaymentWriter(),
111
            $this->createPriceToPayProvider(),
112
            $this->createAfterPayMapper()
113
        );
114
    }
115
116
    /**
117
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\CaptureTransactionHandlerInterface
118
     */
119
    public function createCaptureTransactionHandler(): CaptureTransactionHandlerInterface
120
    {
121
        return new CaptureTransactionHandler(
122
            $this->createCaptureTransaction(),
123
            $this->createPaymentReader(),
124
            $this->createPaymentWriter(),
125
            $this->createCaptureRequestBuilder()
126
        );
127
    }
128
129
    /**
130
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\RefundTransactionHandlerInterface
131
     */
132
    public function createRefundTransactionHandler(): RefundTransactionHandlerInterface
133
    {
134
        return new RefundTransactionHandler(
135
            $this->createRefundTransaction(),
136
            $this->createPaymentReader(),
137
            $this->createPaymentWriter(),
138
            $this->getMoneyFacade(),
139
            $this->createRefundRequestBuilder()
140
        );
141
    }
142
143
    /**
144
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\CancelTransactionHandlerInterface
145
     */
146
    public function createCancelTransactionHandler(): CancelTransactionHandlerInterface
147
    {
148
        return new CancelTransactionHandler(
149
            $this->createCancelTransaction(),
150
            $this->createPaymentReader(),
151
            $this->createPaymentWriter(),
152
            $this->getMoneyFacade(),
153
            $this->createCancelRequestBuilder()
154
        );
155
    }
156
157
    /**
158
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\PaymentReaderInterface
159
     */
160
    public function createPaymentReader(): PaymentReaderInterface
161
    {
162
        return new PaymentReader($this->getQueryContainer());
163
    }
164
165
    /**
166
     * @return \SprykerEco\Zed\AfterPay\Business\Hook\PostSaveHookInterface
167
     */
168
    public function createPostSaveHook(): PostSaveHookInterface
169
    {
170
        return new PostSaveHook(
171
            $this->createTransactionLogReader(),
172
            $this->getConfig()
173
        );
174
    }
175
176
    /**
177
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Capture\CaptureRequestBuilderInterface
178
     */
179
    public function createCaptureRequestBuilder(): CaptureRequestBuilderInterface
180
    {
181
        return new CaptureRequestBuilder(
182
            $this->createOrderToRequestMapper(),
183
            $this->getMoneyFacade()
184
        );
185
    }
186
187
    /**
188
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\CaptureTransactionInterface
189
     */
190
    public function createCaptureTransaction(): CaptureTransactionInterface
191
    {
192
        return new CaptureTransaction(
193
            $this->createTransactionLogger(),
194
            $this->createApiAdapter()
195
        );
196
    }
197
198
    /**
199
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\RefundTransactionInterface
200
     */
201
    public function createRefundTransaction(): RefundTransactionInterface
202
    {
203
        return new RefundTransaction(
204
            $this->createTransactionLogger(),
205
            $this->createApiAdapter()
206
        );
207
    }
208
209
    /**
210
     * @return \SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\ValidateCustomerHandlerInterface
211
     */
212
    public function createValidateCustomerHandler(): ValidateCustomerHandlerInterface
213
    {
214
        return new ValidateCustomerHandler(
215
            $this->createApiAdapter(),
216
            $this->getAfterPayToCustomerBridge()
217
        );
218
    }
219
220
    /**
221
     * @return \SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\ValidateBankAccountHandlerInterface
222
     */
223
    public function createValidateBankAccountHandler(): ValidateBankAccountHandlerInterface
224
    {
225
        return new ValidateBankAccountHandler($this->createApiAdapter());
226
    }
227
228
    /**
229
     * @return \SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\LookupCustomerHandlerInterface
230
     */
231
    public function createLookupCustomerHandler(): LookupCustomerHandlerInterface
232
    {
233
        return new LookupCustomerHandler($this->createApiAdapter());
234
    }
235
236
    /**
237
     * @return \SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\LookupInstallmentPlansHandlerInterface
238
     */
239
    public function createLookupInstallmentPlansHandler(): LookupInstallmentPlansHandlerInterface
240
    {
241
        return new LookupInstallmentPlansHandler($this->createApiAdapter());
242
    }
243
244
    /**
245
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\PaymentWriterInterface
246
     */
247
    public function createPaymentWriter(): PaymentWriterInterface
248
    {
249
        return new PaymentWriter($this->getQueryContainer(), $this->getEntityManager());
250
    }
251
252
    /**
253
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\AuthorizeTransactionInterface
254
     */
255
    public function createAuthorizeTransaction(): AuthorizeTransactionInterface
256
    {
257
        return new AuthorizeTransaction(
258
            $this->createTransactionLogger(),
259
            $this->createApiAdapter(),
260
            $this->createPaymentAuthorizeWriter()
261
        );
262
    }
263
264
    /**
265
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\CancelTransactionInterface
266
     */
267
    public function createCancelTransaction(): CancelTransactionInterface
268
    {
269
        return new CancelTransaction(
270
            $this->createTransactionLogger(),
271
            $this->createApiAdapter()
272
        );
273
    }
274
275
    /**
276
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Logger\TransactionLoggerInterface
277
     */
278
    public function createTransactionLogger(): TransactionLoggerInterface
279
    {
280
        return new TransactionLogger($this->getUtilEncodingService());
281
    }
282
283
    /**
284
     * @return \SprykerEco\Zed\AfterPay\Business\Api\Adapter\AdapterInterface
285
     */
286
    public function createApiAdapter(): AdapterInterface
287
    {
288
        return new AfterPayApiAdapter($this->createAdapterFactory());
289
    }
290
291
    /**
292
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\PaymentAuthorizeWriterInterface
293
     */
294
    public function createPaymentAuthorizeWriter(): PaymentAuthorizeWriterInterface
295
    {
296
        return new PaymentAuthorizeWriter($this->getQueryContainer());
297
    }
298
299
    /**
300
     * @return \SprykerEco\Zed\AfterPay\Business\Api\Adapter\AdapterFactoryInterface
301
     */
302
    public function createAdapterFactory(): AdapterFactoryInterface
303
    {
304
        return new AdapterFactory();
305
    }
306
307
    /**
308
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface
309
     */
310
    public function getAuthorizeRequestBuilder(): AuthorizeRequestBuilderInterface
311
    {
312
        return $this->createAuthorizeRequestBuilder();
313
    }
314
315
    /**
316
     * @throws \SprykerEco\Zed\AfterPay\Business\Exception\InvalidAfterPayAuthorizeRequestBuilderException
317
     *
318
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface
319
     */
320
    public function createAuthorizeRequestBuilder(): AuthorizeRequestBuilderInterface
321
    {
322
        $authorizeWorkflow = $this->getConfig()->getAfterPayAuthorizeWorkflow();
323
        $authorizeRequestBuilderStack = $this->getAuthorizeRequestBuilderStack();
324
325
        if (!isset($authorizeRequestBuilderStack[$authorizeWorkflow])) {
326
            throw new InvalidAfterPayAuthorizeRequestBuilderException(sprintf(
327
                '%s is not a valid AfterPay authorize request builder.',
328
                $authorizeWorkflow
329
            ));
330
        }
331
332
        return $authorizeRequestBuilderStack[$authorizeWorkflow];
333
    }
334
335
    /**
336
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface[]
337
     */
338
    public function getAuthorizeRequestBuilderStack(): array
339
    {
340
        return [
341
            AfterPayConfig::AFTERPAY_AUTHORIZE_WORKFLOW_ONE_STEP => $this->createOneStepAuthorizeRequestBuilder(),
342
            AfterPayConfig::AFTERPAY_AUTHORIZE_WORKFLOW_TWO_STEPS => $this->createTwoStepsAuthorizeRequestBuilder(),
343
        ];
344
    }
345
346
    /**
347
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Cancel\CancelRequestBuilderInterface
348
     */
349
    public function createCancelRequestBuilder(): CancelRequestBuilderInterface
350
    {
351
        return new CancelRequestBuilder(
352
            $this->createOrderToRequestMapper(),
353
            $this->getMoneyFacade()
354
        );
355
    }
356
357
    /**
358
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Refund\RefundRequestBuilderInterface
359
     */
360
    public function createRefundRequestBuilder(): RefundRequestBuilderInterface
361
    {
362
        return new RefundRequestBuilder(
363
            $this->createOrderToRequestMapper(),
364
            $this->getMoneyFacade()
365
        );
366
    }
367
368
    /**
369
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface
370
     */
371
    public function createOneStepAuthorizeRequestBuilder(): AuthorizeRequestBuilderInterface
372
    {
373
        return new OneStepAuthorizeRequestBuilder($this->createOrderToRequestMapper());
374
    }
375
376
    /**
377
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Mapper\OrderToRequestTransferInterface
378
     */
379
    public function createOrderToRequestMapper(): OrderToRequestTransferInterface
380
    {
381
        return new OrderToRequestTransfer(
382
            $this->getMoneyFacade(),
383
            $this->getStoreFacade(),
384
            $this->createPriceToPayProvider()
385
        );
386
    }
387
388
    /**
389
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface
390
     */
391
    public function createTwoStepsAuthorizeRequestBuilder(): AuthorizeRequestBuilderInterface
392
    {
393
        return new TwoStepsAuthorizeRequestBuilder($this->createOrderToRequestMapper());
394
    }
395
396
    /**
397
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\TransactionLogReaderInterface
398
     */
399
    public function createTransactionLogReader(): TransactionLogReaderInterface
400
    {
401
        return new TransactionLogReader($this->getQueryContainer());
402
    }
403
404
    /**
405
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\PriceToPayProviderInterface
406
     */
407
    public function createPriceToPayProvider(): PriceToPayProviderInterface
408
    {
409
        return new PriceToPayProvider($this->getPaymentFacade());
410
    }
411
412
    /**
413
     * @return \SprykerEco\Zed\AfterPay\Business\Mapper\AfterPayMapperInterface
414
     */
415
    public function createAfterPayMapper(): AfterPayMapperInterface
416
    {
417
        return new AfterPayMapper();
418
    }
419
420
    /**
421
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Mapper\QuoteToRequestTransferInterface
422
     */
423
    public function createQuoteToRequestMapper(): QuoteToRequestTransferInterface
424
    {
425
        return new QuoteToRequestTransfer(
426
            $this->getMoneyFacade(),
427
            $this->getStoreFacade()
428
        );
429
    }
430
431
    /**
432
     * @throws \SprykerEco\Zed\AfterPay\Business\Exception\InvalidAfterPayPaymentMethodsFilterException
433
     *
434
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Filter\AfterPayPaymentMethodsFilterInterface
435
     */
436
    public function createPaymentMethodsFilter(): AfterPayPaymentMethodsFilterInterface
437
    {
438
        $authorizeWorkflow = $this->getConfig()->getAfterPayAuthorizeWorkflow();
439
        $paymentMethodsFilterStack = $this->getPaymentMethodsFilterStack();
440
441
        if (!isset($paymentMethodsFilterStack[$authorizeWorkflow])) {
442
            throw new InvalidAfterPayPaymentMethodsFilterException(sprintf(
443
                '%s is not a valid AfterPay payment methods filter.',
444
                $authorizeWorkflow
445
            ));
446
        }
447
448
        return $paymentMethodsFilterStack[$authorizeWorkflow];
449
    }
450
451
    /**
452
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Filter\AfterPayPaymentMethodsFilterInterface[]
453
     */
454
    public function getPaymentMethodsFilterStack(): array
455
    {
456
        return [
457
            AfterPayConfig::AFTERPAY_AUTHORIZE_WORKFLOW_ONE_STEP => $this->createOneStepAuthorizePaymentMethodsFilter(),
458
            AfterPayConfig::AFTERPAY_AUTHORIZE_WORKFLOW_TWO_STEPS => $this->createTwoStepAuthorizePaymentMethodsFilter(),
459
        ];
460
    }
461
462
    /**
463
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Filter\AfterPayPaymentMethodsFilterInterface
464
     */
465
    public function createOneStepAuthorizePaymentMethodsFilter(): AfterPayPaymentMethodsFilterInterface
466
    {
467
        return new OneStepAuthorizePaymentMethodsFilter();
468
    }
469
470
    /**
471
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Filter\AfterPayPaymentMethodsFilterInterface
472
     */
473
    public function createTwoStepAuthorizePaymentMethodsFilter(): AfterPayPaymentMethodsFilterInterface
474
    {
475
        return new TwoStepAuthorizePaymentMethodsFilter();
476
    }
477
478
    /**
479
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Filter\Provider\AfterPayPaymentMethodsProviderInterface
480
     */
481
    public function createPaymentMethodsProvider(): AfterPayPaymentMethodsProviderInterface
482
    {
483
        return new AfterPayPaymentMethodsProvider(
484
            $this->createApiAdapter(),
485
            $this->createQuoteToRequestMapper()
486
        );
487
    }
488
489
    /**
490
     * @return \SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToMoneyFacadeInterface
491
     */
492
    public function getMoneyFacade(): AfterPayToMoneyFacadeInterface
493
    {
494
        return $this->getProvidedDependency(AfterPayDependencyProvider::FACADE_MONEY);
495
    }
496
497
    /**
498
     * @return \SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToCustomerFacadeInterface
499
     */
500
    public function getAfterPayToCustomerBridge(): AfterPayToCustomerFacadeInterface
501
    {
502
        return $this->getProvidedDependency(AfterPayDependencyProvider::FACADE_CUSTOMER);
503
    }
504
505
    /**
506
     * @return \SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToStoreFacadeInterface
507
     */
508
    public function getStoreFacade(): AfterPayToStoreFacadeInterface
509
    {
510
        return $this->getProvidedDependency(AfterPayDependencyProvider::FACADE_STORE);
511
    }
512
513
    /**
514
     * @return \SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToPaymentFacadeInterface
515
     */
516
    public function getPaymentFacade(): AfterPayToPaymentFacadeInterface
517
    {
518
        return $this->getProvidedDependency(AfterPayDependencyProvider::FACADE_PAYMENT);
519
    }
520
521
    /**
522
     * @return \SprykerEco\Zed\AfterPay\Dependency\Service\AfterPayToUtilEncodingServiceInterface
523
     */
524
    public function getUtilEncodingService(): AfterPayToUtilEncodingServiceInterface
525
    {
526
        return $this->getProvidedDependency(AfterPayDependencyProvider::SERVICE_UTIL_ENCODING);
527
    }
528
}
529