GetOrderReferenceDetailsConverter   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 77
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 25
dl 0
loc 77
rs 10
c 0
b 0
f 0
wmc 7

5 Methods

Rating   Name   Duplication   Size   Complexity  
A extractIsSandbox() 0 3 2
A getResponseType() 0 3 1
A extractOrderReferenceStatus() 0 3 1
A setBody() 0 12 1
A extractBillingAddress() 0 14 2
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;
9
10
use Generated\Shared\Transfer\AddressTransfer;
11
use Generated\Shared\Transfer\AmazonpayResponseTransfer;
12
13
class GetOrderReferenceDetailsConverter extends AbstractResponseParserConverter
14
{
15
    public const ORDER_REFERENCE_DETAILS = 'OrderReferenceDetails';
16
    public const ORDER_REFERENCE_STATUS = 'OrderReferenceStatus';
17
    public const FIELD_STATE = 'State';
18
    public const RELEASE_ENVIRONMENT = 'ReleaseEnvironment';
19
    public const SANDBOX = 'Sandbox';
20
    public const BILLING_ADDRESS = 'BillingAddress';
21
    public const PHYSICAL_ADDRESS = 'PhysicalAddress';
22
23
    /**
24
     * @return string
25
     */
26
    protected function getResponseType()
27
    {
28
        return 'GetOrderReferenceDetailsResult';
29
    }
30
31
    /**
32
     * @param array $response
33
     *
34
     * @return array
35
     */
36
    protected function extractOrderReferenceStatus(array $response)
37
    {
38
        return $this->extractResult($response)[static::ORDER_REFERENCE_DETAILS][static::ORDER_REFERENCE_STATUS][static::FIELD_STATE];
39
    }
40
41
    /**
42
     * @param array $response
43
     *
44
     * @return int
45
     */
46
    protected function extractIsSandbox(array $response)
47
    {
48
        return ($this->extractResult($response)[static::ORDER_REFERENCE_DETAILS][static::RELEASE_ENVIRONMENT] === static::SANDBOX) ? 1 : 0;
49
    }
50
51
    /**
52
     * @param array $response
53
     *
54
     * @return \Generated\Shared\Transfer\AddressTransfer
55
     */
56
    protected function extractBillingAddress(array $response)
57
    {
58
        $address = new AddressTransfer();
59
60
        if (!$this->isSuccess($response)) {
61
            return $address;
62
        }
63
64
        $result = $this->extractResult($response);
65
66
        $aResponseAddress =
67
            $result[static::ORDER_REFERENCE_DETAILS][static::BILLING_ADDRESS][static::PHYSICAL_ADDRESS];
68
69
        return $this->convertAddressToTransfer($aResponseAddress);
70
    }
71
72
    /**
73
     * @param \Generated\Shared\Transfer\AmazonpayResponseTransfer $responseTransfer
74
     * @param array $response
75
     *
76
     * @return \Generated\Shared\Transfer\AmazonpayResponseTransfer
77
     */
78
    protected function setBody(AmazonpayResponseTransfer $responseTransfer, array $response)
79
    {
80
        $responseTransfer->setOrderReferenceStatus(
81
            $this->convertStatusToTransfer(
82
                $this->extractResult($response)[static::ORDER_REFERENCE_DETAILS][static::ORDER_REFERENCE_STATUS]
83
            )
84
        );
85
        $responseTransfer->setIsSandbox($this->extractIsSandbox($response));
86
        $responseTransfer->setShippingAddress($this->extractShippingAddress($response));
87
        $responseTransfer->setBillingAddress($this->extractBillingAddress($response));
88
89
        return parent::setBody($responseTransfer, $response);
90
    }
91
}
92