Passed
Pull Request — master (#13)
by Dmitri
05:33
created

extractPayolutionOmsOperationRequest()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 6
dl 0
loc 10
rs 10
c 1
b 0
f 0
cc 1
nc 1
nop 2
1
<?php
2
3
namespace SprykerEco\Zed\Payolution\Communication\Plugin\Oms\Converter;
4
5
use Generated\Shared\Transfer\OrderTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\OrderTransfer 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...
6
use Generated\Shared\Transfer\PayolutionOmsOperationRequestTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...perationRequestTransfer 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...
7
use Generated\Shared\Transfer\PayolutionPaymentTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...yolutionPaymentTransfer 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...
8
use Orm\Zed\Payolution\Persistence\SpyPaymentPayolution;
0 ignored issues
show
Bug introduced by
The type Orm\Zed\Payolution\Persi...ce\SpyPaymentPayolution 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...
9
use Orm\Zed\Sales\Persistence\SpySalesOrder;
0 ignored issues
show
Bug introduced by
The type Orm\Zed\Sales\Persistence\SpySalesOrder 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...
10
use SprykerEco\Zed\Payolution\Dependency\Facade\PayolutionToSalesInterface;
11
12
class OmsEntityConverter implements OmsEntityConverterInterface
13
{
14
    /**
15
     * @var \Orm\Zed\Sales\Persistence\SpySalesOrderItem[] $orderItems
16
     */
17
    protected $orderItems;
18
19
    /**
20
     * @var \Orm\Zed\Sales\Persistence\SpySalesOrder $orderEntity
21
     */
22
    protected $orderEntity;
23
24
    /**
25
     * @var \SprykerEco\Zed\Payolution\Dependency\Facade\PayolutionToSalesInterface $salesFacade
26
     */
27
    protected $salesFacade;
28
29
    /**
30
     * @param array $orderItems
31
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $orderEntity
32
     * @param \SprykerEco\Zed\Payolution\Dependency\Facade\PayolutionToSalesInterface $salesFacade
33
     */
34
    public function __construct(array $orderItems, SpySalesOrder $orderEntity, PayolutionToSalesInterface $salesFacade)
35
    {
36
        $this->orderItems = $orderItems;
37
        $this->orderEntity = $orderEntity;
38
        $this->salesFacade = $salesFacade;
39
    }
40
41
    /**
42
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem[] $orderItems
43
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $orderEntity
44
     *
45
     * @return \Orm\Zed\Sales\Persistence\SpySalesOrderItem[]
46
     */
47
    public function extractPartialOrderItems(array $orderItems, SpySalesOrder $orderEntity): array
48
    {
49
        if (count($orderItems) < count($orderEntity->getItems())) {
50
            $orderItemIds = [];
51
52
            foreach ($orderItems as $orderItem) {
53
                $orderItemIds[]= $orderItem->getIdSalesOrderItem();
54
            }
55
56
            $orderTransfer = $this->extractOrderTransfer($orderEntity);
57
58
            $orderItemTransfers = [];
59
            /** @var \Generated\Shared\Transfer\ItemTransfer $itemTransfer */
60
            foreach ($orderTransfer->getItems() as $itemTransfer) {
61
                if (in_array($itemTransfer->getIdSalesOrderItem(), $orderItemIds)) {
62
                    $orderItemTransfers[]= $itemTransfer;
63
                }
64
            }
65
66
            return $orderItemTransfers;
67
        }
68
69
        return [];
70
    }
71
72
    /**
73
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $orderEntity
74
     *
75
     * @return \Generated\Shared\Transfer\OrderTransfer
76
     */
77
    public function extractOrderTransfer(SpySalesOrder $orderEntity): OrderTransfer
78
    {
79
        return $this->salesFacade->getOrderByIdSalesOrder($orderEntity->getIdSalesOrder());
80
    }
81
82
    /**
83
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $orderEntity
84
     *
85
     * @return \Orm\Zed\Payolution\Persistence\SpyPaymentPayolution
86
     */
87
    public function extractPaymentEntity(SpySalesOrder $orderEntity): SpyPaymentPayolution
88
    {
89
        return $orderEntity->getSpyPaymentPayolutions()->getFirst();
90
    }
91
92
    /**
93
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $orderEntity
94
     *
95
     * @return \Generated\Shared\Transfer\PayolutionPaymentTransfer
96
     */
97
    public function extractPaymentTransfer(SpySalesOrder $orderEntity): PayolutionPaymentTransfer
98
    {
99
        return $this->extractOrderTransfer($orderEntity)->getPayolutionPayment();
100
    }
101
102
    /**
103
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem[] $orderItems
104
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $orderEntity
105
     *
106
     * @return \Generated\Shared\Transfer\PayolutionOmsOperationRequestTransfer
107
     */
108
    public function extractPayolutionOmsOperationRequest(array $orderItems, SpySalesOrder $orderEntity): PayolutionOmsOperationRequestTransfer
109
    {
110
        $payolutionOmsOperationRequestTransfer = new PayolutionOmsOperationRequestTransfer();
111
        $orderTransfer = $this->extractOrderTransfer($orderEntity);
112
113
        $payolutionOmsOperationRequestTransfer->setIdPayment($this->extractPaymentEntity($orderEntity)->getIdPaymentPayolution());
114
        $payolutionOmsOperationRequestTransfer->setOrder($orderTransfer);
115
        $payolutionOmsOperationRequestTransfer->setSelectedItems($this->extractPartialOrderItems($orderItems, $orderEntity));
116
117
        return $payolutionOmsOperationRequestTransfer;
118
    }
119
}
120