Passed
Pull Request — master (#18)
by Volodymyr
05:50 queued 03:07
created

setInfoscoreCustomerNumber()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 2
dl 0
loc 7
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\Payment\Transaction\Handler;
9
10
use Generated\Shared\Transfer\AfterPayApiResponseTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...rPayApiResponseTransfer 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\AfterPayAuthorizeRequestTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...uthorizeRequestTransfer 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\AfterPayCallTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\AfterPayCallTransfer 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 SprykerEco\Zed\AfterPay\Business\Payment\PaymentWriterInterface;
14
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface;
15
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\AuthorizeTransactionInterface;
16
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\PriceToPayProviderInterface;
17
18
class AuthorizeTransactionHandler implements AuthorizeTransactionHandlerInterface
19
{
20
    /**
21
     * @var \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\AuthorizeTransactionInterface
22
     */
23
    protected $transaction;
24
25
    /**
26
     * @var \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface
27
     */
28
    protected $requestBuilder;
29
30
    /**
31
     * @var \SprykerEco\Zed\AfterPay\Business\Payment\PaymentWriterInterface
32
     */
33
    protected $paymentWriter;
34
35
    /**
36
     * @var \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\PriceToPayProviderInterface
37
     */
38
    protected $priceToPayProvider;
39
40
    /**
41
     * @param \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\AuthorizeTransactionInterface $transaction
42
     * @param \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface $requestBuilder
43
     * @param \SprykerEco\Zed\AfterPay\Business\Payment\PaymentWriterInterface $paymentWriter
44
     * @param \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\PriceToPayProviderInterface $priceToPayProvider
45
     */
46
    public function __construct(
47
        AuthorizeTransactionInterface $transaction,
48
        AuthorizeRequestBuilderInterface $requestBuilder,
49
        PaymentWriterInterface $paymentWriter,
50
        PriceToPayProviderInterface $priceToPayProvider
51
    ) {
52
        $this->transaction = $transaction;
53
        $this->requestBuilder = $requestBuilder;
54
        $this->paymentWriter = $paymentWriter;
55
        $this->priceToPayProvider = $priceToPayProvider;
56
    }
57
58
    /**
59
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
60
     *
61
     * @return \Generated\Shared\Transfer\AfterPayApiResponseTransfer
62
     */
63
    public function authorize(AfterPayCallTransfer $afterPayCallTransfer): AfterPayApiResponseTransfer
64
    {
65
        $authorizeRequestTransfer = $this->buildAuthorizeRequest($afterPayCallTransfer);
66
        $authorizeResponseTransfer = $this->transaction->executeTransaction($authorizeRequestTransfer);
67
68
        $this->setPaymentReservationId($afterPayCallTransfer, $authorizeResponseTransfer);
69
        $this->setPaymentTotalAuthorizedAmount($afterPayCallTransfer);
70
71
        if ($authorizeResponseTransfer->getCustomerNumber()) {
72
            $this->setInfoscoreCustomerNumber($afterPayCallTransfer, $authorizeResponseTransfer);
73
        }
74
75
        return $authorizeResponseTransfer;
76
    }
77
78
    /**
79
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
80
     *
81
     * @return \Generated\Shared\Transfer\AfterPayAuthorizeRequestTransfer
82
     */
83
    protected function buildAuthorizeRequest(AfterPayCallTransfer $afterPayCallTransfer): AfterPayAuthorizeRequestTransfer
84
    {
85
        $authorizeRequestTransfer = $this->requestBuilder->buildAuthorizeRequest($afterPayCallTransfer);
86
87
        return $authorizeRequestTransfer;
88
    }
89
90
    /**
91
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
92
     * @param \Generated\Shared\Transfer\AfterPayApiResponseTransfer $authorizeResponseTransfer
93
     *
94
     * @return void
95
     */
96
    protected function setPaymentReservationId(
97
        AfterPayCallTransfer $afterPayCallTransfer,
98
        AfterPayApiResponseTransfer $authorizeResponseTransfer
99
    ): void {
100
        $this->paymentWriter->setIdReservationByIdSalesOrder(
101
            $authorizeResponseTransfer->getReservationId(),
102
            $afterPayCallTransfer->getIdSalesOrder()
103
        );
104
    }
105
106
    /**
107
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
108
     * @param \Generated\Shared\Transfer\AfterPayApiResponseTransfer $authorizeResponseTransfer
109
     *
110
     * @return void
111
     */
112
    protected function setInfoscoreCustomerNumber(
113
        AfterPayCallTransfer $afterPayCallTransfer,
114
        AfterPayApiResponseTransfer $authorizeResponseTransfer
115
    ): void {
116
        $this->paymentWriter->setCustomerNumberByIdSalesOrder(
117
            $authorizeResponseTransfer->getCustomerNumber(),
118
            $afterPayCallTransfer->getIdSalesOrder()
119
        );
120
    }
121
122
    /**
123
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
124
     *
125
     * @return void
126
     */
127
    protected function setPaymentTotalAuthorizedAmount(AfterPayCallTransfer $afterPayCallTransfer): void
128
    {
129
        $this->paymentWriter->setAuthorizedTotalByIdSalesOrder(
130
            $this->priceToPayProvider->getPriceToPayForOrder($afterPayCallTransfer),
131
            $afterPayCallTransfer->getIdSalesOrder()
132
        );
133
    }
134
}
135