Passed
Pull Request — master (#4)
by Andrey
06:53 queued 03:48
created

UpdateOrderCaptureStatusTransaction::execute()   B

Complexity

Conditions 5
Paths 4

Size

Total Lines 25
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
eloc 13
nc 4
nop 1
dl 0
loc 25
rs 8.439
c 0
b 0
f 0
1
<?php
2
3
4
/**
5
 * Apache OSL-2
6
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
7
 */
8
9
namespace SprykerEco\Zed\Amazonpay\Business\Payment\Handler\Transaction;
10
11
use Generated\Shared\Transfer\AmazonpayCallTransfer;
12
use Generated\Shared\Transfer\AmazonpayStatusTransfer;
13
use SprykerEco\Shared\Amazonpay\AmazonpayConstants;
14
15
class UpdateOrderCaptureStatusTransaction extends AbstractAmazonpayTransaction
16
{
17
18
    /**
19
     * @param \Generated\Shared\Transfer\AmazonpayCallTransfer $amazonpayCallTransfer
20
     *
21
     * @return \Generated\Shared\Transfer\AmazonpayCallTransfer
22
     */
23
    public function execute(AmazonpayCallTransfer $amazonpayCallTransfer)
24
    {
25
        if (!$amazonpayCallTransfer->getAmazonpayPayment()->getCaptureDetails()
26
            || !$amazonpayCallTransfer->getAmazonpayPayment()->getCaptureDetails()->getAmazonCaptureId()) {
27
            return $amazonpayCallTransfer;
28
        }
29
30
        $amazonpayCallTransfer = parent::execute($amazonpayCallTransfer);
31
32
        if (!$this->apiResponse->getHeader()->getIsSuccess()) {
33
            return $amazonpayCallTransfer;
34
        }
35
36
        if ($this->apiResponse->getCaptureDetails()->getAmazonCaptureId()) {
37
            $this->paymentEntity->setAmazonCaptureId(
38
                $this->apiResponse->getCaptureDetails()->getAmazonCaptureId()
39
            );
40
        }
41
42
        $newStatus = $this->getPaymentStatus($this->apiResponse->getCaptureDetails()->getCaptureStatus());
43
44
        $this->paymentEntity->setStatus($newStatus);
45
        $this->paymentEntity->save();
46
47
        return $amazonpayCallTransfer;
48
    }
49
50
    /**
51
     * @param \Generated\Shared\Transfer\AmazonpayStatusTransfer $status
52
     *
53
     * @return string
54
     */
55
    protected function getPaymentStatus(AmazonpayStatusTransfer $status)
56
    {
57
        if ($status->getIsDeclined()) {
58
            return AmazonpayConstants::OMS_STATUS_CAPTURE_DECLINED;
59
        }
60
61
        if ($status->getIsCompleted()) {
62
            return AmazonpayConstants::OMS_STATUS_CAPTURE_COMPLETED;
63
        }
64
65
        if ($status->getIsClosed()) {
66
            return AmazonpayConstants::OMS_STATUS_CAPTURE_CLOSED;
67
        }
68
69
        if ($status->getIsPending()) {
70
            return AmazonpayConstants::OMS_STATUS_CAPTURE_PENDING;
71
        }
72
73
        return AmazonpayConstants::OMS_STATUS_CANCELLED;
74
    }
75
76
}
77