Passed
Push — feature/eco-3047/eco-3049-invo... ( e2d4f4...a8a84e )
by Volodymyr
06:36
created

HeidelpayFactory::createInvoiceSecuredB2CSubForm()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 3
c 0
b 0
f 0
rs 10
cc 1
nc 1
nop 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\Yves\Heidelpay;
9
10
use Spryker\Shared\Money\Dependency\Plugin\MoneyPluginInterface;
11
use Spryker\Yves\Kernel\AbstractFactory;
12
use Spryker\Yves\StepEngine\Dependency\Form\StepEngineFormDataProviderInterface;
13
use Spryker\Yves\StepEngine\Dependency\Form\SubFormInterface;
14
use SprykerEco\Client\Heidelpay\HeidelpayClientInterface;
15
use SprykerEco\Yves\Heidelpay\Dependency\Client\HeidelpayToCalculationClientInterface;
16
use SprykerEco\Yves\Heidelpay\Dependency\Client\HeidelpayToQuoteClientInterface;
17
use SprykerEco\Yves\Heidelpay\Form\CreditCardSecureSubForm;
18
use SprykerEco\Yves\Heidelpay\Form\DataProvider\CreditCardSecureDataProvider;
19
use SprykerEco\Yves\Heidelpay\Form\DataProvider\EasyCreditDataProvider;
20
use SprykerEco\Yves\Heidelpay\Form\DataProvider\IdealDataProvider;
21
use SprykerEco\Yves\Heidelpay\Form\DataProvider\InvoiceSecuredB2CDataProvider;
22
use SprykerEco\Yves\Heidelpay\Form\DataProvider\PaypalAuthorizeDataProvider;
23
use SprykerEco\Yves\Heidelpay\Form\DataProvider\PaypalDebitDataProvider;
24
use SprykerEco\Yves\Heidelpay\Form\DataProvider\SofortDataProvider;
25
use SprykerEco\Yves\Heidelpay\Form\EasyCreditSubForm;
26
use SprykerEco\Yves\Heidelpay\Form\IdealSubForm;
27
use SprykerEco\Yves\Heidelpay\Form\InvoiceSecuredB2CSubForm;
28
use SprykerEco\Yves\Heidelpay\Form\PaypalAuthorizeSubForm;
29
use SprykerEco\Yves\Heidelpay\Form\PaypalDebitSubForm;
30
use SprykerEco\Yves\Heidelpay\Form\SofortSubForm;
31
use SprykerEco\Yves\Heidelpay\Handler\HeidelpayCreditCardHandler;
32
use SprykerEco\Yves\Heidelpay\Handler\HeidelpayHandler;
33
use SprykerEco\Yves\Heidelpay\Handler\HeidelpayHandlerInterface;
34
use SprykerEco\Yves\Heidelpay\Handler\PaymentFailureHandler;
35
use SprykerEco\Yves\Heidelpay\Handler\PaymentFailureHandlerInterface;
36
use SprykerEco\Yves\Heidelpay\Hydrator\CreditCardPaymentOptionsToQuote;
37
use SprykerEco\Yves\Heidelpay\Hydrator\CreditCardPaymentOptionsToQuoteInterface;
38
use SprykerEco\Yves\Heidelpay\Hydrator\EasyCreditResponseToQuoteHydrator;
39
use SprykerEco\Yves\Heidelpay\Hydrator\EasyCreditResponseToQuoteHydratorInterface;
40
use SprykerEco\Yves\Heidelpay\Hydrator\RegistrationToQuoteHydrator;
41
use SprykerEco\Yves\Heidelpay\Hydrator\RegistrationToQuoteHydratorInterface;
42
use SprykerEco\Yves\Heidelpay\Mapper\EasyCreditResponseToGetParametersMapper;
43
use SprykerEco\Yves\Heidelpay\Mapper\EasyCreditResponseToGetParametersMapperInterface;
44
use SprykerEco\Yves\Heidelpay\Mapper\HeidelpayResponseToIdealAuthorizeForm;
45
use SprykerEco\Yves\Heidelpay\Mapper\HeidelpayResponseToIdealAuthorizeFormInterface;
46
47
/**
48
 * @method \SprykerEco\Yves\Heidelpay\HeidelpayConfig getConfig()
49
 */
