Passed
Pull Request — feature/ECO-948-renaming-and-r... (#7)
by Andrey
04:36 queued 01:50
created

GetOrderReferenceDetailsTransaction   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 56
rs 10
c 0
b 0
f 0
wmc 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A saveOrderReferenceStatus() 0 8 1
A saveAddresses() 0 7 1
A execute() 0 20 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\Payment\Handler\Transaction;
9
10
use Generated\Shared\Transfer\AmazonpayCallTransfer;
11
use Generated\Shared\Transfer\AmazonpayStatusTransfer;
12
13
class GetOrderReferenceDetailsTransaction extends AbstractAmazonpayTransaction
14
{
15
    /**
16
     * @param \Generated\Shared\Transfer\AmazonpayCallTransfer $amazonPayCallTransfer
17
     *
18
     * @return \Generated\Shared\Transfer\AmazonpayCallTransfer
19
     */
20
    public function execute(AmazonpayCallTransfer $amazonPayCallTransfer)
21
    {
22
        $amazonPayCallTransfer = parent::execute($amazonPayCallTransfer);
23
24
        if (!$this->isPaymentSuccess($amazonPayCallTransfer)) {
25
            return $amazonPayCallTransfer;
26
        }
27
28
        $this->saveAddresses($amazonPayCallTransfer);
29
30
        $amazonPayCallTransfer->getAmazonpayPayment()->setIsSandbox(
31
            $this->apiResponse->getIsSandbox()
32
        );
33
        $amazonPayCallTransfer->setOrderReference(
34
            $amazonPayCallTransfer->getAmazonpayPayment()->getOrderReferenceId()
35
        );
36
37
        $this->saveOrderReferenceStatus($amazonPayCallTransfer);
38
39
        return $amazonPayCallTransfer;
40
    }
41
42
    /**
43
     * @param \Generated\Shared\Transfer\AmazonpayCallTransfer $amazonPayCallTransfer
44
     *
45
     * @return void
46
     */
47
    protected function saveOrderReferenceStatus(AmazonpayCallTransfer $amazonPayCallTransfer)
48
    {
49
        $orderReferenceStatus = new AmazonpayStatusTransfer();
50
        $orderReferenceStatus->setState(
51
            $this->apiResponse->getOrderReferenceStatus()->getState()
52
        );
53
54
        $amazonPayCallTransfer->getAmazonpayPayment()->setOrderReferenceStatus($orderReferenceStatus);
55
    }
56
57
    /**
58
     * @param \Generated\Shared\Transfer\AmazonpayCallTransfer $amazonPayCallTransfer
59
     *
60
     * @return void
61
     */
62
    protected function saveAddresses(AmazonpayCallTransfer $amazonPayCallTransfer)
63
    {
64
        $amazonPayCallTransfer->setShippingAddress($this->apiResponse->getShippingAddress());
65
        $amazonPayCallTransfer->setBillingAddress(
66
            $this->apiResponse->getBillingAddress() ?? $this->apiResponse->getShippingAddress()
67
        );
68
        $amazonPayCallTransfer->setBillingSameAsShipping($this->apiResponse->getBillingAddress() !== null);
69
    }
70
}
71