Passed
Push — feature/eco-3047/eco-3049-invo... ( f43a85...77480f )
by Aleksey
06:55
created

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