Test Setup Failed
Pull Request — master (#11)
by
unknown
32:32
created

OrderMapper   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 87
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 1
dl 0
loc 87
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
B map() 0 34 2
A prepareOrderItem() 0 12 1
1
<?php
2
3
/**
4
 * MIT License
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerEco\Zed\ArvatoRss\Business\Api\Mapper\Aspect;
9
10
use Generated\Shared\Transfer\ArvatoRssOrderItemTransfer;
11
use Generated\Shared\Transfer\ArvatoRssOrderTransfer;
12
use Generated\Shared\Transfer\ItemTransfer;
13
use Generated\Shared\Transfer\OrderMapperTransfer;
14
use SprykerEco\Zed\ArvatoRss\Dependency\Facade\ArvatoRssToMoneyInterface;
15
use SprykerEco\Zed\ArvatoRss\Dependency\Facade\ArvatoRssToStoreInterface;
16
17
class OrderMapper implements OrderMapperInterface
18
{
19
    /**
20
     * @const int PRODUCT_GROUP_ID
21
     */
22
    const PRODUCT_GROUP_ID = 1;
23
24
    /**
25
     * @var \SprykerEco\Zed\ArvatoRss\Dependency\Facade\ArvatoRssToMoneyInterface
26
     */
27
    protected $moneyFacade;
28
29
    /**
30
     * @var \SprykerEco\Zed\ArvatoRss\Dependency\Facade\ArvatoRssToStoreInterface
31
     */
32
    protected $storeFacade;
33
34
    /**
35
     * @param \SprykerEco\Zed\ArvatoRss\Dependency\Facade\ArvatoRssToMoneyInterface $moneyFacade
36
     * @param \SprykerEco\Zed\ArvatoRss\Dependency\Facade\ArvatoRssToStoreInterface $storeFacade
37
     */
38
    public function __construct(
39
        ArvatoRssToMoneyInterface $moneyFacade,
40
        ArvatoRssToStoreInterface $storeFacade
41
    ) {
42
        $this->moneyFacade = $moneyFacade;
43
        $this->storeFacade = $storeFacade;
44
    }
45
46
    /**
47
     * @param \Generated\Shared\Transfer\OrderMapperTransfer $orderMapperTransfer
48
     *
49
     * @return \Generated\Shared\Transfer\ArvatoRssOrderTransfer
50
     */
51
    public function map(OrderMapperTransfer $orderMapperTransfer)
52
    {
53
        $order = new ArvatoRssOrderTransfer();
54
55
        $order->setCurrency(
56
            $this->storeFacade
57
                ->getCurrentStore()
58
                ->getSelectedCurrencyIsoCode()
59
        );
60
        $order->setRegisteredOrder(!$orderMapperTransfer->getCustomerIsGuest());
61
        $order->setGrossTotalBill(
62
            $this->moneyFacade->convertIntegerToDecimal(
63
                $orderMapperTransfer
64
                    ->getTotals()
65
                    ->getGrandTotal()
66
            )
67
        );
68
        $order->setOrderNumber(
69
            $orderMapperTransfer->getOrderReference()
70
        );
71
        $order->setTotalOrderValue(
72
            $this->moneyFacade->convertIntegerToDecimal(
73
                $orderMapperTransfer
74
                    ->getTotals()
75
                    ->getSubtotal()
76
            )
77
        );
78
        foreach ($orderMapperTransfer->getItems() as $itemTransfer) {
79
            $item = $this->prepareOrderItem($itemTransfer);
80
            $order->addItem($item);
81
        }
82
83
        return $order;
84
    }
85
86
    /**
87
     * @param \Generated\Shared\Transfer\ItemTransfer $itemTransfer
88
     *
89
     * @return \Generated\Shared\Transfer\ArvatoRssOrderItemTransfer
90
     */
91
    protected function prepareOrderItem(ItemTransfer $itemTransfer)
92
    {
93
        $item = new ArvatoRssOrderItemTransfer();
94
        $item->setUnitPrice(
95
            $this->moneyFacade->convertIntegerToDecimal($itemTransfer->getUnitPrice())
96
        );
97
        $item->setProductNumber($itemTransfer->getSku());
98
        $item->setUnitCount($itemTransfer->getQuantity());
99
        $item->setProductGroupId(static::PRODUCT_GROUP_ID);
100
101
        return $item;
102
    }
103
}
104