Passed
Pull Request — dev (#9)
by Andrey
08:10 queued 04:00
created

hydrateCapturedAmount()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 2
nc 2
nop 2
dl 0
loc 4
rs 10
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\Api\Converter\Details;
9
10
use Generated\Shared\Transfer\AmazonpayAuthorizationDetailsTransfer;
1 ignored issue
show
Bug introduced by
The type Generated\Shared\Transfe...rizationDetailsTransfer 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\Zed\AmazonPay\Business\Api\Converter\AbstractArrayConverter;
12
13
class AuthorizationDetailsConverter extends AbstractArrayConverter
14
{
15
    const CAPTURE_NOW = 'CaptureNow';
16
    const CAPTURED_AMOUNT = 'CapturedAmount';
17
    const SELLER_AUTHORIZATION_NOTE = 'SellerAuthorizationNote';
18
    const AUTHORIZATION_FEE = 'AuthorizationFee';
19
    const AUTHORIZATION_STATUS = 'AuthorizationStatus';
20
    const AUTHORIZATION_AMOUNT = 'AuthorizationAmount';
21
    const SOFT_DECLINE = 'SoftDecline';
22
    const CREATION_TIMESTAMP = 'CreationTimestamp';
23
    const ID_LIST = 'IdList';
24
    const EXPIRATION_TIMESTAMP = 'ExpirationTimestamp';
25
    const AMAZON_AUTHORIZATION_ID = 'AmazonAuthorizationId';
26
    const AUTHORIZATION_REFERENCE_ID = 'AuthorizationReferenceId';
27
    const AUTHORIZATION_BILLING_ADDRESS = 'AuthorizationBillingAddress';
28
    const SOFT_DESCRIPTOR = 'SoftDescriptor';
29
30
    /**
31
     * @var array
32
     */
33
    protected $detailsMapToTransferFields = [
34
        self::CAPTURE_NOW => AmazonpayAuthorizationDetailsTransfer::CAPTURE_NOW,
35
        self::CAPTURED_AMOUNT => AmazonpayAuthorizationDetailsTransfer::CAPTURED_AMOUNT,
36
        self::SELLER_AUTHORIZATION_NOTE => AmazonpayAuthorizationDetailsTransfer::SELLER_AUTHORIZATION_NOTE,
37
        self::AUTHORIZATION_FEE => AmazonpayAuthorizationDetailsTransfer::AUTHORIZATION_FEE,
38
        self::AUTHORIZATION_AMOUNT => AmazonpayAuthorizationDetailsTransfer::AUTHORIZATION_AMOUNT,
39
        self::SOFT_DECLINE => AmazonpayAuthorizationDetailsTransfer::SOFT_DECLINE,
40
        self::CREATION_TIMESTAMP => AmazonpayAuthorizationDetailsTransfer::CREATION_TIMESTAMP,
41
        self::EXPIRATION_TIMESTAMP => AmazonpayAuthorizationDetailsTransfer::EXPIRATION_TIMESTAMP,
42
        self::AMAZON_AUTHORIZATION_ID => AmazonpayAuthorizationDetailsTransfer::AMAZON_AUTHORIZATION_ID,
43
        self::AUTHORIZATION_REFERENCE_ID => AmazonpayAuthorizationDetailsTransfer::AUTHORIZATION_REFERENCE_ID,
44
        self::CAPTURE_NOW => AmazonpayAuthorizationDetailsTransfer::CAPTURE_NOW,
45
        self::AUTHORIZATION_STATUS => AmazonpayAuthorizationDetailsTransfer::AUTHORIZATION_STATUS,
46
        self::AUTHORIZATION_BILLING_ADDRESS => AmazonpayAuthorizationDetailsTransfer::AUTHORIZATION_BILLING_ADDRESS,
47
        self::SOFT_DESCRIPTOR => AmazonpayAuthorizationDetailsTransfer::SOFT_DESCRIPTOR,
48
    ];
49
50
    /**
51
     * @param array $authDetailsData
52
     *
53
     * @return \Generated\Shared\Transfer\AmazonpayAuthorizationDetailsTransfer
54
     */
55
    public function convert(array $authDetailsData)
56
    {
57
        $authorizationDetails = new AmazonpayAuthorizationDetailsTransfer();
58
59
        $mappedData = $this->mapDetailsToTransferFields($authDetailsData);
60
        $authorizationDetails->fromArray($mappedData, true);
61
62
        $this->hydrateIdList($authDetailsData, $authorizationDetails);
63
        $this->hydrateAuthorizationStatus($authDetailsData, $authorizationDetails);
64
        $this->hydrateCapturedAmount($authDetailsData, $authorizationDetails);
65
        $this->hydrateReasonCode($authorizationDetails);
66
67
        return $authorizationDetails;
68
    }
69
70
    /**
71
     * @param array $authDetailsData
72
     *
73
     * @return array
74
     */
75
    protected function mapDetailsToTransferFields(array $authDetailsData)
76
    {
77
        $result = [];
78
        foreach ($this->detailsMapToTransferFields as $detailField => $transferField) {
79
            $result[$transferField] = $authDetailsData[$detailField] ?? null;
80
        }
81
82
        return $result;
83
    }
84
85
    /**
86
     * @param array $authDetailsData
87
     * @param \Generated\Shared\Transfer\AmazonpayAuthorizationDetailsTransfer $authorizationDetails
88
     *
89
     * @return void
90
     */
91
    protected function hydrateIdList(array $authDetailsData, AmazonpayAuthorizationDetailsTransfer $authorizationDetails)
92
    {
93
        if (!empty($authDetailsData[static::ID_LIST])) {
94
            $authorizationDetails->setIdList($this->getIdList($authDetailsData));
95
        }
96
    }
97
98
    /**
99
     * @param array $authDetailsData
100
     *
101
     * @return string
102
     */
103
    protected function getIdList(array $authDetailsData)
104
    {
105
        return array_values($authDetailsData[static::ID_LIST])[0];
106
    }
107
108
    /**
109
     * @param array $authDetailsData
110
     * @param \Generated\Shared\Transfer\AmazonpayAuthorizationDetailsTransfer $authorizationDetails
111
     *
112
     * @return void
113
     */
114
    protected function hydrateAuthorizationStatus(array $authDetailsData, AmazonpayAuthorizationDetailsTransfer $authorizationDetails)
115
    {
116
        if (!empty($authDetailsData[static::AUTHORIZATION_STATUS])) {
117
            $statusTransfer = $this->convertStatusToTransfer($authDetailsData[static::AUTHORIZATION_STATUS]);
118
            $authorizationDetails->setAuthorizationStatus($statusTransfer);
119
        }
120
    }
121
122
    /**
123
     * @param array $authDetailsData
124
     * @param \Generated\Shared\Transfer\AmazonpayAuthorizationDetailsTransfer $authorizationDetails
125
     *
126
     * @return void
127
     */
128
    protected function hydrateCapturedAmount(array $authDetailsData, AmazonpayAuthorizationDetailsTransfer $authorizationDetails)
129
    {
130
        if (!empty($authDetailsData[static::CAPTURED_AMOUNT])) {
131
            $authorizationDetails->setAuthorizationAmount($this->convertPriceToTransfer($authDetailsData[static::CAPTURED_AMOUNT]));
132
        }
133
    }
134
135
    /**
136
     * @param \Generated\Shared\Transfer\AmazonpayAuthorizationDetailsTransfer $authorizationDetails
137
     *
138
     * @return void
139
     */
140
    protected function hydrateReasonCode(AmazonpayAuthorizationDetailsTransfer $authorizationDetails)
141
    {
142
        if (empty($authorizationDetails->getAuthorizationStatus()->getReasonCode())) {
143
            $authorizationDetails->getAuthorizationStatus()->setReasonCode('');
144
        }
145
    }
146
}
147