BraintreeDependencyProvider::provideDependencies()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 16
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 13
nc 1
nop 1
dl 0
loc 16
rs 9.8333
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\Yves\Braintree;
9
10
use Spryker\Shared\Kernel\Store;
11
use Spryker\Yves\Currency\Plugin\CurrencyPlugin;
12
use Spryker\Yves\Kernel\AbstractBundleDependencyProvider;
13
use Spryker\Yves\Kernel\Container;
14
use SprykerEco\Yves\Braintree\Dependency\Client\BraintreeToCalculationClientBridge;
15
use SprykerEco\Yves\Braintree\Dependency\Client\BraintreeToCountryClientBridge;
16
use SprykerEco\Yves\Braintree\Dependency\Client\BraintreeToGlossaryClientBridge;
17
use SprykerEco\Yves\Braintree\Dependency\Client\BraintreeToMessengerClientBridge;
18
use SprykerEco\Yves\Braintree\Dependency\Client\BraintreeToPaymentClientBridge;
19
use SprykerEco\Yves\Braintree\Dependency\Client\BraintreeToQuoteClientBridge;
20
use SprykerEco\Yves\Braintree\Dependency\Client\BraintreeToShipmentClientBridge;
21
use SprykerEco\Yves\Braintree\Dependency\Service\BraintreeToUtilEncodingServiceBridge;
22
use SprykerShop\Yves\CheckoutPage\Plugin\ShipmentHandlerPlugin;
23
use SprykerShop\Yves\MoneyWidget\Plugin\MoneyPlugin;
24
25
class BraintreeDependencyProvider extends AbstractBundleDependencyProvider
26
{
27
    public const PLUGIN_CURRENCY = 'PLUGIN_CURRENCY';
28
29
    public const CLIENT_QUOTE = 'CLIENT_QUOTE';
30
    public const CLIENT_PAYMENT = 'CLIENT_PAYMENT';
31
    public const CLIENT_SHIPMENT = 'CLIENT_SHIPMENT';
32
    public const CLIENT_GLOSSARY = 'CLIENT_GLOSSARY';
33
    public const CLIENT_CALCULATION = 'CLIENT_CALCULATION';
34
    public const CLIENT_COUNTRY = 'CLIENT_COUNTRY';
35
    public const CLIENT_MESSENGER = 'CLIENT_MESSENGER';
36
37
    public const SERVICE_UTIL_ENCODING = 'SERVICE_UTIL_ENCODING';
38
39
    public const PLUGIN_MONEY = 'PLUGIN_MONEY';
40
    public const PLUGIN_SHIPMENT_HANDLER = 'PLUGIN_SHIPMENT_HANDLER';
41
42
    public const STORE = 'STORE';
43
44
    /**
45
     * @param \Spryker\Yves\Kernel\Container $container
46
     *
47
     * @return \Spryker\Yves\Kernel\Container
48
     */
49
    public function provideDependencies(Container $container): Container
50
    {
51
        $container = $this->addCurrencyPlugin($container);
52
        $container = $this->addQuoteClient($container);
53
        $container = $this->addUtilEncodingService($container);
54
        $container = $this->addPaymentClient($container);
55
        $container = $this->addShipmentClient($container);
56
        $container = $this->addGlossaryClient($container);
57
        $container = $this->addMoneyPlugin($container);
58
        $container = $this->addCountryClient($container);
59
        $container = $this->addShipmentHandlerPlugin($container);
60
        $container = $this->addStore($container);
61
        $container = $this->addCalculationClient($container);
62
        $container = $this->addMessengerClient($container);
63
64
        return $container;
65
    }
66
67
    /**
68
     * @param \Spryker\Yves\Kernel\Container $container
69
     *
70
     * @return \Spryker\Yves\Kernel\Container
71
     */
72
    protected function addCurrencyPlugin(Container $container): Container
73
    {
74
        $container->set(static::PLUGIN_CURRENCY, function () {
75
            return new CurrencyPlugin();
76
        });
77
78
        return $container;
79
    }
80
81
    /**
82
     * @param \Spryker\Yves\Kernel\Container $container
83
     *
84
     * @return \Spryker\Yves\Kernel\Container
85
     */
86
    protected function addQuoteClient(Container $container): Container
87
    {
88
        $container->set(static::CLIENT_QUOTE, function (Container $container) {
89
            return new BraintreeToQuoteClientBridge($container->getLocator()->quote()->client());
90
        });
91
92
        return $container;
93
    }
94
95
    /**
96
     * @param \Spryker\Yves\Kernel\Container $container
97
     *
98
     * @return \Spryker\Yves\Kernel\Container
99
     */
100
    protected function addUtilEncodingService(Container $container): Container
101
    {
102
        $container->set(static::SERVICE_UTIL_ENCODING, function (Container $container) {
103
            return new BraintreeToUtilEncodingServiceBridge($container->getLocator()->utilEncoding()->service());
104
        });
105
106
        return $container;
107
    }
108
109
    /**
110
     * @param \Spryker\Yves\Kernel\Container $container
111
     *
112
     * @return \Spryker\Yves\Kernel\Container
113
     */
114
    protected function addPaymentClient(Container $container): Container
115
    {
116
        $container->set(static::CLIENT_PAYMENT, function (Container $container) {
117
            return new BraintreeToPaymentClientBridge($container->getLocator()->payment()->client());
118
        });
119
120
        return $container;
121
    }
122
123
    /**
124
     * @param \Spryker\Yves\Kernel\Container $container
125
     *
126
     * @return \Spryker\Yves\Kernel\Container
127
     */
128
    protected function addShipmentClient(Container $container): Container
129
    {
130
        $container->set(static::CLIENT_SHIPMENT, function (Container $container) {
131
            return new BraintreeToShipmentClientBridge($container->getLocator()->shipment()->client());
132
        });
133
134
        return $container;
135
    }
136
137
    /**
138
     * @param \Spryker\Yves\Kernel\Container $container
139
     *
140
     * @return \Spryker\Yves\Kernel\Container
141
     */
142
    protected function addGlossaryClient(Container $container): Container
143
    {
144
        $container->set(static::CLIENT_GLOSSARY, function (Container $container) {
145
            return new BraintreeToGlossaryClientBridge($container->getLocator()->glossary()->client());
146
        });
147
148
        return $container;
149
    }
150
151
    /**
152
     * @param \Spryker\Yves\Kernel\Container $container
153
     *
154
     * @return \Spryker\Yves\Kernel\Container
155
     */
156
    protected function addCalculationClient(Container $container): Container
157
    {
158
        $container->set(static::CLIENT_CALCULATION, function (Container $container) {
159
            return new BraintreeToCalculationClientBridge($container->getLocator()->calculation()->client());
160
        });
161
162
        return $container;
163
    }
164
165
    /**
166
     * @param \Spryker\Yves\Kernel\Container $container
167
     *
168
     * @return \Spryker\Yves\Kernel\Container
169
     */
170
    protected function addCountryClient(Container $container): Container
171
    {
172
        $container->set(static::CLIENT_COUNTRY, function (Container $container) {
173
            return new BraintreeToCountryClientBridge($container->getLocator()->country()->client());
174
        });
175
176
        return $container;
177
    }
178
179
    /**
180
     * @param \Spryker\Yves\Kernel\Container $container
181
     *
182
     * @return \Spryker\Yves\Kernel\Container
183
     */
184
    protected function addStore(Container $container): Container
185
    {
186
        $container->set(static::STORE, function () {
187
            return Store::getInstance();
188
        });
189
190
        return $container;
191
    }
192
193
    /**
194
     * @param \Spryker\Yves\Kernel\Container $container
195
     *
196
     * @return \Spryker\Yves\Kernel\Container
197
     */
198
    protected function addMoneyPlugin(Container $container): Container
199
    {
200
        $container->set(static::PLUGIN_MONEY, function () {
201
            return new MoneyPlugin();
202
        });
203
204
        return $container;
205
    }
206
207
    /**
208
     * @param \Spryker\Yves\Kernel\Container $container
209
     *
210
     * @return \Spryker\Yves\Kernel\Container
211
     */
212
    protected function addShipmentHandlerPlugin(Container $container): Container
213
    {
214
        $container->set(static::PLUGIN_SHIPMENT_HANDLER, function () {
215
            return new ShipmentHandlerPlugin();
216
        });
217
218
        return $container;
219
    }
220
221
    /**
222
     * @param \Spryker\Yves\Kernel\Container $container
223
     *
224
     * @return \Spryker\Yves\Kernel\Container
225
     */
226
    protected function addMessengerClient(Container $container): Container
227
    {
228
        $container->set(static::CLIENT_MESSENGER, function (Container $container) {
229
            return new BraintreeToMessengerClientBridge($container->getLocator()->messenger()->client());
230
        });
231
232
        return $container;
233
    }
234
}
235