Passed
Branch feature/ECO-965-refactoring (c9cdee)
by Andrey
06:34 queued 01:51
created

TransactionFactory   A

Complexity

Total Complexity 21

Size/Duplication

Total Lines 324
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 324
rs 10
c 0
b 0
f 0
wmc 21

21 Methods

Rating   Name   Duplication   Size   Complexity  
A createCloseOrderTransaction() 0 7 1
A createAuthorizeCaptureNowTransaction() 0 7 1
A createConfirmOrderReferenceTransaction() 0 7 1
A createGetOrderReferenceDetailsTransaction() 0 7 1
A createCancelOrderTransaction() 0 7 1
A createCaptureAuthorizedTransaction() 0 7 1
A createUpdateOrderAuthorizationStatusTransaction() 0 7 1
A createSetOrderReferenceTransaction() 0 7 1
A createUpdateOrderRefundStatusTransaction() 0 8 1
A createUpdateOrderCaptureStatusTransaction() 0 7 1
A createCaptureOrderTransaction() 0 7 1
A createHandleDeclinedOrderTransaction() 0 5 1
A createCancelOrderTransactionSequence() 0 6 1
A __construct() 0 16 1
A createCloseCapturedOrderTransaction() 0 6 1
A createAuthorizeTransaction() 0 7 1
A createReauthorizeOrderTransaction() 0 7 1
A createUpdateOrderCaptureStatusHandler() 0 6 1
A createConfirmPurchaseTransaction() 0 11 1
A createRefundOrderTransaction() 0 7 1
A createReauthorizeExpiredOrderTransaction() 0 6 1
1
<?php
2
3
/**
4
 * Apache OSL-2
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction;
9
10
use SprykerEco\Shared\AmazonPay\AmazonPayConfigInterface;
11
use SprykerEco\Zed\AmazonPay\Business\Api\Adapter\AdapterFactoryInterface;
12
use SprykerEco\Zed\AmazonPay\Business\Converter\AmazonPayConverterInterface;
13
use SprykerEco\Zed\AmazonPay\Business\Converter\AmazonPayTransferToEntityConverterInterface;
14
use SprykerEco\Zed\AmazonPay\Business\Order\PaymentProcessorInterface;
15
use SprykerEco\Zed\AmazonPay\Business\Order\RefundOrderInterface;
16
use SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\Logger\TransactionLoggerInterface;
17
18
class TransactionFactory implements TransactionFactoryInterface
19
{
20
    /**
21
     * @var \SprykerEco\Zed\AmazonPay\Business\Api\Adapter\AdapterFactoryInterface
22
     */
23
    protected $adapterFactory;
24
25
    /**
26
     * @var \SprykerEco\Shared\AmazonPay\AmazonPayConfigInterface
27
     */
28
    protected $config;
29
30
    /**
31
     * @var \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\Logger\TransactionLoggerInterface
32
     */
33
    protected $transactionLogger;
34
35
    /**
36
     * @var \SprykerEco\Zed\AmazonPay\Business\Converter\AmazonPayConverterInterface
37
     */
38
    protected $converter;
39
40
    /**
41
     * @var \SprykerEco\Zed\AmazonPay\Business\Converter\AmazonPayTransferToEntityConverterInterface
42
     */
43
    protected $toEntityConverter;
44
45
    /**
46
     * @var \SprykerEco\Zed\AmazonPay\Business\Order\RefundOrderInterface
47
     */
48
    protected $refundOrderModel;
49
50
    /**
51
     * @var \SprykerEco\Zed\AmazonPay\Business\Order\PaymentProcessorInterface
52
     */
53
    protected $paymentProcessor;
54
55
    /**
56
     * @param \SprykerEco\Zed\AmazonPay\Business\Api\Adapter\AdapterFactoryInterface $adapterFactory
57
     * @param \SprykerEco\Shared\AmazonPay\AmazonPayConfigInterface $config
58
     * @param \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\Logger\TransactionLoggerInterface $transactionLogger
59
     * @param \SprykerEco\Zed\AmazonPay\Business\Converter\AmazonPayConverterInterface $converter
60
     * @param \SprykerEco\Zed\AmazonPay\Business\Converter\AmazonPayTransferToEntityConverterInterface $toEntityConverter
61
     * @param \SprykerEco\Zed\AmazonPay\Business\Order\RefundOrderInterface $refundOrderModel
62
     */
