Passed
Push — master ( a2100c...af4f13 )
by Andrey
06:37
created

execute()   C

Complexity

Conditions 9
Paths 21

Size

Total Lines 53
Code Lines 28

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 9
eloc 28
nc 21
nop 1
dl 0
loc 53
rs 6.8963
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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\OrderTransfer;
1 ignored issue
show
Bug introduced by
The type Generated\Shared\Transfer\OrderTransfer 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 SprykerEco\Shared\Amazonpay\AmazonpayConstants;
12
13
class UpdateOrderAuthorizationStatusTransaction extends AbstractOrderTransaction
14
{
15
16
    /**
17
     * @var \Generated\Shared\Transfer\AmazonpayAuthorizeOrderResponseTransfer
1 ignored issue
show
Bug introduced by
The type Generated\Shared\Transfe...zeOrderResponseTransfer 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
     */
19
    protected $apiResponse;
20
21
    /**
22
     * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer
23
     *
24
     * @return \Generated\Shared\Transfer\OrderTransfer
25
     */
26
    public function execute(OrderTransfer $orderTransfer)
27
    {
28
        $orderTransfer = parent::execute($orderTransfer);
29
30
        $orderTransfer->getAmazonpayPayment()->setAuthorizationDetails(
31
            $this->apiResponse->getAuthorizationDetails()
32
        );
33
34
        if ($this->apiResponse->getHeader()->getIsSuccess()) {
35
            if ($this->apiResponse->getAuthorizationDetails()->getIdList()) {
36
                $this->paymentEntity->setAmazonCaptureId(
37
                    $this->apiResponse->getAuthorizationDetails()->getIdList()
38
                );
39
40
                $this->paymentEntity->setStatus(
41
                    AmazonpayConstants::OMS_STATUS_CAPTURE_COMPLETED
42
                );
43
44
                $this->paymentEntity->save();
45
46
                return $orderTransfer;
47
            }
48
49
            $status = $this->apiResponse->getAuthorizationDetails()->getAuthorizationStatus();
50
51
            if ($status->getIsPending()) {
52
                return $orderTransfer;
53
            }
54
55
            if ($status->getIsDeclined()) {
56
                if ($status->getIsSuspended()) {
57
                    $this->paymentEntity->setStatus(AmazonpayConstants::OMS_STATUS_AUTH_SUSPENDED);
58
                } else {
59
                    $this->paymentEntity->setStatus(AmazonpayConstants::OMS_STATUS_AUTH_DECLINED);
60
                }
61
            }
62
63
            if ($status->getIsOpen()) {
64
                $this->paymentEntity->setStatus(AmazonpayConstants::OMS_STATUS_AUTH_OPEN);
65
            }
66
67
            if ($status->getIsClosed()) {
68
                if ($status->getIsReauthorizable()) {
69
                    $this->paymentEntity->setStatus(AmazonpayConstants::OMS_STATUS_AUTH_EXPIRED);
70
                } else {
71
                    $this->paymentEntity->setStatus(AmazonpayConstants::OMS_STATUS_AUTH_CLOSED);
72
                }
73
            }
74
75
            $this->paymentEntity->save();
76
        }
77
78
        return $orderTransfer;
79
    }
80
81
}
82