Passed
Pull Request — feature/ECO-948-renaming-and-r... (#7)
by Andrey
04:36 queued 01:50
created

HandleDeclinedOrderTransaction::execute()   B

Complexity

Conditions 4
Paths 4

Size

Total Lines 29
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 17
nc 4
nop 1
dl 0
loc 29
rs 8.5806
c 0
b 0
f 0
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 Generated\Shared\Transfer\AmazonpayCallTransfer;
11
use SprykerEco\Shared\AmazonPay\AmazonPayConfig;
12
13
class HandleDeclinedOrderTransaction implements AmazonpayTransactionInterface
14
{
15
    /**
16
     * @var \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
17
     */
18
    protected $getOrderReferenceDetailsTransaction;
19
20
    /**
21
     * @var \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface
22
     */
23
    protected $cancelOrderTransaction;
24
25
    /**
26
     * @param \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface $getOrderReferenceDetailsTransaction
27
     * @param \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\AmazonpayTransactionInterface $cancelOrderTransaction
28
     */
29
    public function __construct(
30
        AmazonpayTransactionInterface $getOrderReferenceDetailsTransaction,
31
        AmazonpayTransactionInterface $cancelOrderTransaction
32
    ) {
33
        $this->getOrderReferenceDetailsTransaction = $getOrderReferenceDetailsTransaction;
34
        $this->cancelOrderTransaction = $cancelOrderTransaction;
35
    }
36
37
    /**
38
     * @param \Generated\Shared\Transfer\AmazonpayCallTransfer $amazonPayCallTransfer
39
     *
40
     * @return \Generated\Shared\Transfer\AmazonpayCallTransfer
41
     */
42
    public function execute(AmazonpayCallTransfer $amazonPayCallTransfer)
43
    {
44
        if ($amazonPayCallTransfer
45
                ->getAmazonpayPayment()
46
                ->getAuthorizationDetails()
47
                ->getAuthorizationStatus()
48
                ->getState() !== AmazonPayConfig::STATUS_DECLINED
49
        ) {
50
            return $amazonPayCallTransfer;
51
        }
52
53
        if ($amazonPayCallTransfer->getAmazonpayPayment()
54
                ->getAuthorizationDetails()
55
                ->getAuthorizationStatus()
56
                ->getState() === AmazonPayConfig::STATUS_PAYMENT_METHOD_INVALID
57
        ) {
58
            return $amazonPayCallTransfer;
59
        }
60
61
        $checkOrderStatus = $this->getOrderReferenceDetailsTransaction->execute($amazonPayCallTransfer);
62
63
        if ($checkOrderStatus->getAmazonpayPayment()
64
                ->getOrderReferenceStatus()
65
                ->getState() === AmazonPayConfig::STATUS_OPEN
66
        ) {
67
            $this->cancelOrderTransaction->execute($amazonPayCallTransfer);
68
        }
69
70
        return $amazonPayCallTransfer;
71
    }
72
}
73