RatepayCommunicationFactory   A
last analyzed

Complexity

Total Complexity 21

Size/Duplication

Total Lines 248
Duplicated Lines 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
eloc 66
c 3
b 0
f 0
dl 0
loc 248
rs 10
wmc 21

17 Methods

Rating   Name   Duplication   Size   Complexity  
A getCalculationFacade() 0 3 1
A createPartialOrderCalculator() 0 5 1
A getSalesQueryContainer() 0 3 1
A getSalesFacade() 0 3 1
A createPaymentInitTransfer() 0 3 1
A createOrderTransferItemsByBasketItems() 0 8 2
A getPaymentMethodExtractor() 0 7 2
A createPaymentRequestMapperByOrder() 0 15 1
A createPaymentMethodExtractor() 0 3 1
A createOrderTransfer() 0 3 1
A createPaymentInitMapperByQuote() 0 8 1
A createOrderTransferItems() 0 8 2
A createItemTransferByBasketItem() 0 8 1
A createPaymentRequestMapperByQuote() 0 14 1
A createItemTransferByItemEntity() 0 11 1
A getCalculatedDiscounts() 0 16 2
A createPaymentInitMapperByOrder() 0 8 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\Ratepay\Communication;
9
10
use ArrayObject;
11
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...
12
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...
13
use Generated\Shared\Transfer\QuoteTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\QuoteTransfer 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\RatepayPaymentInitTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...epayPaymentInitTransfer 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 Generated\Shared\Transfer\RatepayPaymentRequestTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...yPaymentRequestTransfer 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...
16
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...
17
use Spryker\Zed\Kernel\Communication\AbstractCommunicationFactory;
18
use SprykerEco\Shared\Ratepay\RatepayConfig;
19
use SprykerEco\Zed\Ratepay\Business\Api\Mapper\OrderPaymentInitMapper;
20
use SprykerEco\Zed\Ratepay\Business\Api\Mapper\OrderPaymentRequestMapper;
21
use SprykerEco\Zed\Ratepay\Business\Api\Mapper\QuotePaymentInitMapper;
22
use SprykerEco\Zed\Ratepay\Business\Api\Mapper\QuotePaymentRequestMapper;
23
use SprykerEco\Zed\Ratepay\Business\Order\PartialOrderCalculator;
24
use SprykerEco\Zed\Ratepay\Business\Service\PaymentMethodExtractor;
25
use SprykerEco\Zed\Ratepay\RatepayDependencyProvider;
26
27
/**
28
 * @method \SprykerEco\Zed\Ratepay\Persistence\RatepayQueryContainerInterface getQueryContainer()
29
 * @method \SprykerEco\Zed\Ratepay\RatepayConfig getConfig()
30
 * @method \SprykerEco\Zed\Ratepay\Business\RatepayFacadeInterface getFacade()
31
 */
