Passed
Push — feature/paypal-express ( aa383f...32ec15 )
by Volodymyr
05:03
created

createShipmentTransaction()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

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