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

Saver::createPaymentAmazonpay()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 24
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 14
nc 1
nop 1
dl 0
loc 24
rs 8.9713
c 0
b 0
f 0
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\AmazonPayConfig;
17
18
class Saver implements SaverInterface
19
{
20
    /**
21
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
22
     * @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponseTransfer
23
     *
24
     * @return void
25
     */
26
    public function saveOrderPayment(QuoteTransfer $quoteTransfer, CheckoutResponseTransfer $checkoutResponseTransfer)
27
    {
28
        $paymentAmazonpayEntity = $this->createPaymentAmazonpay($quoteTransfer->getAmazonpayPayment());
29
30
        $this->assignPaymentEntityToItems(
31
            $paymentAmazonpayEntity,
32
            $checkoutResponseTransfer->getSaveOrder()->getOrderItems()
33
        );
34
    }
35
36
    /**
37
     * @param \Orm\Zed\AmazonPay\Persistence\SpyPaymentAmazonpay $paymentEntity
38
     * @param \ArrayObject|\Generated\Shared\Transfer\ItemTransfer[] $orderItems
39
     *
40
     * @return void
41
     */
42
    protected function assignPaymentEntityToItems(SpyPaymentAmazonpay $paymentEntity, ArrayObject $orderItems)
43
    {
44
        foreach ($orderItems as $itemTransfer) {
45
            $this->assignPaymentToOrderItem($paymentEntity->getIdPaymentAmazonpay(), $itemTransfer->getIdSalesOrderItem());
46
        }
47
    }
48
49
    /**
50
     * @param int $idPayment
51
     * @param int $orderItem
52
     *
53
     * @return \Orm\Zed\AmazonPay\Persistence\SpyPaymentAmazonpaySalesOrderItem
54
     */
55
    protected function assignPaymentToOrderItem($idPayment, $orderItem)
56
    {
57
        $entity = new SpyPaymentAmazonpaySalesOrderItem();
58
        $entity->setFkPaymentAmazonpay($idPayment)
59
            ->setFkSalesOrderItem($orderItem);
60
61
        $entity->save();
62
63
        return $entity;
64
    }
65
66
    /**
67
     * @param \Generated\Shared\Transfer\AmazonpayPaymentTransfer $paymentTransfer
68
     *
69
     * @return \Orm\Zed\AmazonPay\Persistence\SpyPaymentAmazonpay
70
     */
71
    protected function createPaymentAmazonpay(AmazonpayPaymentTransfer $paymentTransfer)
72
    {
73
        $paymentEntity = new SpyPaymentAmazonpay();
74
        $paymentEntity->setOrderReferenceId($paymentTransfer->getOrderReferenceId());
75
        $status = $this->getOrderStatus($paymentTransfer);
76
        $paymentEntity->setStatus($status);
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->setRequestId(
88
            $paymentTransfer->getResponseHeader()->getRequestId()
89
        );
90
91
        $paymentEntity->setIsSandbox($paymentTransfer->getIsSandbox());
92
        $paymentEntity->save();
93
94
        return $paymentEntity;
95
    }
96
97
    /**
98
     * @param \Generated\Shared\Transfer\AmazonpayPaymentTransfer $paymentTransfer
99
     *
100
     * @return string
101
     */
102
    protected function getOrderStatus(AmazonpayPaymentTransfer $paymentTransfer)
103
    {
104
        if ($paymentTransfer->getAuthorizationDetails()->getIdList()) {
105
            return AmazonPayConfig::STATUS_COMPLETED;
106
        }
107
108
        return $paymentTransfer->getAuthorizationDetails()->getAuthorizationStatus()->getState();
109
    }
110
}
111