50
class HeidelpayFactory extends AbstractFactory
51
{
52
    /**
53
     * @return \SprykerEco\Yves\Heidelpay\Handler\HeidelpayHandlerInterface
54
     */
55
    public function createHeidelpayHandler(): HeidelpayHandlerInterface
56
    {
57
        return new HeidelpayHandler();
58
    }
59
60
    /**
61
     * @return \SprykerEco\Yves\Heidelpay\Handler\HeidelpayHandlerInterface
62
     */
63
    public function createHeidelpayCreditCardHandler(): HeidelpayHandlerInterface
64
    {
65
        return new HeidelpayCreditCardHandler(
66
            $this->getCalculationClient(),
67
            $this->getQuoteClient()
68
        );
69
    }
70
71
    /**
72
     * @return \SprykerEco\Yves\Heidelpay\Handler\PaymentFailureHandlerInterface
73
     */
74
    public function createPaymentFailureHandler(): PaymentFailureHandlerInterface
75
    {
76
        return new PaymentFailureHandler(
77
            $this->getHeidelpayClient(),
78
            $this->getConfig()
79
        );
80
    }
81
82
    /**
83
     * @return \Spryker\Yves\StepEngine\Dependency\Form\SubFormInterface
84
     */
85
    public function createSofortForm(): SubFormInterface
86
    {
87
        return new SofortSubForm();
88
    }
89
90
    /**
91
     * @return \Spryker\Yves\StepEngine\Dependency\Form\SubFormInterface
92
     */
93
    public function createIdealForm(): SubFormInterface
94
    {
95
        return new IdealSubForm();
96
    }
97
98
    /**
99
     * @return \Spryker\Yves\StepEngine\Dependency\Form\SubFormInterface
100
     */
101
    public function createCreditCardSecureForm(): SubFormInterface
102
    {
103
        return new CreditCardSecureSubForm();
104
    }
105
106
    /**
107
     * @return \Spryker\Yves\StepEngine\Dependency\Form\SubFormInterface
108
     */
109
    public function createEasyCreditForm(): SubFormInterface
110
    {
111
        return new EasyCreditSubForm();
112
    }
113
114
    /**
115
     * @return \Spryker\Yves\StepEngine\Dependency\Form\SubFormInterface
116
     */
117
    public function createPaypalAuthorizeForm(): SubFormInterface
118
    {
119
        return new PaypalAuthorizeSubForm();
120
    }
121
122
    /**
123
     * @return \Spryker\Yves\StepEngine\Dependency\Form\SubFormInterface
124
     */
125
    public function createPaypalDebitForm(): SubFormInterface
126
    {
127
        return new PaypalDebitSubForm();
128
    }
129
130
    /**
131
     * @return \Spryker\Yves\StepEngine\Dependency\Form\SubFormInterface
132
     */
133
    public function createInvoiceSecuredB2CSubForm(): SubFormInterface
134
    {
135
        return new InvoiceSecuredB2CSubForm();
136
    }
137
138
    /**
139
     * @return \Spryker\Yves\StepEngine\Dependency\Form\StepEngineFormDataProviderInterface
140
     */
141
    public function createSofortFormDataProvider(): StepEngineFormDataProviderInterface
142
    {
143
        return new SofortDataProvider();
144
    }
145
146
    /**
147
     * @return \Spryker\Yves\StepEngine\Dependency\Form\StepEngineFormDataProviderInterface
148
     */
149
    public function createIdealFormDataProvider(): StepEngineFormDataProviderInterface
150
    {
151
        return new IdealDataProvider();
152
    }
153
154
    /**
155
     * @return \Spryker\Yves\StepEngine\Dependency\Form\StepEngineFormDataProviderInterface
156
     */
157
    public function createCreditCardSecureFormDataProvider(): StepEngineFormDataProviderInterface
158
    {
159
        return new CreditCardSecureDataProvider(
160
            $this->createCreditCardPaymentOptionsToQuoteHydrator()
161
        );
162
    }
163
164
    /**
165
     * @return \Spryker\Yves\StepEngine\Dependency\Form\StepEngineFormDataProviderInterface
166
     */
167
    public function createPaypalAuthorizeFormDataProvider(): StepEngineFormDataProviderInterface
168
    {
169
        return new PaypalAuthorizeDataProvider();
170
    }
171
172
    /**
173
     * @return \Spryker\Yves\StepEngine\Dependency\Form\StepEngineFormDataProviderInterface
174
     */
175
    public function createPaypalDebitFormDataProvider(): StepEngineFormDataProviderInterface
176
    {
177
        return new PaypalDebitDataProvider();
178
    }
179
180
    /**
181
     * @return \Spryker\Yves\StepEngine\Dependency\Form\StepEngineFormDataProviderInterface
182
     */
183
    public function createEasyCreditFormDataProvider(): StepEngineFormDataProviderInterface
184
    {
185
        return new EasyCreditDataProvider($this->getConfig());
186
    }
187
188
    /**
189
     * @return \Spryker\Yves\StepEngine\Dependency\Form\StepEngineFormDataProviderInterface
190
     */
191
    public function createInvoiceSecuredB2CDataProvider(): StepEngineFormDataProviderInterface
192
    {
193
        return new InvoiceSecuredB2CDataProvider();
194
    }
195
196
    /**
197
     * @return \SprykerEco\Client\Heidelpay\HeidelpayClientInterface
198
     */
199
    public function getHeidelpayClient(): HeidelpayClientInterface
200
    {
201
        return $this->getProvidedDependency(HeidelpayDependencyProvider::CLIENT_HEIDELPAY);
202
    }
203
204
    /**
205
     * @return \SprykerEco\Yves\Heidelpay\Dependency\Client\HeidelpayToCalculationClientInterface
206
     */
207
    public function getCalculationClient(): HeidelpayToCalculationClientInterface
208
    {
209
        return $this->getProvidedDependency(HeidelpayDependencyProvider::CLIENT_CALCULATION);
210
    }
211
212
    /**
213
     * @return \Spryker\Shared\Money\Dependency\Plugin\MoneyPluginInterface
214
     */
215
    public function getMoneyClient(): MoneyPluginInterface
216
    {
217
        return $this->getProvidedDependency(HeidelpayDependencyProvider::PLUGIN_MONEY);
218
    }
219
220
    /**
221
     * @return \SprykerEco\Yves\Heidelpay\Dependency\Client\HeidelpayToQuoteClientInterface
222
     */
223
    public function getQuoteClient(): HeidelpayToQuoteClientInterface
224
    {
225
        return $this->getProvidedDependency(HeidelpayDependencyProvider::CLIENT_QUOTE);
226
    }
227
228
    /**
229
     * @return \SprykerEco\Yves\Heidelpay\Mapper\HeidelpayResponseToIdealAuthorizeFormInterface
230
     */
231
    public function createHeidelpayResponseToIdealAuthorizeFormMapper(): HeidelpayResponseToIdealAuthorizeFormInterface
232
    {
233
        return new HeidelpayResponseToIdealAuthorizeForm();
234
    }
235
236
    /**
237
     * @return \SprykerEco\Yves\Heidelpay\Hydrator\RegistrationToQuoteHydratorInterface
238
     */
239
    public function createCreditCardRegistrationToQuoteHydrator(): RegistrationToQuoteHydratorInterface
240
    {
241
        return new RegistrationToQuoteHydrator(
242
            $this->createHeidelpayCreditCardHandler()
243
        );
244
    }
245
246
    /**
247
     * @return \SprykerEco\Yves\Heidelpay\Hydrator\EasyCreditResponseToQuoteHydratorInterface
248
     */
249
    public function createEasyCreditResponseToQuoteHydrator(): EasyCreditResponseToQuoteHydratorInterface
250
    {
251
        return new EasyCreditResponseToQuoteHydrator($this->getMoneyClient());
252
    }
253
254
    /**
255
     * @return \SprykerEco\Yves\Heidelpay\Mapper\EasyCreditResponseToGetParametersMapperInterface
256
     */
257
    public function createEasyCreditResponseToGetParametersMapper(): EasyCreditResponseToGetParametersMapperInterface
258
    {
259
        return new EasyCreditResponseToGetParametersMapper();
260
    }
261
262
    /**
263
     * @return \SprykerEco\Yves\Heidelpay\HeidelpayConfigInterface
264
     */
265
    public function getYvesConfig(): HeidelpayConfigInterface
266
    {
267
        return $this->getConfig();
268
    }
269
270
    /**
271
     * @return \SprykerEco\Yves\Heidelpay\Hydrator\CreditCardPaymentOptionsToQuoteInterface
272
     */
273
    public function createCreditCardPaymentOptionsToQuoteHydrator(): CreditCardPaymentOptionsToQuoteInterface
274
    {
275
        return new CreditCardPaymentOptionsToQuote(
276
            $this->getHeidelpayClient()
277
        );
278
    }
279
}
280