Passed
Push — feature/eco-574/eco-2266-check... ( efd21d )
by Aleksey
08:13
created

getAfterpayToCustomerBridge()   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\Shared\Afterpay\AfterpayConstants;
13
use SprykerEco\Zed\Afterpay\AfterpayDependencyProvider;
14
use SprykerEco\Zed\Afterpay\Business\AdditionalServices\Handler\LookupCustomerHandler;
15
use SprykerEco\Zed\Afterpay\Business\AdditionalServices\Handler\LookupCustomerHandlerInterface;
16
use SprykerEco\Zed\Afterpay\Business\AdditionalServices\Handler\LookupInstallmentPlansHandler;
17
use SprykerEco\Zed\Afterpay\Business\AdditionalServices\Handler\LookupInstallmentPlansHandlerInterface;
18
use SprykerEco\Zed\Afterpay\Business\AdditionalServices\Handler\ValidateBankAccountHandler;
19
use SprykerEco\Zed\Afterpay\Business\AdditionalServices\Handler\ValidateBankAccountHandlerInterface;
20
use SprykerEco\Zed\Afterpay\Business\AdditionalServices\Handler\ValidateCustomerHandler;
21
use SprykerEco\Zed\Afterpay\Business\AdditionalServices\Handler\ValidateCustomerHandlerInterface;
22
use SprykerEco\Zed\Afterpay\Business\Api\Adapter\AdapterFactory;
23
use SprykerEco\Zed\Afterpay\Business\Api\Adapter\AdapterFactoryInterface;
24
use SprykerEco\Zed\Afterpay\Business\Api\Adapter\AdapterInterface;
25
use SprykerEco\Zed\Afterpay\Business\Api\Adapter\AfterpayApiAdapter;
26
use SprykerEco\Zed\Afterpay\Business\Hook\PostSaveHook;
27
use SprykerEco\Zed\Afterpay\Business\Hook\PostSaveHookInterface;
28
use SprykerEco\Zed\Afterpay\Business\Order\Saver;
29
use SprykerEco\Zed\Afterpay\Business\Order\SaverInterface;
30
use SprykerEco\Zed\Afterpay\Business\Payment\Handler\RiskCheck\AvailablePaymentMethodsHandler;
31
use SprykerEco\Zed\Afterpay\Business\Payment\Handler\RiskCheck\AvailablePaymentMethodsHandlerInterface;
32
use SprykerEco\Zed\Afterpay\Business\Payment\Mapper\OrderToRequestTransfer;
33
use SprykerEco\Zed\Afterpay\Business\Payment\Mapper\OrderToRequestTransferInterface;
34
use SprykerEco\Zed\Afterpay\Business\Payment\Mapper\QuoteToRequestTransfer;
35
use SprykerEco\Zed\Afterpay\Business\Payment\Mapper\QuoteToRequestTransferInterface;
36
use SprykerEco\Zed\Afterpay\Business\Payment\PaymentReader;
37
use SprykerEco\Zed\Afterpay\Business\Payment\PaymentReaderInterface;
38
use SprykerEco\Zed\Afterpay\Business\Payment\PaymentWriter;
39
use SprykerEco\Zed\Afterpay\Business\Payment\PaymentWriterInterface;
40
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Authorize\PaymentAuthorizeWriter;
41
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Authorize\PaymentAuthorizeWriterInterface;
42
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface;
43
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Authorize\RequestBuilder\OneStepAuthorizeRequestBuilder;
44
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Authorize\RequestBuilder\TwoStepsAuthorizeRequestBuilder;
45
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\AuthorizeTransaction;
46
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\AuthorizeTransactionInterface;
47
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Cancel\CancelRequestBuilder;
48
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Cancel\CancelRequestBuilderInterface;
49
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\CancelTransaction;
50
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\CancelTransactionInterface;
51
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Capture\CaptureRequestBuilder;
52
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Capture\CaptureRequestBuilderInterface;
53
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\CaptureTransaction;
54
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\CaptureTransactionInterface;
55
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Handler\AuthorizeTransactionHandler;
56
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Handler\AuthorizeTransactionHandlerInterface;
57
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Handler\CancelTransactionHandler;
58
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Handler\CancelTransactionHandlerInterface;
59
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Handler\CaptureTransactionHandler;
60
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Handler\CaptureTransactionHandlerInterface;
61
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Handler\RefundTransactionHandler;
62
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Handler\RefundTransactionHandlerInterface;
63
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Logger\TransactionLogger;
64
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Logger\TransactionLoggerInterface;
65
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\PriceToPayProvider;
66
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\PriceToPayProviderInterface;
67
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Refund\RefundRequestBuilder;
68
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Refund\RefundRequestBuilderInterface;
69
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\RefundTransaction;
70
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\RefundTransactionInterface;
71
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\TransactionLogReader;
72
use SprykerEco\Zed\Afterpay\Business\Payment\Transaction\TransactionLogReaderInterface;
73
use SprykerEco\Zed\Afterpay\Dependency\Facade\AfterpayToCustomerInterface;
74
use SprykerEco\Zed\Afterpay\Dependency\Facade\AfterpayToMoneyInterface;
75
use SprykerEco\Zed\Afterpay\Dependency\Facade\AfterpayToPaymentInterface;
76
use SprykerEco\Zed\Afterpay\Dependency\Facade\AfterpayToStoreInterface;
77
use SprykerEco\Zed\Afterpay\Dependency\Service\AfterpayToUtilEncodingInterface;
78
79
/**
80
 * @method \SprykerEco\Zed\Afterpay\Persistence\AfterpayQueryContainerInterface getQueryContainer()
81
 * @method \SprykerEco\Zed\Afterpay\AfterpayConfig getConfig()
82
 */
