Passed
Pull Request — master (#34)
by Roman
11:28 queued 06:44
created

Saver   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 88
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 38
dl 0
loc 88
rs 10
c 0
b 0
f 0
wmc 7

4 Methods

Rating   Name   Duplication   Size   Complexity  
A savePaymentForOrderItems() 0 8 2
A savePaymentForOrder() 0 22 1
A saveOrderPayment() 0 11 2
A updateOrderPayment() 0 12 2
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\Braintree\Business\Order;
9
10
use Generated\Shared\Transfer\BraintreePaymentTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\BraintreePaymentTransfer 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\QuoteTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\QuoteTransfer 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\SaveOrderTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\SaveOrderTransfer 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 Orm\Zed\Braintree\Persistence\SpyPaymentBraintree;
0 ignored issues
show
Bug introduced by
The type Orm\Zed\Braintree\Persistence\SpyPaymentBraintree 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...
14
use Orm\Zed\Braintree\Persistence\SpyPaymentBraintreeOrderItem;
0 ignored issues
show
Bug introduced by
The type Orm\Zed\Braintree\Persis...ymentBraintreeOrderItem 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\Braintree\Persistence\SpyPaymentBraintreeQuery;
0 ignored issues
show
Bug introduced by
The type Orm\Zed\Braintree\Persis...pyPaymentBraintreeQuery 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\Braintree\BraintreeConfig;
17
18
class Saver implements SaverInterface
19
{
20
    /**
21
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
22
     * @param \Generated\Shared\Transfer\SaveOrderTransfer $saveOrderTransfer
23
     *
24
     * @return void
25
     */
26
    public function saveOrderPayment(QuoteTransfer $quoteTransfer, SaveOrderTransfer $saveOrderTransfer)
27
    {
28
        if ($quoteTransfer->getPayment()->getPaymentProvider() === BraintreeConfig::PROVIDER_NAME) {
29
            $paymentEntity = $this->savePaymentForOrder(
30
                $quoteTransfer->getPayment()->getBraintree(),
31
                $saveOrderTransfer->getIdSalesOrder()
32
            );
33
34
            $this->savePaymentForOrderItems(
35
                $saveOrderTransfer->getOrderItems(),
36
                $paymentEntity->getIdPaymentBraintree()
37
            );
38
        }
39
    }
40
41
    /**
42
     * @param \Generated\Shared\Transfer\BraintreePaymentTransfer $paymentTransfer
43
     * @param int $idSalesOrder
44
     *
45
     * @return \Orm\Zed\Braintree\Persistence\SpyPaymentBraintree
46
     */
47
    protected function savePaymentForOrder(BraintreePaymentTransfer $paymentTransfer, $idSalesOrder)
48
    {
49
        $paymentEntity = new SpyPaymentBraintree();
50
        $addressTransfer = $paymentTransfer->getBillingAddress();
51
52
        $formattedStreet = trim(sprintf(
53
            '%s %s %s',
54
            $addressTransfer->getAddress1(),
55
            $addressTransfer->getAddress2(),
56
            $addressTransfer->getAddress3()
57
        ));
58
59
        $paymentEntity->fromArray($addressTransfer->toArray());
60
        $paymentEntity->fromArray($paymentTransfer->toArray());
61
62
        $paymentEntity
63
            ->setStreet($formattedStreet)
64
            ->setCountryIso2Code($addressTransfer->getIso2Code())
65
            ->setFkSalesOrder($idSalesOrder);
66
        $paymentEntity->save();
67
68
        return $paymentEntity;
69
    }
70
71
    /**
72
     * @param \Generated\Shared\Transfer\ItemTransfer[] $orderItemTransfers
73
     * @param int $idPayment
74
     *
75
     * @return void
76
     */
77
    protected function savePaymentForOrderItems($orderItemTransfers, $idPayment)
78
    {
79
        foreach ($orderItemTransfers as $orderItemTransfer) {
80
            $paymentOrderItemEntity = new SpyPaymentBraintreeOrderItem();
81
            $paymentOrderItemEntity
82
                ->setFkPaymentBraintree($idPayment)
83
                ->setFkSalesOrderItem($orderItemTransfer->getIdSalesOrderItem());
84
            $paymentOrderItemEntity->save();
85
        }
86
    }
87
88
    /**
89
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
90
     * @param \Generated\Shared\Transfer\SaveOrderTransfer $saveOrderTransfer
91
     *
92
     * @return void
93
     */
94
    public function updateOrderPayment(QuoteTransfer $quoteTransfer, SaveOrderTransfer $saveOrderTransfer): void
95
    {
96
        $paymentTransfer = $quoteTransfer->getPayment();
97
        if ($paymentTransfer->getPaymentProvider() === BraintreeConfig::PROVIDER_NAME) {
98
            $idSalesOrder = $saveOrderTransfer->getIdSalesOrder();
99
            $paymentEntity = SpyPaymentBraintreeQuery::create()
100
                ->filterByFkSalesOrder($idSalesOrder)
101
                ->findOne();
102
103
            $paymentEntity->fromArray($paymentTransfer->getBraintree()->toArray());
104
            $paymentEntity->setFkSalesOrder($idSalesOrder);
105
            $paymentEntity->save();
106
        }
107
    }
108
}
109