Passed
Push — feature/paypal-express ( 95d04f...1b9976 )
by Volodymyr
05:14
created

createPaypalExpressCheckoutPaymentMethod()   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\CaptureTransaction;
22
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\AuthorizeTransactionHandler;
23
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\AuthorizeTransactionHandlerInterface;
24
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\CaptureTransactionHandler;
25
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\CaptureTransactionHandlerInterface;
26
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\PreCheckTransactionHandler;
27
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\PreCheckTransactionHandlerInterface;
28
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\RefundTransactionHandler;
29
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\RefundTransactionHandlerInterface;
30
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\RevertTransactionHandler;
31
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\RevertTransactionHandlerInterface;
32
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\MetaVisitor\PaymentTransactionMetaVisitor;
33
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\MetaVisitor\TransactionMetaVisitorComposite;
34
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\MetaVisitor\TransactionMetaVisitorInterface;
35
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\PreCheckTransaction;
36
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\RefundTransaction;
37
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\RevertTransaction;
38
use SprykerEco\Zed\Braintree\Business\Payment\Transaction\TransactionInterface;
39
use SprykerEco\Zed\Braintree\Dependency\Facade\BraintreeToMoneyFacadeInterface;
40
use SprykerEco\Zed\Braintree\Dependency\Facade\BraintreeToRefundFacadeInterface;
41
42
/**
43
 * @method \SprykerEco\Zed\Braintree\Persistence\BraintreeQueryContainerInterface getQueryContainer()
44
 * @method \SprykerEco\Zed\Braintree\BraintreeConfig getConfig()
45
 * @method \SprykerEco\Zed\Braintree\Persistence\BraintreeRepositoryInterface getRepository()
46
 * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
47
 */
48
class BraintreeBusinessFactory extends AbstractBusinessFactory
49
{
50
    /**
51
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\AuthorizeTransactionHandlerInterface
52
     */
53
    public function createAuthorizeTransactionHandler(): AuthorizeTransactionHandlerInterface
54
    {
55
        return new AuthorizeTransactionHandler(
56
            $this->createAuthorizeTransaction(),
57
            $this->createDefaultTransactionMetaVisitor()
58
        );
59
    }
60
61
    /**
62
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\CaptureTransactionHandlerInterface
63
     */
64
    public function createCaptureTransactionHandler(): CaptureTransactionHandlerInterface
65
    {
66
        return new CaptureTransactionHandler(
67
            $this->createCaptureTransaction(),
68
            $this->createDefaultTransactionMetaVisitor()
69
        );
70
    }
71
72
    /**
73
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\PreCheckTransactionHandlerInterface
74
     */
75
    public function createPreCheckTransactionHandler(): PreCheckTransactionHandlerInterface
76
    {
77
        return new PreCheckTransactionHandler(
78
            $this->createPreCheckTransaction(),
79
            $this->createDefaultTransactionMetaVisitor()
80
        );
81
    }
82
83
    /**
84
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\RefundTransactionHandlerInterface
85
     */
86
    public function createRefundTransactionHandler(): RefundTransactionHandlerInterface
87
    {
88
        return new RefundTransactionHandler(
89
            $this->createRefundTransaction(),
90
            $this->createDefaultTransactionMetaVisitor(),
91
            $this->getRefundFacade()
92
        );
93
    }
94
95
    /**
96
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\Handler\RevertTransactionHandlerInterface
97
     */
98
    public function createRevertTransactionHandler(): RevertTransactionHandlerInterface
99
    {
100
        return new RevertTransactionHandler(
101
            $this->createRevertTransaction(),
102
            $this->createDefaultTransactionMetaVisitor()
103
        );
104
    }
105
106
    /**
107
     * @return \SprykerEco\Zed\Braintree\Business\Order\SaverInterface
108
     */
109
    public function createOrderSaver(): SaverInterface
110
    {
111
        return new Saver();
112
    }
113
114
    /**
115
     * @return \SprykerEco\Zed\Braintree\Business\Log\TransactionStatusLogInterface
116
     */
117
    public function createTransactionStatusLog(): TransactionStatusLogInterface
118
    {
119
        return new TransactionStatusLog($this->getRepository());
120
    }
121
122
    /**
123
     * @return \SprykerEco\Zed\Braintree\Business\Hook\PostSaveHookInterface
124
     */
125
    public function createPostSaveHook(): PostSaveHookInterface
126
    {
127
        return new PostSaveHook($this->getRepository());
128
    }
129
130
    /**
131
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\TransactionInterface
132
     */
133
    public function createAuthorizeTransaction(): TransactionInterface
134
    {
135
        return new AuthorizeTransaction($this->getConfig());
136
    }
137
138
    /**
139
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\MetaVisitor\TransactionMetaVisitorInterface
140
     */
141
    public function createDefaultTransactionMetaVisitor(): TransactionMetaVisitorInterface
142
    {
143
        $transactionMetaVisitorComposite = $this->createTransactionMetaVisitorComposite();
144
        $transactionMetaVisitorComposite->addVisitor($this->createPaymentTransactionMetaVisitor());
145
146
        return $transactionMetaVisitorComposite;
147
    }
148
149
    /**
150
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\MetaVisitor\TransactionMetaVisitorInterface
151
     */
152
    public function createTransactionMetaVisitorComposite(): TransactionMetaVisitorInterface
153
    {
154
        return new TransactionMetaVisitorComposite();
155
    }
156
157
    /**
158
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\MetaVisitor\TransactionMetaVisitorInterface
159
     */
160
    public function createPaymentTransactionMetaVisitor(): TransactionMetaVisitorInterface
161
    {
162
        return new PaymentTransactionMetaVisitor($this->getRepository());
163
    }
164
165
    /**
166
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\TransactionInterface
167
     */
168
    public function createCaptureTransaction(): TransactionInterface
169
    {
170
        return new CaptureTransaction($this->getConfig());
171
    }
172
173
    /**
174
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\TransactionInterface
175
     */
176
    public function createPreCheckTransaction(): TransactionInterface
177
    {
178
        return new PreCheckTransaction($this->getConfig(), $this->getMoneyFacade());
179
    }
180
181
    /**
182
     * @return \SprykerEco\Zed\Braintree\Dependency\Facade\BraintreeToMoneyFacadeInterface
183
     */
184
    public function getMoneyFacade(): BraintreeToMoneyFacadeInterface
185
    {
186
        return $this->getProvidedDependency(BraintreeDependencyProvider::FACADE_MONEY);
187
    }
188
189
    /**
190
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\TransactionInterface
191
     */
192
    public function createRefundTransaction(): TransactionInterface
193
    {
194
        return new RefundTransaction($this->getConfig(), $this->getMoneyFacade());
195
    }
196
197
    /**
198
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Transaction\TransactionInterface
199
     */
200
    public function createRevertTransaction(): TransactionInterface
201
    {
202
        return new RevertTransaction($this->getConfig());
203
    }
204
205
    /**
206
     * @return \SprykerEco\Zed\Braintree\Dependency\Facade\BraintreeToRefundFacadeInterface
207
     */
208
    public function getRefundFacade(): BraintreeToRefundFacadeInterface
209
    {
210
        return $this->getProvidedDependency(BraintreeDependencyProvider::FACADE_REFUND);
211
    }
212
213
    /**
214
     * @return \SprykerEco\Zed\Braintree\Business\Payment\Filter\PaypalExpressPaymentMethodFilterInterface
215
     */
216
    public function createPaypalExpressCheckoutPaymentMethod(): PaypalExpressPaymentMethodFilterInterface
217
    {
218
        return new PaypalExpressPaymentMethodFilter();
219
    }
220
}
221