63
    public function __construct(
64
        AdapterFactoryInterface $adapterFactory,
65
        AmazonPayConfigInterface $config,
66
        TransactionLoggerInterface $transactionLogger,
67
        AmazonPayConverterInterface $converter,
68
        AmazonPayTransferToEntityConverterInterface $toEntityConverter,
69
        RefundOrderInterface $refundOrderModel,
70
        PaymentProcessorInterface $paymentProcessor
71
    ) {
72
        $this->adapterFactory = $adapterFactory;
73
        $this->config = $config;
74
        $this->transactionLogger = $transactionLogger;
75
        $this->converter = $converter;
76
        $this->toEntityConverter = $toEntityConverter;
77
        $this->refundOrderModel = $refundOrderModel;
78
        $this->paymentProcessor = $paymentProcessor;
79
    }
80
81
    /**
82
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
83
     */
84
    public function createConfirmOrderReferenceTransaction()
85
    {
86
        return new ConfirmOrderReferenceTransaction(
87
            $this->adapterFactory->createConfirmOrderReferenceAmazonpayAdapter(),
88
            $this->config,
89
            $this->transactionLogger,
90
            $this->paymentProcessor
91
        );
92
    }
93
94
    /**
95
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
96
     */
97
    public function createSetOrderReferenceTransaction()
98
    {
99
        return new SetOrderReferenceDetailsTransaction(
100
            $this->adapterFactory->createSetOrderReferenceDetailsAmazonpayAdapter(),
101
            $this->config,
102
            $this->transactionLogger,
103
            $this->paymentProcessor
104
        );
105
    }
106
107
    /**
108
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
109
     */
110
    public function createGetOrderReferenceDetailsTransaction()
111
    {
112
        return new GetOrderReferenceDetailsTransaction(
113
            $this->adapterFactory->createGetOrderReferenceDetailsAmazonpayAdapter(),
114
            $this->config,
115
            $this->transactionLogger,
116
            $this->paymentProcessor
117
        );
118
    }
119
120
    /**
121
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
122
     */
123
    public function createCancelOrderTransactionSequence()
124
    {
125
        return new TransactionSequence(
126
            [
127
                $this->createRefundOrderTransaction(),
128
                $this->createCancelOrderTransaction(),
129
            ]
130
        );
131
    }
132
133
    /**
134
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
135
     */
136
    protected function createCancelOrderTransaction()
137
    {
138
        return new CancelOrderTransaction(
139
            $this->adapterFactory->createCancelOrderAdapter(),
140
            $this->config,
141
            $this->transactionLogger,
142
            $this->paymentProcessor
143
        );
144
    }
145
146
    /**
147
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
148
     */
149
    public function createAuthorizeTransaction()
150
    {
151
        return new AuthorizeTransaction(
152
            $this->adapterFactory->createAuthorizeAdapter(),
153
            $this->config,
154
            $this->transactionLogger,
155
            $this->paymentProcessor
156
        );
157
    }
158
159
    /**
160
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
161
     */
162
    public function createReauthorizeExpiredOrderTransaction()
163
    {
164
        return new TransactionSequence(
165
            [
166
                $this->createReauthorizeOrderTransaction(),
167
                $this->createUpdateOrderAuthorizationStatusTransaction(),
168
            ]
169
        );
170
    }
171
172
    /**
173
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
174
     */
175
    public function createReauthorizeOrderTransaction()
176
    {
177
        return new ReauthorizeOrderTransaction(
178
            $this->adapterFactory->createAuthorizeAdapter(),
179
            $this->config,
180
            $this->transactionLogger,
181
            $this->paymentProcessor
182
        );
183
    }
184
185
    /**
186
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
187
     */
188
    protected function createCaptureOrderTransaction()
189
    {
190
        return new CaptureOrderTransaction(
191
            $this->adapterFactory->createCaptureOrderAdapter(),
192
            $this->config,
193
            $this->transactionLogger,
194
            $this->paymentProcessor
195
        );
196
    }
