Passed
Push — feature/amazon-psd2-adjustment... ( 3d1991...53e91f )
by
unknown
12:12 queued 04:16
created

AmazonPayBusinessFactory::createPlacement()   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
 * Apache OSL-2
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerEco\Zed\AmazonPay\Business;
9
10
use Spryker\Zed\Kernel\Business\AbstractBusinessFactory;
11
use SprykerEco\Shared\AmazonPay\AmazonPayConfig;
12
use SprykerEco\Zed\AmazonPay\AmazonPayDependencyProvider;
13
use SprykerEco\Zed\AmazonPay\Business\Api\Adapter\AdapterFactory;
14
use SprykerEco\Zed\AmazonPay\Business\Api\Converter\ConverterFactory;
15
use SprykerEco\Zed\AmazonPay\Business\Converter\AmazonPayConverter;
16
use SprykerEco\Zed\AmazonPay\Business\Converter\AmazonPayTransferToEntityConverter;
17
use SprykerEco\Zed\AmazonPay\Business\Order\AmazonpayOrderInfoHydrator;
18
use SprykerEco\Zed\AmazonPay\Business\Order\PaymentProcessorModel;
19
use SprykerEco\Zed\AmazonPay\Business\Order\Placement;
20
use SprykerEco\Zed\AmazonPay\Business\Order\RefundOrderModel;
21
use SprykerEco\Zed\AmazonPay\Business\Order\RelatedItemsUpdateModel;
22
use SprykerEco\Zed\AmazonPay\Business\Order\Saver;
23
use SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Ipn\IpnFactory;
24
use SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\Logger\TransactionLogger;
25
use SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\TransactionFactory;
26
use SprykerEco\Zed\AmazonPay\Business\Quote\QuoteUpdateFactory;
27
28
/**
29
 * @method \SprykerEco\Zed\AmazonPay\Persistence\AmazonPayQueryContainerInterface getQueryContainer()
30
 */