32
class RatepayCommunicationFactory extends AbstractCommunicationFactory
33
{
34
    /**
35
     * @var \SprykerEco\Zed\Ratepay\Business\Service\PaymentMethodExtractor
36
     */
37
    protected $paymentMethodExtractor;
38
39
    /**
40
     * @return \SprykerEco\Zed\Ratepay\Dependency\Facade\RatepayToSalesInterface
41
     */
42
    public function getSalesFacade()
43
    {
44
        return $this->getProvidedDependency(RatepayDependencyProvider::FACADE_SALES);
45
    }
46
47
    /**
48
     * @return \SprykerEco\Zed\Ratepay\Dependency\Facade\RatepayToCalculationInterface
49
     */
50
    public function getCalculationFacade()
51
    {
52
        return $this->getProvidedDependency(RatepayDependencyProvider::FACADE_CALCULATION);
53
    }
54
55
    /**
56
     * @return \Spryker\Zed\Sales\Persistence\SalesQueryContainerInterface
57
     */
58
    public function getSalesQueryContainer()
59
    {
60
        return $this->getProvidedDependency(RatepayDependencyProvider::SALES_QUERY_CONTAINER);
61
    }
62
63
    /**
64
     * @return \SprykerEco\Zed\Ratepay\Business\Service\PaymentMethodExtractorInterface
65
     */
66
    public function getPaymentMethodExtractor()
67
    {
68
        if (!$this->paymentMethodExtractor) {
69
            $this->paymentMethodExtractor = $this->createPaymentMethodExtractor();
70
        }
71
72
        return $this->paymentMethodExtractor;
73
    }
74
75
    /**
76
     * @return \SprykerEco\Zed\Ratepay\Business\Service\PaymentMethodExtractorInterface
77
     */
78
    protected function createPaymentMethodExtractor()
79
    {
80
        return new PaymentMethodExtractor(RatepayConfig::PAYMENT_METHODS_MAP);
81
    }
82
83
    /**
84
     * @param \Generated\Shared\Transfer\RatepayPaymentInitTransfer $ratepayPaymentInitTransfer
85
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
86
     *
87
     * @return \SprykerEco\Zed\Ratepay\Business\Api\Mapper\MapperInterface
88
     */
89
    public function createPaymentInitMapperByQuote(
90
        RatepayPaymentInitTransfer $ratepayPaymentInitTransfer,
91
        QuoteTransfer $quoteTransfer
92
    ) {
93
        return new QuotePaymentInitMapper(
94
            $ratepayPaymentInitTransfer,
95
            $quoteTransfer,
96
            $this->getPaymentMethodExtractor()
97
        );
98
    }
99
100
    /**
101
     * @return \Generated\Shared\Transfer\RatepayPaymentInitTransfer
102
     */
103
    public function createPaymentInitTransfer()
104
    {
105
        return new RatepayPaymentInitTransfer();
106
    }
107
108
    /**
109
     * @param \Generated\Shared\Transfer\RatepayPaymentInitTransfer $ratepayPaymentInitTransfer
110
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $orderEntity
111
     *
112
     * @return \SprykerEco\Zed\Ratepay\Business\Api\Mapper\MapperInterface
113
     */
114
    public function createPaymentInitMapperByOrder(
115
        RatepayPaymentInitTransfer $ratepayPaymentInitTransfer,
116
        SpySalesOrder $orderEntity
117
    ) {
118
119
        return new OrderPaymentInitMapper(
120
            $ratepayPaymentInitTransfer,
121
            $orderEntity
122
        );
123
    }
124
125
    /**
126
     * @param \Generated\Shared\Transfer\RatepayPaymentRequestTransfer $ratepayPaymentRequestTransfer
127
     * @param \Generated\Shared\Transfer\RatepayPaymentInitTransfer $ratepayPaymentInitTransfer
128
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
129
     * @param \Generated\Shared\Transfer\OrderTransfer $partialOrderTransfer
130
     * @param \Generated\Shared\Transfer\RatepayPaymentElvTransfer|\Generated\Shared\Transfer\RatepayPaymentInstallmentTransfer|\Generated\Shared\Transfer\RatepayPaymentInvoiceTransfer|\Generated\Shared\Transfer\RatepayPaymentPrepaymentTransfer $paymentData
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...ymentPrepaymentTransfer 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...
Bug introduced by
The type Generated\Shared\Transfe...yPaymentInvoiceTransfer 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...
Bug introduced by
The type Generated\Shared\Transfe...mentInstallmentTransfer 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...
Bug introduced by
The type Generated\Shared\Transfe...tepayPaymentElvTransfer 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...
131
     *
132
     * @return \SprykerEco\Zed\Ratepay\Business\Api\Mapper\MapperInterface
133
     */
134
    public function createPaymentRequestMapperByQuote(
135
        RatepayPaymentRequestTransfer $ratepayPaymentRequestTransfer,
136
        RatepayPaymentInitTransfer $ratepayPaymentInitTransfer,
137
        QuoteTransfer $quoteTransfer,
138
        OrderTransfer $partialOrderTransfer,
139
        $paymentData
140
    ) {
141
142
        return new QuotePaymentRequestMapper(
143
            $ratepayPaymentRequestTransfer,
144
            $ratepayPaymentInitTransfer,
145
            $quoteTransfer,
146
            $partialOrderTransfer,
147
            $paymentData
148
        );
149
    }
150
151
    /**
152
     * @param \Generated\Shared\Transfer\RatepayPaymentRequestTransfer $ratepayPaymentRequestTransfer
153
     * @param \Generated\Shared\Transfer\RatepayPaymentInitTransfer $ratepayPaymentInitTransfer
154
     * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer
155
     * @param \Generated\Shared\Transfer\OrderTransfer $partialOrderTransfer
156
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrder $orderEntity
157
     *
158
     * @return \SprykerEco\Zed\Ratepay\Business\Api\Mapper\MapperInterface
159
     */
160
    public function createPaymentRequestMapperByOrder(
161
        RatepayPaymentRequestTransfer $ratepayPaymentRequestTransfer,
162
        RatepayPaymentInitTransfer $ratepayPaymentInitTransfer,
163
        OrderTransfer $orderTransfer,
164
        OrderTransfer $partialOrderTransfer,
165
        SpySalesOrder $orderEntity
166
    ) {
167
168
        return new OrderPaymentRequestMapper(
169
            $ratepayPaymentRequestTransfer,
170
            $ratepayPaymentInitTransfer,
171
            $orderTransfer,
172
            $partialOrderTransfer,
173
            $orderEntity,
174
            $this->getQueryContainer()
175
        );
176
    }
177
178
    /**
179
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem[] $orderItems
180
     *
181
     * @return \ArrayObject
182
     */
183
    public function createOrderTransferItems($orderItems)
184
    {
185
        $items = new ArrayObject();
186
        foreach ($orderItems as $orderItemEntity) {
187
            $items[] = $this->createItemTransferByItemEntity($orderItemEntity);
188
        }
189
190
        return $items;
191
    }
192
193
    /**
194
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem $orderItemEntity
0 ignored issues
show
Bug introduced by
The type Orm\Zed\Sales\Persistence\SpySalesOrderItem 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...
195
     *
196
     * @return \Generated\Shared\Transfer\ItemTransfer
197
     */
198
    protected function createItemTransferByItemEntity($orderItemEntity)
199
    {
200
        $itemTransfer = new ItemTransfer();
201
        $itemTransfer->setIdSalesOrderItem($orderItemEntity->getIdSalesOrderItem());
202
        $itemTransfer->setUnitGrossPrice($orderItemEntity->getGrossPrice());
203
        $itemTransfer->setQuantity($orderItemEntity->getQuantity());
204
        $itemTransfer->setCalculatedDiscounts(
205
            new ArrayObject($this->getCalculatedDiscounts($orderItemEntity))
206
        );
207
208
        return $itemTransfer;
209
    }
210
211
    /**
212
     * @param \Orm\Zed\Sales\Persistence\SpySalesOrderItem $orderItemEntity
213
     *
214
     * @return array
215
     */
216
    protected function getCalculatedDiscounts($orderItemEntity)
217
    {
218
        $result = [];
219
        $discounts = $orderItemEntity->getDiscounts();
220
        foreach ($discounts as $discount) {
221
            $calculatedDiscountTransfer = new CalculatedDiscountTransfer();
0 ignored issues
show
Bug introduced by
The type SprykerEco\Zed\Ratepay\C...culatedDiscountTransfer 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...
222
            $calculatedDiscountTransfer
223
                ->setDescription($discount->getDescription())
224
                ->setDisplayName($discount->getDisplayName())
225
                ->setUnitGrossAmount($discount->getAmount())
226
                ->setIdDiscount($discount->getIdSalesDiscount())
227
                ->setQuantity($orderItemEntity->getQuantity());
228
            $result[] = $calculatedDiscountTransfer;
229
        }
230
231
        return $result;
232
    }
233
234
    /**
235
     * @param \Generated\Shared\Transfer\ItemTransfer[] $basketItems
236
     *
237
     * @return \ArrayObject
238
     */
239
    public function createOrderTransferItemsByBasketItems($basketItems)
240
    {
241
        $items = new ArrayObject();
242
        foreach ($basketItems as $basketItem) {
243
            $items[] = $this->createItemTransferByBasketItem($basketItem);
244
        }
245
246
        return $items;
247
    }
248
249
    /**
250
     * @param \Generated\Shared\Transfer\ItemTransfer $basketItem
251
     *
252
     * @return \Generated\Shared\Transfer\ItemTransfer
253
     */
254
    protected function createItemTransferByBasketItem($basketItem)
255
    {
256
        $itemTransfer = new ItemTransfer();
257
        $itemTransfer->setIdSalesOrderItem($basketItem->getIdSalesOrderItem());
258
        $itemTransfer->setUnitGrossPrice($basketItem->getUnitGrossPrice());
259
        $itemTransfer->setQuantity($basketItem->getQuantity());
260
261
        return $itemTransfer;
262
    }
263
264
    /**
265
     * @return \Generated\Shared\Transfer\OrderTransfer
266
     */
267
    public function createOrderTransfer()
268
    {
269
        return new OrderTransfer();
270
    }
271
272
    /**
273
     * @return \SprykerEco\Zed\Ratepay\Business\Order\PartialOrderCalculatorInterface
274
     */
275
    public function createPartialOrderCalculator()
276
    {
277
        return new PartialOrderCalculator(
278
            $this->getProvidedDependency(RatepayDependencyProvider::FACADE_CALCULATION),
279
            $this->getSalesQueryContainer()
280
        );
281
    }
282
}
283