Completed
Pull Request — master (#32)
by Artem
09:58 queued 05:49
created

createCheckoutPaymentPluginExecutor()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

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