83
class AfterpayBusinessFactory extends AbstractBusinessFactory
84
{
85
    /**
86
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Handler\RiskCheck\AvailablePaymentMethodsHandlerInterface
87
     */
88
    public function createAvailablePaymentMethodsHandler(): AvailablePaymentMethodsHandlerInterface
89
    {
90
        return new AvailablePaymentMethodsHandler(
91
            $this->createApiAdapter(),
92
            $this->createQuoteToRequestMapper()
93
        );
94
    }
95
96
    /**
97
     * @return \SprykerEco\Zed\Afterpay\Business\Order\SaverInterface
98
     */
99
    public function createOrderSaver(): SaverInterface
100
    {
101
        return new Saver($this->getConfig());
102
    }
103
104
    /**
105
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Handler\AuthorizeTransactionHandlerInterface
106
     */
107
    public function createAuthorizeTransactionHandler(): AuthorizeTransactionHandlerInterface
108
    {
109
        return new AuthorizeTransactionHandler(
110
            $this->createAuthorizeTransaction(),
111
            $this->getAuthorizeRequestBuilder(),
112
            $this->createPaymentWriter(),
113
            $this->createPriceToPayProvider()
114
        );
115
    }
116
117
    /**
118
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Handler\CaptureTransactionHandlerInterface
119
     */
120
    public function createCaptureTransactionHandler(): CaptureTransactionHandlerInterface
121
    {
122
        return new CaptureTransactionHandler(
123
            $this->createCaptureTransaction(),
124
            $this->createPaymentReader(),
125
            $this->createPaymentWriter(),
126
            $this->createCaptureRequestBuilder()
127
        );
128
    }
129
130
    /**
131
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Handler\RefundTransactionHandlerInterface
132
     */
133
    public function createRefundTransactionHandler(): RefundTransactionHandlerInterface
134
    {
135
        return new RefundTransactionHandler(
136
            $this->createRefundTransaction(),
137
            $this->createPaymentReader(),
138
            $this->createPaymentWriter(),
139
            $this->getMoneyFacade(),
140
            $this->createRefundRequestBuilder()
141
        );
142
    }
143
144
    /**
145
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Handler\CancelTransactionHandlerInterface
146
     */
147
    public function createCancelTransactionHandler(): CancelTransactionHandlerInterface
148
    {
149
        return new CancelTransactionHandler(
150
            $this->createCancelTransaction(),
151
            $this->createPaymentReader(),
152
            $this->createPaymentWriter(),
153
            $this->getMoneyFacade(),
154
            $this->createCancelRequestBuilder()
155
        );
156
    }
157
158
    /**
159
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\PaymentReaderInterface
160
     */
161
    public function createPaymentReader(): PaymentReaderInterface
162
    {
163
        return new PaymentReader($this->getQueryContainer());
164
    }
165
166
    /**
167
     * @return \SprykerEco\Zed\Afterpay\Business\Hook\PostSaveHookInterface
168
     */
169
    public function createPostSaveHook(): PostSaveHookInterface
170
    {
171
        return new PostSaveHook(
172
            $this->createTransactionLogReader(),
173
            $this->getConfig()
174
        );
175
    }
176
177
    /**
178
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Capture\CaptureRequestBuilderInterface
179
     */
180
    public function createCaptureRequestBuilder(): CaptureRequestBuilderInterface
181
    {
182
        return new CaptureRequestBuilder(
183
            $this->createOrderToRequestMapper(),
184
            $this->getMoneyFacade()
185
        );
186
    }
187
188
    /**
189
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\CaptureTransactionInterface
190
     */
191
    public function createCaptureTransaction(): CaptureTransactionInterface
192
    {
193
        return new CaptureTransaction(
194
            $this->createTransactionLogger(),
195
            $this->createApiAdapter()
196
        );
197
    }
198
199
    /**
200
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\RefundTransactionInterface
201
     */
202
    public function createRefundTransaction(): RefundTransactionInterface
203
    {
204
        return new RefundTransaction(
205
            $this->createTransactionLogger(),
206
            $this->createApiAdapter()
207
        );
208
    }
209
210
    /**
211
     * @return \SprykerEco\Zed\Afterpay\Business\AdditionalServices\Handler\ValidateCustomerHandlerInterface
212
     */
213
    public function createValidateCustomerHandler(): ValidateCustomerHandlerInterface
214
    {
215
        return new ValidateCustomerHandler(
216
            $this->createApiAdapter(),
217
            $this->getAfterpayToCustomerBridge()
218
        );
219
    }
220
221
    /**
222
     * @return \SprykerEco\Zed\Afterpay\Business\AdditionalServices\Handler\ValidateBankAccountHandlerInterface
223
     */
224
    public function createValidateBankAccountHandler(): ValidateBankAccountHandlerInterface
225
    {
226
        return new ValidateBankAccountHandler($this->createApiAdapter());
227
    }
228
229
    /**
230
     * @return \SprykerEco\Zed\Afterpay\Business\AdditionalServices\Handler\LookupCustomerHandlerInterface
231
     */
232
    public function createLookupCustomerHandler(): LookupCustomerHandlerInterface
233
    {
234
        return new LookupCustomerHandler($this->createApiAdapter());
235
    }
236
237
    /**
238
     * @return \SprykerEco\Zed\Afterpay\Business\AdditionalServices\Handler\LookupInstallmentPlansHandlerInterface
239
     */
240
    public function createLookupInstallmentPlansHandler(): LookupInstallmentPlansHandlerInterface
241
    {
242
        return new LookupInstallmentPlansHandler($this->createApiAdapter());
243
    }
244
245
    /**
246
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\PaymentWriterInterface
247
     */
248
    public function createPaymentWriter(): PaymentWriterInterface
249
    {
250
        return new PaymentWriter($this->getQueryContainer());
251
    }
252
253
    /**
254
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\AuthorizeTransactionInterface
255
     */
256
    public function createAuthorizeTransaction(): AuthorizeTransactionInterface
257
    {
258
        return new AuthorizeTransaction(
259
            $this->createTransactionLogger(),
260
            $this->createApiAdapter(),
261
            $this->createPaymentAuthorizeWriter()
262
        );
263
    }
264
265
    /**
266
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\CancelTransactionInterface
267
     */
268
    public function createCancelTransaction(): CancelTransactionInterface
269
    {
270
        return new CancelTransaction(
271
            $this->createTransactionLogger(),
272
            $this->createApiAdapter()
273
        );
274
    }
275
276
    /**
277
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Logger\TransactionLoggerInterface
278
     */
279
    public function createTransactionLogger(): TransactionLoggerInterface
280
    {
281
        return new TransactionLogger($this->getUtilEncodingService());
282
    }
283
284
    /**
285
     * @return \SprykerEco\Zed\Afterpay\Business\Api\Adapter\AdapterInterface
286
     */
287
    public function createApiAdapter(): AdapterInterface
288
    {
289
        return new AfterpayApiAdapter($this->createAdapterFactory());
290
    }
291
292
    /**
293
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Authorize\PaymentAuthorizeWriterInterface
294
     */
295
    public function createPaymentAuthorizeWriter(): PaymentAuthorizeWriterInterface
296
    {
297
        return new PaymentAuthorizeWriter($this->getQueryContainer());
298
    }
299
300
    /**
301
     * @return \SprykerEco\Zed\Afterpay\Business\Api\Adapter\AdapterFactoryInterface
302
     */
303
    public function createAdapterFactory(): AdapterFactoryInterface
304
    {
305
        return new AdapterFactory();
306
    }
307
308
    /**
309
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface
310
     */
311
    public function getAuthorizeRequestBuilder(): AuthorizeRequestBuilderInterface
312
    {
313
        $authorizeWorkflow = $this->getConfig()->getAfterpayAuthorizeWorkflow();
314
315
        switch ($authorizeWorkflow) {
316
            case AfterpayConfig::AFTERPAY_AUTHORIZE_WORKFLOW_ONE_STEP:
317
                return $this->createOneStepAuthorizeRequestBuilder();
318
            case AfterpayConfig::AFTERPAY_AUTHORIZE_WORKFLOW_TWO_STEPS:
319
                return $this->createTwoStepsAuthorizeRequestBuilder();
320
            default:
321
                return $this->createOneStepAuthorizeRequestBuilder();
322
        }
323
    }
324
325
    /**
326
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Cancel\CancelRequestBuilderInterface
327
     */
328
    public function createCancelRequestBuilder(): CancelRequestBuilderInterface
329
    {
330
        return new CancelRequestBuilder(
331
            $this->createOrderToRequestMapper(),
332
            $this->getMoneyFacade()
333
        );
334
    }
335
336
    /**
337
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Refund\RefundRequestBuilderInterface
338
     */
339
    public function createRefundRequestBuilder(): RefundRequestBuilderInterface
340
    {
341
        return new RefundRequestBuilder(
342
            $this->createOrderToRequestMapper(),
343
            $this->getMoneyFacade()
344
        );
345
    }
346
347
    /**
348
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface
349
     */
350
    public function createOneStepAuthorizeRequestBuilder(): AuthorizeRequestBuilderInterface
351
    {
352
        return new OneStepAuthorizeRequestBuilder($this->createOrderToRequestMapper());
353
    }
354
355
    /**
356
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Mapper\OrderToRequestTransferInterface
357
     */
358
    public function createOrderToRequestMapper(): OrderToRequestTransferInterface
359
    {
360
        return new OrderToRequestTransfer(
361
            $this->getMoneyFacade(),
362
            $this->getStoreFacade(),
363
            $this->createPriceToPayProvider()
364
        );
365
    }
366
367
    /**
368
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface
369
     */
370
    public function createTwoStepsAuthorizeRequestBuilder(): AuthorizeRequestBuilderInterface
371
    {
372
        return new TwoStepsAuthorizeRequestBuilder($this->createOrderToRequestMapper());
373
    }
374
375
    /**
376
     * @return \SprykerEco\Zed\Afterpay\Dependency\Service\AfterpayToUtilEncodingInterface
377
     */
378
    public function getUtilEncodingService(): AfterpayToUtilEncodingInterface
379
    {
380
        return $this->getProvidedDependency(AfterpayDependencyProvider::SERVICE_UTIL_ENCODING);
381
    }
382
383
    /**
384
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Mapper\QuoteToRequestTransferInterface
385
     */
386
    public function createQuoteToRequestMapper(): QuoteToRequestTransferInterface
387
    {
388
        return new QuoteToRequestTransfer(
389
            $this->getMoneyFacade(),
390
            $this->getStoreFacade()
391
        );
392
    }
393
394
    /**
395
     * @return \SprykerEco\Zed\Afterpay\Dependency\Facade\AfterpayToMoneyInterface
396
     */
397
    public function getMoneyFacade(): AfterpayToMoneyInterface
398
    {
399
        return $this->getProvidedDependency(AfterpayDependencyProvider::FACADE_MONEY);
400
    }
401
402
    /**
403
     * @return \SprykerEco\Zed\Afterpay\Dependency\Facade\AfterpayToCustomerInterface
404
     */
405
    public function getAfterpayToCustomerBridge(): AfterpayToCustomerInterface
406
    {
407
        return $this->getProvidedDependency(AfterpayDependencyProvider::FACADE_CUSTOMER);
408
    }
409
410
    /**
411
     * @return \SprykerEco\Zed\Afterpay\Dependency\Facade\AfterpayToStoreInterface
412
     */
413
    public function getStoreFacade(): AfterpayToStoreInterface
414
    {
415
        return $this->getProvidedDependency(AfterpayDependencyProvider::FACADE_STORE);
416
    }
417
418
    /**
419
     * @return \SprykerEco\Zed\Afterpay\Dependency\Facade\AfterpayToPaymentInterface
420
     */
421
    public function getPaymentFacade(): AfterpayToPaymentInterface
422
    {
423
        return $this->getProvidedDependency(AfterpayDependencyProvider::FACADE_PAYMENT);
424
    }
425
426
    /**
427
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\TransactionLogReaderInterface
428
     */
429
    public function createTransactionLogReader(): TransactionLogReaderInterface
430
    {
431
        return new TransactionLogReader($this->getQueryContainer());
432
    }
433
434
    /**
435
     * @return \SprykerEco\Zed\Afterpay\Business\Payment\Transaction\PriceToPayProviderInterface
436
     */
437
    public function createPriceToPayProvider(): PriceToPayProviderInterface
438
    {
439
        return new PriceToPayProvider($this->getPaymentFacade());
440
    }
441
}
442