Passed
Push — feature/ECO-808-scrutinizer ( 956529...82fb0b )
by Andrey
05:28 queued 01:30
created

Saver   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 107
Duplicated Lines 0 %

Importance

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

5 Methods

Rating   Name   Duplication   Size   Complexity  
A assignPaymentEntityToItems() 0 4 2
B getOrderStatus() 0 19 5
A assignPaymentToOrderItem() 0 9 1
B createPaymentAmazonpay() 0 27 1
A saveOrderPayment() 0 7 1
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\Order;
9
10
use ArrayObject;
11
use Generated\Shared\Transfer\AmazonpayPaymentTransfer;
12
use Generated\Shared\Transfer\CheckoutResponseTransfer;
13
use Generated\Shared\Transfer\QuoteTransfer;
14
use Orm\Zed\Amazonpay\Persistence\SpyPaymentAmazonpay;
1 ignored issue
show
Bug introduced by
The type Orm\Zed\Amazonpay\Persistence\SpyPaymentAmazonpay 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...
15
use Orm\Zed\Amazonpay\Persistence\SpyPaymentAmazonpaySalesOrderItem;
1 ignored issue
show
Bug introduced by
The type Orm\Zed\Amazonpay\Persis...AmazonpaySalesOrderItem 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...
16
use SprykerEco\Shared\Amazonpay\AmazonpayConstants;
17
18
class Saver implements SaverInterface
19
{
20
21
    /**
22
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
23
     * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponseTransfer
24
     *
25
     * @return void
26
     */
27
    public function saveOrderPayment(QuoteTransfer $quoteTransfer, CheckoutResponseTransfer $checkoutResponseTransfer)
28
    {
29
        $paymentAmazonpayEntity = $this->createPaymentAmazonpay($quoteTransfer->getAmazonpayPayment());
30
31
        $this->assignPaymentEntityToItems(
32
            $paymentAmazonpayEntity,
33
            $checkoutResponseTransfer->getSaveOrder()->getOrderItems()
34
        );
35
    }
36
37
    /**
38
     * @param \Orm\Zed\Amazonpay\Persistence\SpyPaymentAmazonpay $paymentEntity
39
     * @param \ArrayObject|\Generated\Shared\Transfer\ItemTransfer[] $orderItems
40
     *
41
     * @return void
42
     */
43
    protected function assignPaymentEntityToItems(SpyPaymentAmazonpay $paymentEntity, ArrayObject $orderItems)
44
    {
45
        foreach ($orderItems as $itemTransfer) {
46
            $this->assignPaymentToOrderItem($paymentEntity->getIdPaymentAmazonpay(), $itemTransfer->getIdSalesOrderItem());
47
        }
48
    }
49
50
    /**
51
     * @param int $idPayment
52
     * @param int $orderItem
53
     *
54
     * @return \Orm\Zed\Amazonpay\Persistence\SpyPaymentAmazonpaySalesOrderItem
55
     */
56
    protected function assignPaymentToOrderItem($idPayment, $orderItem)
57
    {
58
        $entity = new SpyPaymentAmazonpaySalesOrderItem();
59
        $entity->setFkPaymentAmazonpay($idPayment)
60
            ->setFkSalesOrderItem($orderItem);
61
62
        $entity->save();
63
64
        return $entity;
65
    }
66
67
    /**
68
     * @param \Generated\Shared\Transfer\AmazonpayPaymentTransfer $paymentTransfer
69
     *
70
     * @return \Orm\Zed\Amazonpay\Persistence\SpyPaymentAmazonpay
71
     */
72
    protected function createPaymentAmazonpay(AmazonpayPaymentTransfer $paymentTransfer)
73
    {
74
        $paymentEntity = new SpyPaymentAmazonpay();
75
        $paymentEntity->setOrderReferenceId($paymentTransfer->getOrderReferenceId());
76
        $paymentEntity->setStatus($this->getOrderStatus($paymentTransfer));
77
        $paymentEntity->setSellerOrderId($paymentTransfer->getSellerOrderId());
78
79
        $paymentEntity->setAuthorizationReferenceId(
80
            $paymentTransfer->getAuthorizationDetails()->getAuthorizationReferenceId()
81
        );
82
83
        $paymentEntity->setAmazonAuthorizationId(
84
            $paymentTransfer->getAuthorizationDetails()->getAmazonAuthorizationId()
85
        );
86
87
        $paymentEntity->setAmazonCaptureId(
88
            $paymentTransfer->getAuthorizationDetails()->getIdList()
89
        );
90
91
        $paymentEntity->setRequestId(
92
            $paymentTransfer->getResponseHeader()->getRequestId()
93
        );
94
95
        $paymentEntity->setIsSandbox($paymentTransfer->getIsSandbox());
96
        $paymentEntity->save();
97
98
        return $paymentEntity;
99
    }
100
101
    /**
102
     * @param \Generated\Shared\Transfer\AmazonpayPaymentTransfer $paymentTransfer
103
     *
104
     * @return string
105
     */
106
    protected function getOrderStatus(AmazonpayPaymentTransfer $paymentTransfer)
107
    {
108
        if ($paymentTransfer->getAuthorizationDetails()->getIdList()) {
109
            return AmazonpayConstants::OMS_STATUS_CAPTURE_COMPLETED;
110
        }
111
112
        if ($paymentTransfer->getAuthorizationDetails()->getAuthorizationStatus()->getIsDeclined()) {
113
            return AmazonpayConstants::OMS_STATUS_AUTH_DECLINED;
114
        }
115
116
        if ($paymentTransfer->getAuthorizationDetails()->getAuthorizationStatus()->getIsPending()) {
117
            return AmazonpayConstants::OMS_STATUS_AUTH_PENDING;
118
        }
119
120
        if ($paymentTransfer->getAuthorizationDetails()->getAuthorizationStatus()->getIsOpen()) {
121
            return AmazonpayConstants::OMS_STATUS_AUTH_OPEN;
122
        }
123
124
        return AmazonpayConstants::OMS_STATUS_CANCELLED;
125
    }
126
127
}
128