197
198
    /**
199
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
200
     */
201
    protected function createAuthorizeCaptureNowTransaction()
202
    {
203
        return new AuthorizeOrderIfRequiredTransaction(
204
            $this->adapterFactory->createAuthorizeCaptureNowAdapter(),
205
            $this->config,
206
            $this->transactionLogger,
207
            $this->paymentProcessor
208
        );
209
    }
210
211
    /**
212
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
213
     */
214
    public function createCaptureAuthorizedTransaction()
215
    {
216
        return new TransactionSequence(
217
            [
218
                $this->createAuthorizeCaptureNowTransaction(),
219
                $this->createUpdateOrderCaptureStatusTransaction(),
220
                $this->createCaptureOrderTransaction(),
221
            ]
222
        );
223
    }
224
225
    /**
226
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
227
     */
228
    public function createCloseCapturedOrderTransaction()
229
    {
230
        return new TransactionSequence(
231
            [
232
                $this->createGetOrderReferenceDetailsTransaction(),
233
                $this->createCloseOrderTransaction(),
234
            ]
235
        );
236
    }
237
238
    /**
239
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
240
     */
241
    protected function createCloseOrderTransaction()
242
    {
243
        return new CloseOrderTransaction(
244
            $this->adapterFactory->createCloseOrderAdapter(),
245
            $this->config,
246
            $this->transactionLogger,
247
            $this->paymentProcessor
248
        );
249
    }
250
251
    /**
252
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
253
     */
254
    public function createRefundOrderTransaction()
255
    {
256
        return new RefundOrderTransaction(
257
            $this->adapterFactory->createRefundOrderAdapter(),
258
            $this->config,
259
            $this->transactionLogger,
260
            $this->paymentProcessor
261
        );
262
    }
263
264
    /**
265
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
266
     */
267
    public function createUpdateOrderRefundStatusTransaction()
268
    {
269
        return new UpdateOrderRefundStatusTransaction(
270
            $this->adapterFactory->createGetOrderRefundDetailsAdapter(),
271
            $this->config,
272
            $this->transactionLogger,
273
            $this->paymentProcessor,
274
            $this->refundOrderModel
275
        );
276
    }
277
278
    /**
279
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
280
     */
281
    public function createUpdateOrderAuthorizationStatusTransaction()
282
    {
283
        return new UpdateOrderAuthorizationStatusTransaction(
284
            $this->adapterFactory->createGetOrderAuthorizationDetailsAdapter(),
285
            $this->config,
286
            $this->transactionLogger,
287
            $this->paymentProcessor
288
        );
289
    }
290
291
    /**
292
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
293
     */
294
    public function createUpdateOrderCaptureStatusHandler()
295
    {
296
        return new TransactionSequence(
297
            [
298
                $this->createUpdateOrderAuthorizationStatusTransaction(),
299
                $this->createUpdateOrderCaptureStatusTransaction(),
300
            ]
301
        );
302
    }
303
304
    /**
305
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
306
     */
307
    public function createUpdateOrderCaptureStatusTransaction()
308
    {
309
        return new UpdateOrderCaptureStatusTransaction(
310
            $this->adapterFactory->createGetOrderCaptureDetailsAdapter(),
311
            $this->config,
312
            $this->transactionLogger,
313
            $this->paymentProcessor
314
        );
315
    }
316
317
    /**
318
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
319
     */
320
    public function createHandleDeclinedOrderTransaction()
321
    {
322
        return new HandleDeclinedOrderTransaction(
323
            $this->createGetOrderReferenceDetailsTransaction(),
324
            $this->createCancelOrderTransaction()
325
        );
326
    }
327
328
    /**
329
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\TransactionCollectionInterface
330
     */
331
    public function createConfirmPurchaseTransaction()
332
    {
333
        return new TransactionCollection(
334
            [
335
                $this->createSetOrderReferenceTransaction(),
336
                $this->createConfirmOrderReferenceTransaction(),
337
                $this->createGetOrderReferenceDetailsTransaction(),
338
                $this->createAuthorizeTransaction(),
339
                $this->createHandleDeclinedOrderTransaction(),
340
            ],
341
            $this->converter
342
        );
343
    }
344
}
345