AuthorizationDetailsConverter::hydrateIdList()   A
last analyzed

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