31
class AmazonPayBusinessFactory extends AbstractBusinessFactory
32
{
33
    /**
34
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\TransactionFactoryInterface
35
     */
36
    public function createTransactionFactory()
37
    {
38
        return new TransactionFactory(
39
            $this->createAdapterFactory(),
40
            $this->createAmazonpayConfig(),
41
            $this->createTransactionLogger(),
42
            $this->createAmazonpayConverter(),
43
            $this->createAmazonpayTransferToEntityConverter(),
44
            $this->createRefundOrderModel(),
45
            $this->createPaymentProcessorModel()
46
        );
47
    }
48
49
    /**
50
     * @return \SprykerEco\Shared\AmazonPay\AmazonPayConfigInterface
51
     */
52
    public function createAmazonpayConfig()
53
    {
54
        return new AmazonPayConfig();
55
    }
56
57
    /**
58
     * @return \SprykerEco\Zed\AmazonPay\Business\Quote\QuoteUpdateFactoryInterface
59
     */
60
    public function createQuoteUpdateFactory()
61
    {
62
        return new QuoteUpdateFactory(
63
            $this->createAdapterFactory(),
64
            $this->getShipmentFacade()
65
        );
66
    }
67
68
    /**
69
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Ipn\IpnFactoryInterface
70
     */
71
    public function createIpnFactory()
72
    {
73
        return new IpnFactory(
74
            $this->getOmsFacade(),
75
            $this->getQueryContainer(),
76
            $this->getUtilEncodingService(),
77
            $this->createRefundOrderModel(),
78
            $this->createAmazonpayConfig()
79
        );
80
    }
81
82
    /**
83
     * @return \SprykerEco\Zed\AmazonPay\Dependency\Facade\AmazonPayToRefundInterface
84
     */
85
    public function getRefundFacade()
86
    {
87
        return $this->getProvidedDependency(AmazonPayDependencyProvider::FACADE_REFUND);
88
    }
89
90
    /**
91
     * @return \SprykerEco\Zed\AmazonPay\Dependency\Facade\AmazonPayToMoneyInterface
92
     */
93
    protected function getMoneyFacade()
94
    {
95
        return $this->getProvidedDependency(AmazonPayDependencyProvider::FACADE_MONEY);
96
    }
97
98
    /**
99
     * @return \SprykerEco\Zed\AmazonPay\Dependency\Facade\AmazonPayToOmsInterface
100
     */
101
    protected function getOmsFacade()
102
    {
103
        return $this->getProvidedDependency(AmazonPayDependencyProvider::FACADE_OMS);
104
    }
105
106
    /**
107
     * @return \SprykerEco\Zed\AmazonPay\Dependency\Facade\AmazonPayToShipmentInterface
108
     */
109
    protected function getShipmentFacade()
110
    {
111
        return $this->getProvidedDependency(AmazonPayDependencyProvider::FACADE_SHIPMENT);
112
    }
113
114
    /**
115
     * @return \SprykerEco\Zed\AmazonPay\Dependency\Facade\AmazonPayToUtilEncodingInterface
116
     */
117
    protected function getUtilEncodingService()
118
    {
119
        return $this->getProvidedDependency(AmazonPayDependencyProvider::SERVICE_UTIL_ENCODING);
120
    }
121
122
   /**
123
    * @return \SprykerEco\Zed\AmazonPay\Business\Api\Adapter\AdapterFactoryInterface
124
    */
125
    public function createAdapterFactory()
126
    {
127
        return new AdapterFactory(
128
            $this->createAmazonpayConfig(),
129
            $this->createConverterFactory(),
130
            $this->getMoneyFacade()
131
        );
132
    }
133
134
    /**
135
     * @return \SprykerEco\Zed\AmazonPay\Business\Api\Converter\ConverterFactoryInterface
136
     */
137
    protected function createConverterFactory()
138
    {
139
        return new ConverterFactory();
140
    }
141
142
    /**
143
     * @return \SprykerEco\Zed\AmazonPay\Business\Order\SaverInterface
144
     */
145
    public function createOrderSaver()
146
    {
147
        return new Saver();
148
    }
149
150
    /**
151
     * @return \SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction\Logger\TransactionLoggerInterface
152
     */
153
    public function createTransactionLogger()
154
    {
155
        return new TransactionLogger($this->createAmazonpayConfig());
156
    }
157
158
    /**
159
     * @return \SprykerEco\Zed\AmazonPay\Dependency\Facade\AmazonPayToSalesInterface
160
     */
161
    public function getSalesFacade()
162
    {
163
        return $this->getProvidedDependency(
164
            AmazonPayDependencyProvider::FACADE_SALES
165
        );
166
    }
167
168
    /**
169
     * @return \SprykerEco\Zed\AmazonPay\Business\Converter\AmazonPayConverterInterface
170
     */
171
    protected function createAmazonpayConverter()
172
    {
173
        return new AmazonPayConverter();
174
    }
175
176
    /**
177
     * @return \SprykerEco\Zed\AmazonPay\Business\Converter\AmazonPayTransferToEntityConverterInterface
178
     */
179
    protected function createAmazonpayTransferToEntityConverter()
180
    {
181
        return new AmazonPayTransferToEntityConverter();
182
    }
183
184
    /**
185
     * @return \SprykerEco\Zed\AmazonPay\Business\Order\RefundOrderInterface
186
     */
187
    protected function createRefundOrderModel()
188
    {
189
        return new RefundOrderModel($this->getRefundFacade());
190
    }
191
192
    /**
193
     * @return \SprykerEco\Zed\AmazonPay\Business\Order\AmazonpayOrderInfoHydratorInterface
194
     */
195
    public function createAmazonpayOrderInfoHydrator()
196
    {
197
        return new AmazonpayOrderInfoHydrator(
198
            $this->getQueryContainer()
199
        );
200
    }
201
202
    /**
203
     * @return \SprykerEco\Zed\AmazonPay\Business\Order\RelatedItemsUpdateInterface
204
     */
205
    public function createRelatedItemsUpdateModel()
206
    {
207
        return new RelatedItemsUpdateModel(
208
            $this->getQueryContainer(),
209
            $this->getOmsFacade()
210
        );
211
    }
212
213
    /**
214
     * @return \SprykerEco\Zed\AmazonPay\Business\Order\PaymentProcessorInterface
215
     */
216
    protected function createPaymentProcessorModel()
217
    {
218
        return new PaymentProcessorModel(
219
            $this->getQueryContainer(),
220
            $this->createAmazonpayTransferToEntityConverter()
221
        );
222
    }
223
224
    /**
225
     * @return \SprykerEco\Zed\AmazonPay\Business\Order\PlacementInterface
226
     */
227
    public function createPlacement()
228
    {
229
        return new Placement(
230
            $this->createTransactionFactory()
231
                ->createConfirmPurchaseTransaction()
232
        );
233
    }
234
}
235