RequestSender::sendOrderConfirmationRequest()   A
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 26
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 14
c 1
b 0
f 0
dl 0
loc 26
rs 9.7998
cc 4
nc 4
nop 1
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\Easycredit\Business\Api\RequestSender;
9
10
use Generated\Shared\Transfer\EasycreditApprovalTextResponseTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...valTextResponseTransfer 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\EasycreditInitializePaymentResponseTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...PaymentResponseTransfer 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\EasycreditInterestAndAdjustTotalSumResponseTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...otalSumResponseTransfer 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 Generated\Shared\Transfer\EasycreditOrderConfirmationResponseTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...rmationResponseTransfer 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...
14
use Generated\Shared\Transfer\EasycreditPreContractualInformationAndRedemptionPlanResponseTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...ionPlanResponseTransfer 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...
15
use Generated\Shared\Transfer\EasycreditQueryCreditAssessmentResponseTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...essmentResponseTransfer 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...
16
use Generated\Shared\Transfer\PaymentEasycreditOrderIdentifierTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...OrderIdentifierTransfer 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...
17
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...
18
use SprykerEco\Zed\Easycredit\Business\Api\Adapter\Http\Factory\AdapterFactoryInterface;
19
use SprykerEco\Zed\Easycredit\Business\Logger\EasycreditLoggerInterface;
20
use SprykerEco\Zed\Easycredit\Business\Mapper\MapperInterface;
21
use SprykerEco\Zed\Easycredit\Business\Parser\ResponseParserInterface;
22
use SprykerEco\Zed\Easycredit\Persistence\EasycreditEntityManagerInterface;
23
use SprykerEco\Zed\Easycredit\Persistence\EasycreditRepositoryInterface;
24
25
class RequestSender implements RequestSenderInterface
26
{
27
    /**
28
     * @var \SprykerEco\Zed\Easycredit\Business\Mapper\MapperInterface
29
     */
30
    protected $mapper;
31
32
    /**
33
     * @var \SprykerEco\Zed\Easycredit\Business\Api\Adapter\Http\Factory\AdapterFactoryInterface
34
     */
35
    protected $adapterFactory;
36
37
    /**
38
     * @var \SprykerEco\Zed\Easycredit\Business\Parser\ResponseParserInterface
39
     */
40
    protected $responseParser;
41
42
    /**
43
     * @var \SprykerEco\Zed\Easycredit\Business\Logger\EasycreditLoggerInterface
44
     */
45
    protected $logger;
46
47
    /**
48
     * @var \SprykerEco\Zed\Easycredit\Persistence\EasycreditRepositoryInterface
49
     */
50
    protected $easycreditRepository;
51
52
    /**
53
     * @var \SprykerEco\Zed\Easycredit\Persistence\EasycreditEntityManagerInterface
54
     */
55
    protected $easycreditEntityManager;
56
57
    /**
58
     * @param \SprykerEco\Zed\Easycredit\Business\Mapper\MapperInterface $mapper
59
     * @param \SprykerEco\Zed\Easycredit\Business\Api\Adapter\Http\Factory\AdapterFactoryInterface $adapterFactory
60
     * @param \SprykerEco\Zed\Easycredit\Business\Parser\ResponseParserInterface $responseParser
61
     * @param \SprykerEco\Zed\Easycredit\Business\Logger\EasycreditLoggerInterface $logger
62
     * @param \SprykerEco\Zed\Easycredit\Persistence\EasycreditRepositoryInterface $easycreditRepository
63
     * @param \SprykerEco\Zed\Easycredit\Persistence\EasycreditEntityManagerInterface $easycreditEntityManager
64
     */
65
    public function __construct(
66
        MapperInterface $mapper,
67
        AdapterFactoryInterface $adapterFactory,
68
        ResponseParserInterface $responseParser,
69
        EasycreditLoggerInterface $logger,
70
        EasycreditRepositoryInterface $easycreditRepository,
71
        EasycreditEntityManagerInterface $easycreditEntityManager
72
    ) {
73
        $this->mapper = $mapper;
74
        $this->adapterFactory = $adapterFactory;
75
        $this->responseParser = $responseParser;
76
        $this->logger = $logger;
77
        $this->easycreditRepository = $easycreditRepository;
78
        $this->easycreditEntityManager = $easycreditEntityManager;
79
    }
80
81
    /**
82
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
83
     *
84
     * @return \Generated\Shared\Transfer\EasycreditInitializePaymentResponseTransfer
85
     */
86
    public function sendInitializePaymentRequest(QuoteTransfer $quoteTransfer): EasycreditInitializePaymentResponseTransfer
87
    {
88
        $requestTransfer = $this->mapper->mapInitializePaymentRequest($quoteTransfer);
89
        $responseTransfer = $this->adapterFactory
90
            ->createInitializePaymentAdapter()
91
            ->sendRequest($requestTransfer);
92
93
        $this->logger->saveApiLog(EasycreditLoggerInterface::LOG_TYPE_PAYMENT_INITIALIZE, $requestTransfer, $responseTransfer);
94
95
        return $this->responseParser->parseInitializePaymentResponse($responseTransfer);
96
    }
97
98
    /**
99
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
100
     *
101
     * @return \Generated\Shared\Transfer\EasycreditPreContractualInformationAndRedemptionPlanResponseTransfer
102
     */
103
    public function sendPreContractualInformationAndRedemptionPlanRequest(QuoteTransfer $quoteTransfer): EasycreditPreContractualInformationAndRedemptionPlanResponseTransfer
104
    {
105
        $requestTransfer = $this->mapper->mapPreContractualInformationAndRedemptionPlanRequest($quoteTransfer);
106
        $responseTransfer = $this->adapterFactory
107
            ->createPreContractualInformationAndRedemptionPlanAdapter()
108
            ->sendRequest($requestTransfer);
109
110
        $this->logger->saveApiLog(EasycreditLoggerInterface::LOG_TYPE_PRE_CONTRACTUAL_INFORMATION_AMD_REDEMPTION_PLAN, $requestTransfer, $responseTransfer);
111
112
        return $this->responseParser->parsePreContractualInformationAndRedemptionPlanResponse($responseTransfer);
113
    }
114
115
    /**
116
     * @param int $idSalesOrder
117
     *
118
     * @return \Generated\Shared\Transfer\EasycreditOrderConfirmationResponseTransfer
119
     */
120
    public function sendOrderConfirmationRequest(int $idSalesOrder): EasycreditOrderConfirmationResponseTransfer
121
    {
122
        $paymentEasycreditOrderIdentifierTransfer = $this->easycreditRepository->findPaymentEasycreditOrderIdentifierByFkSalesOrderItem($idSalesOrder);
123
124
        if ($paymentEasycreditOrderIdentifierTransfer == null) {
125
            return $this->createNotConfirmedEasycreditOrderConfirmationResponseTransfer();
126
        }
127
128
        if ($paymentEasycreditOrderIdentifierTransfer->getConfirmed()) {
129
            return $this->createConfirmedEasycreditOrderConfirmationResponseTransfer();
130
        }
131
132
        $requestTransfer = $this->mapper->mapOrderConfirmationRequest($idSalesOrder, $paymentEasycreditOrderIdentifierTransfer);
133
        $responseTransfer = $this->adapterFactory
134
            ->createOrderConfirmationAdapter()
135
            ->sendRequest($requestTransfer);
136
137
        $easycreditOrderConfirmationResponseTransfer = $this->responseParser->parseOrderConfirmationResponse($responseTransfer);
138
139
        if ($easycreditOrderConfirmationResponseTransfer->getConfirmed()) {
140
            $this->confirmEasycreditOrderIdentifier($paymentEasycreditOrderIdentifierTransfer);
141
        }
142
143
        $this->logger->saveApiLog(EasycreditLoggerInterface::LOG_TYPE_ORDER_CONFIRMATION, $requestTransfer, $responseTransfer);
144
145
        return $easycreditOrderConfirmationResponseTransfer;
146
    }
147
148
    /**
149
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
150
     *
151
     * @return \Generated\Shared\Transfer\EasycreditInterestAndAdjustTotalSumResponseTransfer
152
     */
153
    public function sendInterestAndTotalSumRequest(QuoteTransfer $quoteTransfer): EasycreditInterestAndAdjustTotalSumResponseTransfer
154
    {
155
        $requestTransfer = $this->mapper->mapInterestAndTotalSumRequest($quoteTransfer);
156
        $responseTransfer = $this->adapterFactory
157
            ->createInterestAndTotalSumAdapter()
158
            ->sendRequest($requestTransfer);
159
160
        $this->logger->saveApiLog(EasycreditLoggerInterface::LOG_TYPE_INTEREST_AND_ADJUST_TOTAL_SUM, $requestTransfer, $responseTransfer);
161
162
        return $this->responseParser->parseInterestAndTotalSumResponse($responseTransfer);
163
    }
164
165
    /**
166
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
167
     *
168
     * @return \Generated\Shared\Transfer\EasycreditQueryCreditAssessmentResponseTransfer
169
     */
170
    public function sendQueryCreditAssessmentRequest(QuoteTransfer $quoteTransfer): EasycreditQueryCreditAssessmentResponseTransfer
171
    {
172
        $requestTransfer = $this->mapper->mapQueryCreditAssessmentRequest($quoteTransfer);
173
        $responseTransfer = $this->adapterFactory
174
            ->createQueryCreditAssessmentAdapter()
175
            ->sendRequest($requestTransfer);
176
177
        $this->logger->saveApiLog(EasycreditLoggerInterface::LOG_TYPE_CREDIT_ASSESSMENT, $requestTransfer, $responseTransfer);
178
179
        return $this->responseParser->parseQueryCreditAssessmentResponse($responseTransfer);
180
    }
181
182
    /**
183
     * @return \Generated\Shared\Transfer\EasycreditApprovalTextResponseTransfer
184
     */
185
    public function sendApprovalTextRequest(): EasycreditApprovalTextResponseTransfer
186
    {
187
        $requestTransfer = $this->mapper->mapApprovalTextRequest();
188
        $responseTransfer = $this->adapterFactory
189
            ->createApprovalTextAdapter()
190
            ->sendRequest($requestTransfer);
191
192
        $this->logger->saveApiLog(EasycreditLoggerInterface::LOG_TYPE_APPROVAL_TEXT, $requestTransfer, $responseTransfer);
193
194
        return $this->responseParser->parseApprovalTextResponse($responseTransfer);
195
    }
196
197
    /**
198
     * @param \Generated\Shared\Transfer\PaymentEasycreditOrderIdentifierTransfer $paymentEasycreditOrderIdentifierTransfer
199
     *
200
     * @return void
201
     */
202
    protected function confirmEasycreditOrderIdentifier(PaymentEasycreditOrderIdentifierTransfer $paymentEasycreditOrderIdentifierTransfer): void
203
    {
204
        $paymentEasycreditOrderIdentifierTransfer->setConfirmed(true);
205
        $this->easycreditEntityManager->saveEasycreditOrderIdentifier($paymentEasycreditOrderIdentifierTransfer);
206
    }
207
208
    /**
209
     * @return \Generated\Shared\Transfer\EasycreditOrderConfirmationResponseTransfer
210
     */
211
    protected function createConfirmedEasycreditOrderConfirmationResponseTransfer(): EasycreditOrderConfirmationResponseTransfer
212
    {
213
        $responseTransfer = new EasycreditOrderConfirmationResponseTransfer();
214
        $responseTransfer->setConfirmed(true);
215
216
        return $responseTransfer;
217
    }
218
219
    /**
220
     * @return \Generated\Shared\Transfer\EasycreditOrderConfirmationResponseTransfer
221
     */
222
    protected function createNotConfirmedEasycreditOrderConfirmationResponseTransfer(): EasycreditOrderConfirmationResponseTransfer
223
    {
224
        $responseTransfer = new EasycreditOrderConfirmationResponseTransfer();
225
        $responseTransfer->setConfirmed(false);
226
227
        return $responseTransfer;
228
    }
229
}
230