Completed
Push — master ( 251d07...973a55 )
by Oleksandr
10s
created

processDeliveryAddressResponse()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 12
rs 9.4285
cc 2
eloc 7
nc 2
nop 2
1
<?php
2
3
/**
4
 * MIT License
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerEco\Zed\ArvatoRss\Business\Api\Converter;
9
10
use Generated\Shared\Transfer\ArvatoRssAddressValidationResponseTransfer;
11
use Generated\Shared\Transfer\ArvatoRssRiskCheckResponseTransfer;
12
use stdClass;
13
14
class RiskCheckResponseConverter implements RiskCheckResponseConverterInterface
15
{
16
    /**
17
     * @param \stdClass $response
18
     *
19
     * @return \Generated\Shared\Transfer\ArvatoRssRiskCheckResponseTransfer
20
     */
21
    public function convert(stdClass $response)
22
    {
23
        $responseTransfer = new ArvatoRssRiskCheckResponseTransfer();
24
25
        $responseTransfer->setResult($response->Decision->Result);
26
        $responseTransfer->setResultCode($response->Decision->ResultCode);
27
        $responseTransfer->setActionCode($response->Decision->ActionCode);
28
        $responseTransfer->setResultText($response->Decision->ResultText);
29
        $responseTransfer->setCommunicationToken($response->Decision->CommunicationToken);
30
31
        if (isset($response->Details)) {
32
            $this->processBillingAddressResponse($responseTransfer, $response->Details->BillingCustomerResult);
33
            if (isset($response->Details->DeliveryCustomerResult)) {
34
                $this->processDeliveryAddressResponse($responseTransfer, $response->Details->DeliveryCustomerResult);
35
            }
36
        }
37
38
        return $responseTransfer;
39
    }
40
41
    /**
42
     * @param \Generated\Shared\Transfer\ArvatoRssRiskCheckResponseTransfer $responseTransfer
43
     * @param \stdClass $response
44
     *
45
     * @return void
46
     */
47
    protected function processBillingAddressResponse(
48
        ArvatoRssRiskCheckResponseTransfer $responseTransfer,
49
        stdClass $response
50
    ) {
51
        if (isset($response->ServiceResults->AddressValidationResponse)) {
52
            $responseTransfer->setBillingAddressValidation(
53
                $this->convertAddressValidationResponse(
54
                    $response->ServiceResults->AddressValidationResponse
55
                )
56
            );
57
        }
58
    }
59
60
    /**
61
     * @param \Generated\Shared\Transfer\ArvatoRssRiskCheckResponseTransfer $responseTransfer
62
     * @param \stdClass $response
63
     *
64
     * @return void
65
     */
66
    protected function processDeliveryAddressResponse(
67
        ArvatoRssRiskCheckResponseTransfer $responseTransfer,
68
        stdClass $response
69
    ) {
70
        if (isset($response->ServiceResults->AddressValidationResponse)) {
71
            $responseTransfer->setDeliveryAddressValidation(
72
                $this->convertAddressValidationResponse(
73
                    $response->ServiceResults->AddressValidationResponse
74
                )
75
            );
76
        }
77
    }
78
79
    /**
80
     * @param \stdClass $response
81
     *
82
     * @return \Generated\Shared\Transfer\ArvatoRssAddressValidationResponseTransfer
83
     */
84
    protected function convertAddressValidationResponse(stdClass $response)
85
    {
86
        $addressValidationResponse = new ArvatoRssAddressValidationResponseTransfer();
87
88
        $addressValidationResponse->setReturnCode($response->ReturnCode);
89
        $addressValidationResponse->setStreet($response->Street);
90
        $addressValidationResponse->setStreetNumber($response->StreetNumber);
91
        $addressValidationResponse->setZipCode($response->ZipCode);
92
        $addressValidationResponse->setCity($response->City);
93
        $addressValidationResponse->setCountry($response->Country);
94
95
        if (isset($response->StreetNumberAdditional)) {
96
            $addressValidationResponse->setStreetNumberAdditional($response->StreetNumberAdditional);
97
        }
98
99
        return $addressValidationResponse;
100
    }
101
}
102