Passed
Pull Request — master (#23)
by Aleksey
09:29 queued 06:06
created

StoreOrderRequestMapper::mapSpecificParameters()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 14
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 7
c 1
b 0
f 0
nc 2
nop 2
dl 0
loc 14
rs 10
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;
9
10
use Generated\Shared\Transfer\ArvatoRssIdentificationRequestTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...ficationRequestTransfer 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\ArvatoRssStoreOrderRequestTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...oreOrderRequestTransfer 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 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...
15
use SprykerEco\Shared\ArvatoRss\ArvatoRssApiConfig;
16
use SprykerEco\Zed\ArvatoRss\ArvatoRssConfig;
17
use SprykerEco\Zed\ArvatoRss\Business\Api\Mapper\Aspect\IdentificationMapperInterface;
18
use SprykerEco\Zed\ArvatoRss\Business\Api\Mapper\Aspect\OrderMapperInterface;
19
use SprykerEco\Zed\ArvatoRss\Business\Reader\ArvatoRssReaderInterface;
20
21
class StoreOrderRequestMapper implements StoreOrderRequestMapperInterface
22
{
23
    /**
24
     * @var \SprykerEco\Zed\ArvatoRss\Business\Api\Mapper\Aspect\IdentificationMapperInterface
25
     */
26
    protected $identificationMapper;
27
28
    /**
29
     * @var \SprykerEco\Zed\ArvatoRss\Business\Api\Mapper\Aspect\OrderMapperInterface
30
     */
31
    protected $orderMapper;
32
33
    /**
34
     * @var \SprykerEco\Zed\ArvatoRss\ArvatoRssConfig $config
35
     */
36
    protected $config;
37
38
    /**
39
     * @var \SprykerEco\Zed\ArvatoRss\Business\Reader\ArvatoRssReaderInterface|null
40
     */
41
    protected $reader;
42
43
    /**
44
     * @param \SprykerEco\Zed\ArvatoRss\Business\Api\Mapper\Aspect\IdentificationMapperInterface $identificationMapper
45
     * @param \SprykerEco\Zed\ArvatoRss\Business\Api\Mapper\Aspect\OrderMapperInterface $orderMapper
46
     * @param \SprykerEco\Zed\ArvatoRss\ArvatoRssConfig $config
47
     * @param \SprykerEco\Zed\ArvatoRss\Business\Reader\ArvatoRssReaderInterface|null $reader
48
     */
49
    public function __construct(
50
        IdentificationMapperInterface $identificationMapper,
51
        OrderMapperInterface $orderMapper,
52
        ArvatoRssConfig $config,
53
        ?ArvatoRssReaderInterface $reader = null
54
    ) {
55
        $this->identificationMapper = $identificationMapper;
56
        $this->orderMapper = $orderMapper;
57
        $this->config = $config;
58
        $this->reader = $reader;
59
    }
60
61
    /**
62
     * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer
63
     *
64
     * @return \Generated\Shared\Transfer\ArvatoRssStoreOrderRequestTransfer
65
     */
66
    public function mapOrderToRequestTransfer(OrderTransfer $orderTransfer): ArvatoRssStoreOrderRequestTransfer
67
    {
68
        $requestTransfer = new ArvatoRssStoreOrderRequestTransfer();
69
70
        $identification = $this->identificationMapper->map();
71
        $identification = $this->updateIdentification($orderTransfer, $identification);
72
73
        $order = $this->orderMapper->map(
74
            $this->createOrderMapperTransfer($orderTransfer)
75
        );
76
        $order = $this->mapSpecificParameters($orderTransfer, $order);
77
78
        $requestTransfer->setIdentification($identification);
79
        $requestTransfer->setOrder($order);
80
81
        return $requestTransfer;
82
    }
83
84
    /**
85
     * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer
86
     * @param \Generated\Shared\Transfer\ArvatoRssOrderTransfer $order
87
     *
88
     * @return \Generated\Shared\Transfer\ArvatoRssOrderTransfer
89
     */
90
    protected function mapSpecificParameters(OrderTransfer $orderTransfer, ArvatoRssOrderTransfer $order)
91
    {
92
        $payment = $orderTransfer->getPayments()[0];
93
94
        $order->setPaymentType(
95
            $this->config->getPaymentTypeMapping(
96
                $payment->getPaymentMethod()
97
            )
98
        );
99
        if ($orderTransfer->getCustomer()) {
100
            $order->setDebitorNumber($orderTransfer->getCustomer()->getCustomerReference());
101
        }
102
103
        return $order;
104
    }
105
106
    /**
107
     * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer
108
     *
109
     * @return \Generated\Shared\Transfer\OrderMapperTransfer
110
     */
111
    protected function createOrderMapperTransfer(OrderTransfer $orderTransfer)
112
    {
113
        $transfer = new OrderMapperTransfer();
114
        $customer = $orderTransfer->getCustomer();
115
        $transfer->setItems($orderTransfer->getItems());
116
        $transfer->setTotals($orderTransfer->getTotals());
117
        $transfer->setOrderReference($orderTransfer->getOrderReference());
118
        $transfer->setCustomerIsGuest($customer ? $customer->getIsGuest() : true);
119
120
        return $transfer;
121
    }
122
123
    /**
124
     * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer
125
     * @param \Generated\Shared\Transfer\ArvatoRssIdentificationRequestTransfer $identification
126
     *
127
     * @return \Generated\Shared\Transfer\ArvatoRssIdentificationRequestTransfer
128
     */
129
    protected function updateIdentification(
130
        OrderTransfer $orderTransfer,
131
        ArvatoRssIdentificationRequestTransfer $identification
132
    ): ArvatoRssIdentificationRequestTransfer {
133
        if ($this->reader === null) {
134
            return $identification;
135
        }
136
137
        $arvatoRssApiCallLogTransfer = $this->reader
138
            ->getApiLogByOrderReferenceAndType(
139
                $orderTransfer->getOrderReference(),
140
                ArvatoRssApiConfig::TRANSACTION_TYPE_RISK_CHECK
141
            );
142
143
        $identification->setCommunicationToken($arvatoRssApiCallLogTransfer->getCommunicationToken());
144
145
        return $identification;
146
    }
147
}
148