Completed
Pull Request — master (#14)
by Aleksey
20:12
created

StoreOrderRequestMapper   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 92
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 2
dl 0
loc 92
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 9 1
A mapOrderToRequestTransfer() 0 15 1
A mapSpecificParameters() 0 15 2
A createOrderMapperTransfer() 0 11 2
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;
9
10
use Generated\Shared\Transfer\ArvatoRssOrderTransfer;
11
use Generated\Shared\Transfer\ArvatoRssStoreOrderRequestTransfer;
12
use Generated\Shared\Transfer\OrderMapperTransfer;
13
use Generated\Shared\Transfer\OrderTransfer;
14
use SprykerEco\Zed\ArvatoRss\ArvatoRssConfig;
15
use SprykerEco\Zed\ArvatoRss\Business\Api\Mapper\Aspect\IdentificationMapperInterface;
16
use SprykerEco\Zed\ArvatoRss\Business\Api\Mapper\Aspect\OrderMapperInterface;
17
18
class StoreOrderRequestMapper implements StoreOrderRequestMapperInterface
19
{
20
    /**
21
     * @var \SprykerEco\Zed\ArvatoRss\Business\Api\Mapper\Aspect\IdentificationMapperInterface
22
     */
23
    protected $identificationMapper;
24
25
    /**
26
     * @var \SprykerEco\Zed\ArvatoRss\Business\Api\Mapper\Aspect\OrderMapperInterface
27
     */
28
    protected $orderMapper;
29
30
    /**
31
     * @var \SprykerEco\Zed\ArvatoRss\ArvatoRssConfig $config
32
     */
33
    protected $config;
34
35
    /**
36
     * @param \SprykerEco\Zed\ArvatoRss\Business\Api\Mapper\Aspect\IdentificationMapperInterface $identificationMapper
37
     * @param \SprykerEco\Zed\ArvatoRss\Business\Api\Mapper\Aspect\OrderMapperInterface $orderMapper
38
     * @param \SprykerEco\Zed\ArvatoRss\ArvatoRssConfig $config
39
     */
40
    public function __construct(
41
        IdentificationMapperInterface $identificationMapper,
42
        OrderMapperInterface $orderMapper,
43
        ArvatoRssConfig $config
44
    ) {
45
        $this->identificationMapper = $identificationMapper;
46
        $this->orderMapper = $orderMapper;
47
        $this->config = $config;
48
    }
49
50
    /**
51
     * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer
52
     *
53
     * @return \Generated\Shared\Transfer\ArvatoRssStoreOrderRequestTransfer
54
     */
55
    public function mapOrderToRequestTransfer(OrderTransfer $orderTransfer)
56
    {
57
        $requestTransfer = new ArvatoRssStoreOrderRequestTransfer();
58
59
        $identification = $this->identificationMapper->map();
60
        $order = $this->orderMapper->map(
61
            $this->createOrderMapperTransfer($orderTransfer)
62
        );
63
        $order = $this->mapSpecificParameters($orderTransfer, $order);
64
65
        $requestTransfer->setIdentification($identification);
66
        $requestTransfer->setOrder($order);
67
68
        return $requestTransfer;
69
    }
70
71
    /**
72
     * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer
73
     * @param \Generated\Shared\Transfer\ArvatoRssOrderTransfer $order
74
     *
75
     * @return \Generated\Shared\Transfer\ArvatoRssOrderTransfer
76
     */
77
    protected function mapSpecificParameters(OrderTransfer $orderTransfer, ArvatoRssOrderTransfer $order)
78
    {
79
        $payment = $orderTransfer->getPayments()[0];
80
81
        $order->setPaymentType(
82
            $this->config->getPaymentTypeMapping(
83
                $payment->getPaymentMethod()
84
            )
85
        );
86
        if ($orderTransfer->getCustomer()) {
87
            $order->setDebitorNumber($orderTransfer->getCustomer()->getIdCustomer());
88
        }
89
90
        return $order;
91
    }
92
93
    /**
94
     * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer
95
     *
96
     * @return \Generated\Shared\Transfer\OrderMapperTransfer
97
     */
98
    protected function createOrderMapperTransfer(OrderTransfer $orderTransfer)
99
    {
100
        $transfer = new OrderMapperTransfer();
101
        $customer = $orderTransfer->getCustomer();
102
        $transfer->setItems($orderTransfer->getItems());
103
        $transfer->setTotals($orderTransfer->getTotals());
104
        $transfer->setOrderReference($orderTransfer->getOrderReference());
105
        $transfer->setCustomerIsGuest($customer ? $customer->getIsGuest() : true);
106
107
        return $transfer;
108
    }
109
}
110