Passed
Push — feature/eco-574/eco-2266-check... ( efd21d )
by Aleksey
08:13
created

ValidateCustomerHandler::loadCustomerAddressById()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 21
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 15
nc 1
nop 1
dl 0
loc 21
rs 9.7666
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * MIT License
5
 * For full license information, please view the LICENSE file that was distributed with this source code.
6
 */
7
8
namespace SprykerEco\Zed\Afterpay\Business\AdditionalServices\Handler;
9
10
use Generated\Shared\Transfer\AddressTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\AddressTransfer 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 Generated\Shared\Transfer\AfterpayValidateCustomerRequestTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...CustomerRequestTransfer 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...
12
use Generated\Shared\Transfer\AfterpayValidateCustomerResponseTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...ustomerResponseTransfer 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...
13
use SprykerEco\Zed\Afterpay\Business\Api\Adapter\AdapterInterface;
14
use SprykerEco\Zed\Afterpay\Dependency\Facade\AfterpayToCustomerInterface;
15
16
class ValidateCustomerHandler implements ValidateCustomerHandlerInterface
17
{
18
    /**
19
     * @var \SprykerEco\Zed\Afterpay\Business\Api\Adapter\AdapterInterface
20
     */
21
    protected $apiAdapter;
22
23
    /**
24
     * @var \SprykerEco\Zed\Afterpay\Dependency\Facade\AfterpayToCustomerInterface
25
     */
26
    protected $customerFacade;
27
28
    /**
29
     * @param \SprykerEco\Zed\Afterpay\Business\Api\Adapter\AdapterInterface $apiAdapter
30
     * @param \SprykerEco\Zed\Afterpay\Dependency\Facade\AfterpayToCustomerInterface $customerFacade
31
     */
32
    public function __construct(
33
        AdapterInterface $apiAdapter,
34
        AfterpayToCustomerInterface $customerFacade
35
    ) {
36
        $this->apiAdapter = $apiAdapter;
37
        $this->customerFacade = $customerFacade;
38
    }
39
40
    /**
41
     * @param \Generated\Shared\Transfer\AfterpayValidateCustomerRequestTransfer $validateCustomerRequestTransfer
42
     *
43
     * @return \Generated\Shared\Transfer\AfterpayValidateCustomerResponseTransfer
44
     */
45
    public function validateCustomer(AfterpayValidateCustomerRequestTransfer $validateCustomerRequestTransfer): AfterpayValidateCustomerResponseTransfer
46
    {
47
        if ($this->needToLoadAddressById($validateCustomerRequestTransfer)) {
48
            $this->loadCustomerAddressById($validateCustomerRequestTransfer);
49
        }
50
51
        return $this->apiAdapter->sendValidateCustomerRequest($validateCustomerRequestTransfer);
52
    }
53
54
    /**
55
     * @param \Generated\Shared\Transfer\AfterpayValidateCustomerRequestTransfer $validateCustomerRequestTransfer
56
     *
57
     * @return bool
58
     */
59
    protected function needToLoadAddressById(AfterpayValidateCustomerRequestTransfer $validateCustomerRequestTransfer): bool
60
    {
61
        $idCustomerAddress =
62
            $validateCustomerRequestTransfer
63
            ->getCustomer()
64
            ->getAddress()
65
            ->getIdCustomerAddress();
66
67
        return $idCustomerAddress !== null;
68
    }
69
70
    /**
71
     * @param \Generated\Shared\Transfer\AfterpayValidateCustomerRequestTransfer $validateCustomerRequestTransfer
72
     *
73
     * @return void
74
     */
75
    protected function loadCustomerAddressById(AfterpayValidateCustomerRequestTransfer $validateCustomerRequestTransfer): void
76
    {
77
        $customerAddress = $this->createCustomerTransfer($validateCustomerRequestTransfer);
78
79
        $customerAddress = $this->customerFacade->getAddress($customerAddress);
80
81
        $requestCustomer = $validateCustomerRequestTransfer->getCustomer();
82
        $requestAddress = $requestCustomer->getAddress();
83
84
        $requestCustomer
85
            ->setSalutation($customerAddress->getSalutation())
86
            ->setFirstName($customerAddress->getFirstName())
87
            ->setLastName($customerAddress->getLastName());
88
89
        $requestAddress
90
            ->setStreet($customerAddress->getAddress1())
91
            ->setStreetNumber($customerAddress->getAddress2())
92
            ->setStreetNumberAdditional($customerAddress->getAddress3())
93
            ->setPostalCode($customerAddress->getZipCode())
94
            ->setCountryCode($customerAddress->getIso2Code())
95
            ->setPostalPlace($customerAddress->getCity());
96
    }
97
98
    /**
99
     * @param \Generated\Shared\Transfer\AfterpayValidateCustomerRequestTransfer $validateCustomerRequestTransfer
100
     *
101
     * @return \Generated\Shared\Transfer\AddressTransfer
102
     */
103
    protected function createCustomerTransfer(AfterpayValidateCustomerRequestTransfer $validateCustomerRequestTransfer): AddressTransfer
104
    {
105
        $idCustomerAddress =
106
            $validateCustomerRequestTransfer
107
                ->getCustomer()
108
                ->getAddress()
109
                ->getIdCustomerAddress();
110
111
        $customerAddress = (new AddressTransfer())
112
            ->setIdCustomerAddress($idCustomerAddress);
113
114
        return $customerAddress;
115
    }
116
}
117