RatepayBusinessFactory   A
last analyzed

Complexity

Total Complexity 32

Size/Duplication

Total Lines 410
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 116
c 1
b 0
f 0
dl 0
loc 410
rs 9.84
wmc 32

32 Methods

Rating   Name   Duplication   Size   Complexity  
A createMethodMapperFactory() 0 3 1
A createServiceMethod() 0 6 1
A getCalculation() 0 3 1
A getMoneyFacade() 0 3 1
A createBuilderFactory() 0 4 1
A createPaymentMethodSaver() 0 7 1
A createInstallment() 0 6 1
A createAdapter() 0 3 1
A createPostSaveHook() 0 4 1
A createPrepayment() 0 6 1
A createElv() 0 6 1
A createRequestTransfer() 0 3 1
A createInstaller() 0 5 1
A createRequestPaymentTransactionHandler() 0 11 1
A createConfirmDeliveryTransactionHandler() 0 11 1
A createProductExpander() 0 4 1
A createRefundPaymentTransactionHandler() 0 11 1
A getGlossaryFacade() 0 3 1
A createStatusTransaction() 0 4 1
A createInitPaymentTransactionHandler() 0 11 1
A createRequestProfileTransactionHandler() 0 11 1
A createConverterFactory() 0 4 1
A createConfirmPaymentTransactionHandler() 0 11 1
A createMapperFactory() 0 4 1
A getProductFacade() 0 3 1
A createOrderSaver() 0 13 1
A createInvoice() 0 6 1
A registerAllMethodMappers() 0 8 1
A createInstallmentCalculationTransactionHandler() 0 11 1
A createApiRequestFactory() 0 7 1
A createCancelPaymentTransactionHandler() 0 11 1
A createInstallmentConfigurationTransactionHandler() 0 11 1
1
<?php
2
3
/**
4
 * MIT License
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerEco\Zed\Ratepay\Business;
9
10
use Generated\Shared\Transfer\CheckoutResponseTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\CheckoutResponseTransfer 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...
11
use Generated\Shared\Transfer\QuoteTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\QuoteTransfer 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...
12
use Generated\Shared\Transfer\RatepayRequestTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\RatepayRequestTransfer 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...
13
use Spryker\Zed\Kernel\Business\AbstractBusinessFactory;
14
use SprykerEco\Zed\Ratepay\Business\Api\Adapter\AdapterInterface;
15
use SprykerEco\Zed\Ratepay\Business\Api\Adapter\Http\Guzzle;
16
use SprykerEco\Zed\Ratepay\Business\Api\ApiFactory;
17
use SprykerEco\Zed\Ratepay\Business\Api\Builder\BuilderFactory;
18
use SprykerEco\Zed\Ratepay\Business\Api\Builder\BuilderFactoryInterface;
19
use SprykerEco\Zed\Ratepay\Business\Api\Converter\ConverterFactory;
20
use SprykerEco\Zed\Ratepay\Business\Api\Converter\ConverterFactoryInterface;
21
use SprykerEco\Zed\Ratepay\Business\Api\Mapper\MapperFactory;
22
use SprykerEco\Zed\Ratepay\Business\Api\Mapper\MapperFactoryInterface;
23
use SprykerEco\Zed\Ratepay\Business\Api\Model\RequestModelBuilderInterface;
24
use SprykerEco\Zed\Ratepay\Business\Expander\ProductExpander;
25
use SprykerEco\Zed\Ratepay\Business\Expander\ProductExpanderInterface;
26
use SprykerEco\Zed\Ratepay\Business\Internal\Install;
27
use SprykerEco\Zed\Ratepay\Business\Internal\InstallInterface;
28
use SprykerEco\Zed\Ratepay\Business\Order\MethodMapperFactory;
29
use SprykerEco\Zed\Ratepay\Business\Order\MethodMapperFactoryInterface;
30
use SprykerEco\Zed\Ratepay\Business\Order\Saver;
31
use SprykerEco\Zed\Ratepay\Business\Order\SaverInterface;
32
use SprykerEco\Zed\Ratepay\Business\Payment\PaymentSaver;
33
use SprykerEco\Zed\Ratepay\Business\Payment\PaymentSaverInterface;
34
use SprykerEco\Zed\Ratepay\Business\Payment\PostSaveHook;
35
use SprykerEco\Zed\Ratepay\Business\Payment\PostSaveHookInterface;
36
use SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\CancelPaymentTransaction;
37
use SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\ConfirmDeliveryTransaction;
38
use SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\ConfirmPaymentTransaction;
39
use SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\InitPaymentTransaction;
40
use SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\InstallmentCalculationTransaction;
41
use SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\InstallmentConfigurationTransaction;
42
use SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\MethodMapperInterface;
43
use SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\OrderTransactionInterface;
44
use SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\PaymentInitTransactionInterface;
45
use SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\QuoteTransactionInterface;
46
use SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\RefundPaymentTransaction;
47
use SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\RequestPaymentTransaction;
48
use SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\RequestPaymentTransactionInterface;
49
use SprykerEco\Zed\Ratepay\Business\Request\Payment\Method\Elv;
50
use SprykerEco\Zed\Ratepay\Business\Request\Payment\Method\Installment;
51
use SprykerEco\Zed\Ratepay\Business\Request\Payment\Method\Invoice;
52
use SprykerEco\Zed\Ratepay\Business\Request\Payment\Method\Prepayment;
53
use SprykerEco\Zed\Ratepay\Business\Request\RequestMethodInterface;
54
use SprykerEco\Zed\Ratepay\Business\Request\Service\Handler\Transaction\ProfileTransaction;
55
use SprykerEco\Zed\Ratepay\Business\Request\Service\Handler\Transaction\ProfileTransactionInterface;
56
use SprykerEco\Zed\Ratepay\Business\Request\Service\Method\ServiceMethod;
57
use SprykerEco\Zed\Ratepay\Business\Status\TransactionStatus;
58
use SprykerEco\Zed\Ratepay\Business\Status\TransactionStatusInterface;
59
use SprykerEco\Zed\Ratepay\Dependency\Facade\RatepayToCalculationInterface;
60
use SprykerEco\Zed\Ratepay\Dependency\Facade\RatepayToGlossaryInterface;
61
use SprykerEco\Zed\Ratepay\Dependency\Facade\RatepayToMoneyInterface;
62
use SprykerEco\Zed\Ratepay\Dependency\Facade\RatepayToProductInterface;
63
use SprykerEco\Zed\Ratepay\RatepayDependencyProvider;
64
65
/**
66
 * @method \SprykerEco\Zed\Ratepay\Persistence\RatepayQueryContainerInterface getQueryContainer()
67
 * @method \SprykerEco\Zed\Ratepay\RatepayConfig getConfig()
68
 */
