OrderMapper   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 85
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 35
c 1
b 0
f 0
dl 0
loc 85
rs 10
wmc 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
A prepareOrderItem() 0 11 1
A map() 0 33 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\ArvatoRss\Business\Api\Mapper\Aspect;
9
10
use Generated\Shared\Transfer\ArvatoRssOrderItemTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...atoRssOrderItemTransfer 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\ArvatoRssOrderTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\ArvatoRssOrderTransfer 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\ItemTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\ItemTransfer 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 Generated\Shared\Transfer\OrderMapperTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\OrderMapperTransfer 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 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
    public 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