Passed
Pull Request — master (#25)
by Dmitri
05:00
created

createPaymentTransaction()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
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\Braintree\Business;
9
10
use Spryker\Zed\Kernel\Business\AbstractBusinessFactory;
11
use SprykerEco\Zed\Braintree\BraintreeDependencyProvider;
12
use SprykerEco\Zed\Braintree\Business\Hook\PostSaveHook;
13
use SprykerEco\Zed\Braintree\Business\Hook\PostSaveHookInterface;
14
use SprykerEco\Zed\Braintree\Business\Log\TransactionStatusLog;
15
use SprykerEco\Zed\Braintree\Business\Log\TransactionStatusLogInterface;
16
use SprykerEco\Zed\Braintree\Business\Order\Saver;
17
use SprykerEco\Zed\Braintree\Business\Order\SaverInterface;
18
use SprykerEco\Zed\Braintree\Business\Payment\Filter\PaypalExpressPaymentMethodFilter;
19
use SprykerEco\Zed\Braintree\Business\Payment\Filter\PaypalExpressPaymentMethodFilterInterface;
20
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\AuthorizeTransaction;
21
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\CaptureItemsTransaction;
22
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\CaptureOrderTransaction;
23
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\CreateTransaction;
0 ignored issues
show
Bug introduced by
The type SprykerEco\Zed\Braintree...ction\CreateTransaction 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...
24
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\AuthorizeTransactionHandler;
25
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\AuthorizeTransactionHandlerInterface;
26
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\CaptureItemsTransactionHandler;
27
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\CaptureItemsTransactionHandlerInterface;
28
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\CaptureOrderTransactionHandler;
29
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\CaptureOrderTransactionHandlerInterface;
30
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\PaymentTransactionHandler;
31
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\PaymentTransactionHandlerInterface;
32
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\CreateTransactionTransactionHandler;
0 ignored issues
show
Bug introduced by
The type SprykerEco\Zed\Braintree...ctionTransactionHandler 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...
33
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\CreateTransactionTransactionHandlerInterface;
0 ignored issues
show
Bug introduced by
The type SprykerEco\Zed\Braintree...sactionHandlerInterface 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...
34
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\PreCheckTransactionHandler;
35
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\PreCheckTransactionHandlerInterface;
36
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\RefundItemsTransactionHandler;
37
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\RefundItemsTransactionHandlerInterface;
38
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\RefundOrderTransactionHandler;
39
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\RefundOrderTransactionHandlerInterface;
40
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\RevertTransactionHandler;
41
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\RevertTransactionHandlerInterface;
42
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\ShipmentRefundTransactionHandler;
43
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\ShipmentRefundTransactionHandlerInterface;
44
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\ShipmentTransactionHandler;
45
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\ShipmentTransactionHandlerInterface;
46
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\MetaVisitor\PaymentTransactionMetaVisitor;
47
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\MetaVisitor\TransactionMetaVisitorComposite;
48
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\MetaVisitor\TransactionMetaVisitorInterface;
49
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\PaymentTransaction;
50
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\PreCheckTransaction;
51
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\RefundItemsTransaction;
52
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\RefundOrderTransaction;
53
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\RevertTransaction;
54
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\ShipmentRefundTransaction;
55
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\ShipmentTransaction;
56
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\TransactionInterface;
57
use SprykerEco\Zed\Braintree\Dependency\Facade\BraintreeToMoneyFacadeInterface;
58
use SprykerEco\Zed\Braintree\Dependency\Facade\BraintreeToRefundFacadeInterface;
59
use SprykerEco\Zed\Braintree\Dependency\Facade\BraintreeToSalesFacadeInterface;
60
61
/**
62
 * @method \SprykerEco\Zed\Braintree\Persistence\BraintreeQueryContainerInterface getQueryContainer()
63
 * @method \SprykerEco\Zed\Braintree\BraintreeConfig getConfig()
64
 * @method \SprykerEco\Zed\Braintree\Persistence\BraintreeRepositoryInterface getRepository()
65
 * @method \SprykerEco\Zed\Braintree\Persistence\BraintreeEntityManagerInterface getEntityManager()
66
 * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
67
 */
68
class BraintreeBusinessFactory extends AbstractBusinessFactory
69
{
70
    /**
71
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\AuthorizeTransactionHandlerInterface
72
     */
73
    public function createAuthorizeTransactionHandler(): AuthorizeTransactionHandlerInterface
74
    {
75
        return new AuthorizeTransactionHandler(
76
            $this->createAuthorizeTransaction(),
77
            $this->createDefaultTransactionMetaVisitor()
78
        );
79
    }
80
81
    /**
82
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\CaptureItemsTransactionHandlerInterface
83
     */
84
    public function createCaptureItemsTransactionHandler(): CaptureItemsTransactionHandlerInterface
85
    {
86
        return new CaptureItemsTransactionHandler(
87
            $this->createCaptureItemsTransaction(),
88
            $this->createDefaultTransactionMetaVisitor()
89
        );
90
    }
91
92
    /**
93
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\CaptureOrderTransactionHandlerInterface
94
     */
95
    public function createCaptureOrderTransactionHandler(): CaptureOrderTransactionHandlerInterface
96
    {
97
        return new CaptureOrderTransactionHandler(
98
            $this->createCaptureOrderTransaction(),
99
            $this->createDefaultTransactionMetaVisitor()
100
        );
101
    }
102
103
    /**
104
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\PreCheckTransactionHandlerInterface
105
     */
106
    public function createPreCheckTransactionHandler(): PreCheckTransactionHandlerInterface
107
    {
108
        return new PreCheckTransactionHandler(
109
            $this->createPreCheckTransaction(),
110
            $this->createDefaultTransactionMetaVisitor()
111
        );
112
    }
113
114
    /**
115
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\PaymentTransactionHandlerInterface
116
     */
117
    public function createPaymentTransactionHandler(): PaymentTransactionHandlerInterface
118
    {
119
        return new PaymentTransactionHandler(
120
            $this->createPaymentTransaction(),
121
            $this->createDefaultTransactionMetaVisitor()
122
        );
123
    }
124
125
    /**
126
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\RefundOrderTransactionHandlerInterface
127
     */
128
    public function createRefundOrderTransactionHandler(): RefundOrderTransactionHandlerInterface
129
    {
130
        return new RefundOrderTransactionHandler(
131
            $this->createRefundOrderTransaction(),
132
            $this->createDefaultTransactionMetaVisitor(),
133
            $this->getRefundFacade()
134
        );
135
    }
136
137
    /**
138
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\RefundItemsTransactionHandlerInterface
139
     */
140
    public function createRefundItemsTransactionHandler(): RefundItemsTransactionHandlerInterface
141
    {
142
        return new RefundItemsTransactionHandler(
143
            $this->createRefundItemsTransaction(),
144
            $this->createDefaultTransactionMetaVisitor(),
145
            $this->getRefundFacade(),
146
            $this->getRepository()
147
        );
148
    }
149
150
    /**
151
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\RevertTransactionHandlerInterface
152
     */
153
    public function createRevertTransactionHandler(): RevertTransactionHandlerInterface
154
    {
155
        return new RevertTransactionHandler(
156
            $this->createRevertTransaction(),
157
            $this->createDefaultTransactionMetaVisitor()
158
        );
159
    }
160
161
    /**
162
     * @return \SprykerEco\Zed\Braintree\Business\Order\SaverInterface
163
     */
164
    public function createOrderSaver(): SaverInterface
165
    {
166
        return new Saver();
167
    }
168
169
    /**
170
     * @return \SprykerEco\Zed\Braintree\Business\Log\TransactionStatusLogInterface
171
     */
172
    public function createTransactionStatusLog(): TransactionStatusLogInterface
173
    {
174
        return new TransactionStatusLog($this->getRepository());
175
    }
176
177
    /**
178
     * @return \SprykerEco\Zed\Braintree\Business\Hook\PostSaveHookInterface
179
     */
180
    public function createPostSaveHook(): PostSaveHookInterface
181
    {
182
        return new PostSaveHook($this->getRepository());
183
    }
184
185
    /**
186
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\TransactionInterface
187
     */
188
    public function createAuthorizeTransaction(): TransactionInterface
189
    {
190
        return new AuthorizeTransaction($this->getConfig());
191
    }
192
193
    /**
194
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\MetaVisitor\TransactionMetaVisitorInterface
195
     */
196
    public function createDefaultTransactionMetaVisitor(): TransactionMetaVisitorInterface
197
    {
198
        $transactionMetaVisitorComposite = $this->createTransactionMetaVisitorComposite();
199
        $transactionMetaVisitorComposite->addVisitor($this->createPaymentTransactionMetaVisitor());
200
201
        return $transactionMetaVisitorComposite;
202
    }
203
204
    /**
205
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\MetaVisitor\TransactionMetaVisitorInterface
206
     */
207
    public function createTransactionMetaVisitorComposite(): TransactionMetaVisitorInterface
208
    {
209
        return new TransactionMetaVisitorComposite();
210
    }
211
212
    /**
213
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\MetaVisitor\TransactionMetaVisitorInterface
214
     */
215
    public function createPaymentTransactionMetaVisitor(): TransactionMetaVisitorInterface
216
    {
217
        return new PaymentTransactionMetaVisitor($this->getRepository());
218
    }
219
220
    /**
221
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\TransactionInterface
222
     */
223
    public function createCaptureOrderTransaction(): TransactionInterface
224
    {
225
        return new CaptureOrderTransaction($this->getConfig());
226
    }
227
228
    /**
229
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\TransactionInterface
230
     */
231
    public function createCaptureItemsTransaction(): TransactionInterface
232
    {
233
        return new CaptureItemsTransaction(
234
            $this->getConfig(),
235
            $this->getMoneyFacade(),
236
            $this->getRepository(),
237
            $this->getEntityManager(),
238
            $this->getSalesFacade(),
239
            $this->createShipmentTransactionHandler()
240
        );
241
    }
242
243
    /**
244
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\TransactionInterface
245
     */
246
    public function createShipmentTransaction(): TransactionInterface
247
    {
248
        return new ShipmentTransaction(
249
            $this->getConfig(),
250
            $this->getEntityManager()
251
        );
252
    }
253
254
    /**
255
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\TransactionInterface
256
     */
257
    public function createShipmentRefundTransaction(): TransactionInterface
258
    {
259
        return new ShipmentRefundTransaction(
260
            $this->getConfig(),
261
            $this->getEntityManager()
262
        );
263
    }
264
265
    /**
266
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\ShipmentTransactionHandlerInterface
267
     */
268
    public function createShipmentTransactionHandler(): ShipmentTransactionHandlerInterface
269
    {
270
        return new ShipmentTransactionHandler(
271
            $this->createShipmentTransaction(),
272
            $this->createDefaultTransactionMetaVisitor()
273
        );
274
    }
275
276
    /**
277
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\ShipmentRefundTransactionHandlerInterface
278
     */
279
    public function createShipmentRefundTransactionHandler(): ShipmentRefundTransactionHandlerInterface
280
    {
281
        return new ShipmentRefundTransactionHandler(
282
            $this->createShipmentRefundTransaction(),
283
            $this->createDefaultTransactionMetaVisitor()
284
        );
285
    }
286
287
    /**
288
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\TransactionInterface
289
     */
290
    public function createPreCheckTransaction(): TransactionInterface
291
    {
292
        return new PreCheckTransaction($this->getConfig(), $this->getMoneyFacade());
293
    }
294
295
    /**
296
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\TransactionInterface
297
     */
298
    public function createPaymentTransaction(): TransactionInterface
299
    {
300
        return new PaymentTransaction($this->getConfig(), $this->getMoneyFacade());
301
    }
302
303
    /**
304
     * @return \SprykerEco\Zed\Braintree\Dependency\Facade\BraintreeToMoneyFacadeInterface
305
     */
306
    public function getMoneyFacade(): BraintreeToMoneyFacadeInterface
307
    {
308
        return $this->getProvidedDependency(BraintreeDependencyProvider::FACADE_MONEY);
309
    }
310
311
    /**
312
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\TransactionInterface
313
     */
314
    public function createRefundOrderTransaction(): TransactionInterface
315
    {
316
        return new RefundOrderTransaction(
317
            $this->getConfig(),
318
            $this->getMoneyFacade(),
319
            $this->createShipmentRefundTransactionHandler(),
320
            $this->getRepository()
321
        );
322
    }
323
324
    /**
325
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\TransactionInterface
326
     */
327
    public function createRefundItemsTransaction(): TransactionInterface
328
    {
329
        return new RefundItemsTransaction(
330
            $this->getConfig(),
331
            $this->getMoneyFacade(),
332
            $this->createShipmentRefundTransactionHandler(),
333
            $this->getRepository()
334
        );
335
    }
336
337
    /**
338
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\TransactionInterface
339
     */
340
    public function createRevertTransaction(): TransactionInterface
341
    {
342
        return new RevertTransaction($this->getConfig());
343
    }
344
345
    /**
346
     * @return \SprykerEco\Zed\Braintree\Dependency\Facade\BraintreeToRefundFacadeInterface
347
     */
348
    public function getRefundFacade(): BraintreeToRefundFacadeInterface
349
    {
350
        return $this->getProvidedDependency(BraintreeDependencyProvider::FACADE_REFUND);
351
    }
352
353
    /**
354
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Filter\PaypalExpressPaymentMethodFilterInterface
355
     */
356
    public function createPaypalExpressCheckoutPaymentMethod(): PaypalExpressPaymentMethodFilterInterface
357
    {
358
        return new PaypalExpressPaymentMethodFilter();
359
    }
360
361
    /**
362
     * @return \SprykerEco\Zed\Braintree\Dependency\Facade\BraintreeToSalesFacadeInterface
363
     */
364
    public function getSalesFacade(): BraintreeToSalesFacadeInterface
365
    {
366
        return $this->getProvidedDependency(BraintreeDependencyProvider::FACADE_SALES);
367
    }
368
}
369