69
class RatepayBusinessFactory extends AbstractBusinessFactory
70
{
71
    /**
72
     * @param string $gatewayUrl
73
     *
74
     * @return \SprykerEco\Zed\Ratepay\Business\Api\Adapter\AdapterInterface
75
     */
76
    protected function createAdapter($gatewayUrl): AdapterInterface
77
    {
78
        return new Guzzle($gatewayUrl);
79
    }
80
81
    /**
82
     * @return \SprykerEco\Zed\Ratepay\Business\Request\Service\Handler\Transaction\ProfileTransactionInterface
83
     */
84
    public function createRequestProfileTransactionHandler(): ProfileTransactionInterface
85
    {
86
        $transactionHandler = new ProfileTransaction(
87
            $this->createAdapter($this->getConfig()->getTransactionGatewayUrl()),
88
            $this->createConverterFactory(),
89
            $this->getQueryContainer()
90
        );
91
92
        $transactionHandler->registerMethodMapper($this->createServiceMethod($this->createRequestTransfer()));
93
94
        return $transactionHandler;
95
    }
96
97
    /**
98
     * @return \SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\PaymentInitTransactionInterface
99
     */
100
    public function createInitPaymentTransactionHandler(): PaymentInitTransactionInterface
101
    {
102
        $transactionHandler = new InitPaymentTransaction(
103
            $this->createAdapter($this->getConfig()->getTransactionGatewayUrl()),
104
            $this->createConverterFactory(),
105
            $this->getQueryContainer()
106
        );
107
108
        $this->registerAllMethodMappers($transactionHandler);
109
110
        return $transactionHandler;
111
    }
112
113
    /**
114
     * @return \SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\RequestPaymentTransactionInterface
115
     */
116
    public function createRequestPaymentTransactionHandler(): RequestPaymentTransactionInterface
117
    {
118
        $transactionHandler = new RequestPaymentTransaction(
119
            $this->createAdapter($this->getConfig()->getTransactionGatewayUrl()),
120
            $this->createConverterFactory(),
121
            $this->getQueryContainer()
122
        );
123
124
        $this->registerAllMethodMappers($transactionHandler);
125
126
        return $transactionHandler;
127
    }
128
129
    /**
130
     * @return \SprykerEco\Zed\Ratepay\Business\Payment\PaymentSaverInterface
131
     */
132
    public function createPaymentMethodSaver(): PaymentSaverInterface
133
    {
134
        $paymentSaver = new PaymentSaver(
135
            $this->getQueryContainer()
136
        );
137
138
        return $paymentSaver;
139
    }
140
141
    /**
142
     * @return \SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\OrderTransactionInterface
143
     */
144
    public function createConfirmPaymentTransactionHandler(): OrderTransactionInterface
145
    {
146
        $transactionHandler = new ConfirmPaymentTransaction(
147
            $this->createAdapter($this->getConfig()->getTransactionGatewayUrl()),
148
            $this->createConverterFactory(),
149
            $this->getQueryContainer()
150
        );
151
152
        $this->registerAllMethodMappers($transactionHandler);
153
154
        return $transactionHandler;
155
    }
156
157
    /**
158
     * @return \SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\OrderTransactionInterface
159
     */
160
    public function createConfirmDeliveryTransactionHandler(): OrderTransactionInterface
161
    {
162
        $transactionHandler = new ConfirmDeliveryTransaction(
163
            $this->createAdapter($this->getConfig()->getTransactionGatewayUrl()),
164
            $this->createConverterFactory(),
165
            $this->getQueryContainer()
166
        );
167
168
        $this->registerAllMethodMappers($transactionHandler);
169
170
        return $transactionHandler;
171
    }
172
173
    /**
174
     * @return \SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\OrderTransactionInterface
175
     */
176
    public function createCancelPaymentTransactionHandler(): OrderTransactionInterface
177
    {
178
        $transactionHandler = new CancelPaymentTransaction(
179
            $this->createAdapter($this->getConfig()->getTransactionGatewayUrl()),
180
            $this->createConverterFactory(),
181
            $this->getQueryContainer()
182
        );
183
184
        $this->registerAllMethodMappers($transactionHandler);
185
186
        return $transactionHandler;
187
    }
188
189
    /**
190
     * @return \SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\OrderTransactionInterface
191
     */
192
    public function createRefundPaymentTransactionHandler(): OrderTransactionInterface
193
    {
194
        $transactionHandler = new RefundPaymentTransaction(
195
            $this->createAdapter($this->getConfig()->getTransactionGatewayUrl()),
196
            $this->createConverterFactory(),
197
            $this->getQueryContainer()
198
        );
199
200
        $this->registerAllMethodMappers($transactionHandler);
201
202
        return $transactionHandler;
203
    }
204
205
    /**
206
     * @return \SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\QuoteTransactionInterface
207
     */
208
    public function createInstallmentConfigurationTransactionHandler(): QuoteTransactionInterface
209
    {
210
        $transactionHandler = new InstallmentConfigurationTransaction(
211
            $this->createAdapter($this->getConfig()->getTransactionGatewayUrl()),
212
            $this->createConverterFactory(),
213
            $this->getQueryContainer()
214
        );
215
216
        $transactionHandler->registerMethodMapper($this->createInstallment($this->createRequestTransfer()));
217
218
        return $transactionHandler;
219
    }
220
221
    /**
222
     * @return \SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\QuoteTransactionInterface
223
     */
224
    public function createInstallmentCalculationTransactionHandler(): QuoteTransactionInterface
225
    {
226
        $transactionHandler = new InstallmentCalculationTransaction(
227
            $this->createAdapter($this->getConfig()->getTransactionGatewayUrl()),
228
            $this->createConverterFactory(),
229
            $this->getQueryContainer()
230
        );
231
232
        $transactionHandler->registerMethodMapper($this->createInstallment($this->createRequestTransfer()));
233
234
        return $transactionHandler;
235
    }
236
237
    /**
238
     * @param \SprykerEco\Zed\Ratepay\Business\Request\Payment\Handler\Transaction\MethodMapperInterface $transactionHandler
239
     *
240
     * @return void
241
     */
242
    protected function registerAllMethodMappers(MethodMapperInterface $transactionHandler): void
243
    {
244
        $requestTransfer = $this->createRequestTransfer();
245
246
        $transactionHandler->registerMethodMapper($this->createInvoice($requestTransfer));
247
        $transactionHandler->registerMethodMapper($this->createElv($requestTransfer));
248
        $transactionHandler->registerMethodMapper($this->createPrepayment($requestTransfer));
249
        $transactionHandler->registerMethodMapper($this->createInstallment($requestTransfer));
250
    }
251
252
    /**
253
     * @return \SprykerEco\Zed\Ratepay\Business\Status\TransactionStatusInterface
254
     */
255
    public function createStatusTransaction(): TransactionStatusInterface
256
    {
257
        return new TransactionStatus(
258
            $this->getQueryContainer()
259
        );
260
    }
261
262
    /**
263
     * @param \Generated\Shared\Transfer\RatepayRequestTransfer $requestTransfer
264
     *
265
     * @return \SprykerEco\Zed\Ratepay\Business\Api\Model\RequestModelBuilderInterface
266
     */
267
    public function createApiRequestFactory($requestTransfer): RequestModelBuilderInterface
268
    {
269
        $factory = new ApiFactory(
270
            $this->createBuilderFactory($requestTransfer)
271
        );
272
273
        return $factory->createRequestModelBuilder();
274
    }
275
276
    /**
277
     * @return \SprykerEco\Zed\Ratepay\Business\Order\MethodMapperFactoryInterface
278
     */
279
    public function createMethodMapperFactory(): MethodMapperFactoryInterface
280
    {
281
        return new MethodMapperFactory();
282
    }
283
284
    /**
285
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
286
     * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponseTransfer
287
     *
288
     * @return \SprykerEco\Zed\Ratepay\Business\Order\SaverInterface
289
     */
290
    public function createOrderSaver(
291
        QuoteTransfer $quoteTransfer,
292
        CheckoutResponseTransfer $checkoutResponseTransfer
293
    ): SaverInterface {
294
        $paymentMapper = $this
295
            ->createMethodMapperFactory()
296
            ->createPaymentTransactionHandler()
297
            ->prepareMethodMapper($quoteTransfer);
298
299
        return new Saver(
300
            $quoteTransfer,
301
            $checkoutResponseTransfer,
302
            $paymentMapper
303
        );
304
    }
305
306
    /**
307
     * @return \SprykerEco\Zed\Ratepay\Business\Api\Converter\ConverterFactoryInterface
308
     */
309
    protected function createConverterFactory(): ConverterFactoryInterface
310
    {
311
        return new ConverterFactory(
312
            $this->getMoneyFacade()
313
        );
314
    }
315
316
    /**
317
     * @return \SprykerEco\Zed\Ratepay\Dependency\Facade\RatepayToMoneyInterface
318
     */
319
    protected function getMoneyFacade(): RatepayToMoneyInterface
320
    {
321
        return $this->getProvidedDependency(RatepayDependencyProvider::FACADE_MONEY);
322
    }
323
324
    /**
325
     * @param \Generated\Shared\Transfer\RatepayRequestTransfer $requestTransfer
326
     *
327
     * @return \SprykerEco\Zed\Ratepay\Business\Api\Mapper\MapperFactoryInterface
328
     */
329
    protected function createMapperFactory(RatepayRequestTransfer $requestTransfer): MapperFactoryInterface
330
    {
331
        return new MapperFactory(
332
            $requestTransfer
333
        );
334
    }
335
336
    /**
337
     * @param \Generated\Shared\Transfer\RatepayRequestTransfer $requestTransfer
338
     *
339
     * @return \SprykerEco\Zed\Ratepay\Business\Api\Builder\BuilderFactoryInterface
340
     */
341
    protected function createBuilderFactory(RatepayRequestTransfer $requestTransfer): BuilderFactoryInterface
342
    {
343
        return new BuilderFactory(
344
            $requestTransfer
345
        );
346
    }
347
348
    /**
349
     * @param \Generated\Shared\Transfer\RatepayRequestTransfer $requestTransfer
350
     *
351
     * @return \SprykerEco\Zed\Ratepay\Business\Request\RequestMethodInterface
352
     */
353
    public function createInvoice(RatepayRequestTransfer $requestTransfer): RequestMethodInterface
354
    {
355
        return new Invoice(
356
            $this->createApiRequestFactory($requestTransfer),
357
            $this->createMapperFactory($requestTransfer),
358
            $this->getQueryContainer()
359
        );
360
    }
361
362
    /**
363
     * @param \Generated\Shared\Transfer\RatepayRequestTransfer $requestTransfer
364
     *
365
     * @return \SprykerEco\Zed\Ratepay\Business\Request\RequestMethodInterface
366
     */
367
    public function createElv(RatepayRequestTransfer $requestTransfer): RequestMethodInterface
368
    {
369
        return new Elv(
370
            $this->createApiRequestFactory($requestTransfer),
371
            $this->createMapperFactory($requestTransfer),
372
            $this->getQueryContainer()
373
        );
374
    }
375
376
    /**
377
     * @param \Generated\Shared\Transfer\RatepayRequestTransfer $requestTransfer
378
     *
379
     * @return \SprykerEco\Zed\Ratepay\Business\Request\RequestMethodInterface
380
     */
381
    public function createPrepayment(RatepayRequestTransfer $requestTransfer): RequestMethodInterface
382
    {
383
        return new Prepayment(
384
            $this->createApiRequestFactory($requestTransfer),
385
            $this->createMapperFactory($requestTransfer),
386
            $this->getQueryContainer()
387
        );
388
    }
389
390
    /**
391
     * @param \Generated\Shared\Transfer\RatepayRequestTransfer $requestTransfer
392
     *
393
     * @return \SprykerEco\Zed\Ratepay\Business\Request\RequestMethodInterface
394
     */
395
    public function createInstallment(RatepayRequestTransfer $requestTransfer): RequestMethodInterface
396
    {
397
        return new Installment(
398
            $this->createApiRequestFactory($requestTransfer),
399
            $this->createMapperFactory($requestTransfer),
400
            $this->getQueryContainer()
401
        );
402
    }
403
404
    /**
405
     * @param \Generated\Shared\Transfer\RatepayRequestTransfer $requestTransfer
406
     *
407
     * @return \SprykerEco\Zed\Ratepay\Business\Request\RequestMethodInterface
408
     */
409
    public function createServiceMethod(RatepayRequestTransfer $requestTransfer): RequestMethodInterface
410
    {
411
        return new ServiceMethod(
412
            $this->createApiRequestFactory($requestTransfer),
413
            $this->createMapperFactory($requestTransfer),
414
            $this->getQueryContainer()
415
        );
416
    }
417
418
    /**
419
     * @return \SprykerEco\Zed\Ratepay\Business\Expander\ProductExpanderInterface
420
     */
421
    public function createProductExpander(): ProductExpanderInterface
422
    {
423
        return new ProductExpander(
424
            $this->getProductFacade()
425
        );
426
    }
427
428
    /**
429
     * @return \SprykerEco\Zed\Ratepay\Dependency\Facade\RatepayToProductInterface
430
     */
431
    protected function getProductFacade(): RatepayToProductInterface
432
    {
433
        return $this->getProvidedDependency(RatepayDependencyProvider::FACADE_PRODUCT);
434
    }
435
436
    /**
437
     * @return \SprykerEco\Zed\Ratepay\Business\Internal\InstallInterface
438
     */
439
    public function createInstaller(): InstallInterface
440
    {
441
        return new Install(
442
            $this->getGlossaryFacade(),
443
            $this->getConfig()
444
        );
445
    }
446
447
    /**
448
     * @return \SprykerEco\Zed\Ratepay\Business\Payment\PostSaveHookInterface
449
     */
450
    public function createPostSaveHook(): PostSaveHookInterface
451
    {
452
        return new PostSaveHook(
453
            $this->getQueryContainer()
454
        );
455
    }
456
457
    /**
458
     * @return \SprykerEco\Zed\Ratepay\Dependency\Facade\RatepayToCalculationInterface
459
     */
460
    public function getCalculation(): RatepayToCalculationInterface
461
    {
462
        return $this->getProvidedDependency(RatepayDependencyProvider::FACADE_CALCULATION);
463
    }
464
465
    /**
466
     * @return \SprykerEco\Zed\Ratepay\Dependency\Facade\RatepayToGlossaryInterface
467
     */
468
    protected function getGlossaryFacade(): RatepayToGlossaryInterface
469
    {
470
        return $this->getProvidedDependency(RatepayDependencyProvider::FACADE_GLOSSARY);
471
    }
472
473
    /**
474
     * @return \Generated\Shared\Transfer\RatepayRequestTransfer
475
     */
476
    protected function createRequestTransfer(): RatepayRequestTransfer
477
    {
478
        return new RatepayRequestTransfer();
479
    }
480
}
481