1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
servicecontainer.php
См. документацию.
1<?php
2
3namespace Sale\Handlers\Delivery\YandexTaxi;
4
5use Bitrix\Main\Config\Option;
6use Sale\Handlers\Delivery\YandexTaxi\Api\Api;
7use Sale\Handlers\Delivery\YandexTaxi\Api\ApiResult\Journal\EventBuilder;
8use Sale\Handlers\Delivery\YandexTaxi\Api\ClaimReader\ClaimReader;
9use Sale\Handlers\Delivery\YandexTaxi\Api\Transport\Client;
10use Sale\Handlers\Delivery\YandexTaxi\Api\Transport\OauthTokenProvider;
11use Sale\Handlers\Delivery\YandexTaxi\Api\Tariffs\Repository;
12use Sale\Handlers\Delivery\YandexTaxi\ClaimBuilder\ClaimBuilder;
13use Sale\Handlers\Delivery\YandexTaxi\Common\Logger;
14use Sale\Handlers\Delivery\YandexTaxi\Common\ReferralSourceBuilder;
15use Sale\Handlers\Delivery\YandexTaxi\Common\RegionCoordinatesMapper;
16use Sale\Handlers\Delivery\YandexTaxi\Common\RegionFinder;
17use Sale\Handlers\Delivery\YandexTaxi\Common\TariffNameBuilder;
18use Sale\Handlers\Delivery\YandexTaxi\EventJournal\JournalProcessor;
19use Sale\Handlers\Delivery\YandexTaxi\EventJournal\EventProcessor;
20use Sale\Handlers\Delivery\YandexTaxi\EventJournal\EventReader;
21use Sale\Handlers\Delivery\YandexTaxi\Installer\Installer;
22
28final class ServiceContainer
29{
31 private static $api;
32
34 private static $oauthTokenProvider;
35
37 private static $claimReader;
38
40 private static $eventJournalBuilder;
41
43 private static $logger;
44
46 private static $transport;
47
49 private static $journalProcessor;
50
52 private static $eventReader;
53
55 private static $eventProcessor;
56
58 private static $rateCalculator;
59
61 private static $tariffsChecker;
62
64 private static $installer;
65
67 private static $claimBuilder;
68
70 private static $regionFinder;
71
73 private static $regionCoordinatesMapper;
74
76 private static $tariffsRepository;
77
79 private static $referralSourceBuilder;
80
82 private static $tariffNameBuilder;
83
87 private static function getLogger(): Logger
88 {
89 if (is_null(static::$logger))
90 {
91 static::$logger = new Logger();
92 }
93
94 return static::$logger;
95 }
96
100 private static function getClaimReader(): ClaimReader
101 {
102 if (is_null(static::$claimReader))
103 {
104 static::$claimReader = new ClaimReader();
105 }
106
107 return static::$claimReader;
108 }
109
113 private static function getEventJournalBuilder(): EventBuilder
114 {
115 if (is_null(static::$eventJournalBuilder))
116 {
117 static::$eventJournalBuilder = new EventBuilder();
118 }
119
120 return static::$eventJournalBuilder;
121 }
122
126 private static function getTransport(): Client
127 {
128 if (is_null(static::$transport))
129 {
130 static::$transport = new Client(
131 static::getOauthTokenProvider(),
132 static::getLogger(),
133 static::getReferralSourceBuilder()
134 );
135
136 if (
137 (int)Option::get('sale', 'delivery_service_yandex_taxi_sandbox', 0) == 1
138 || (
139 defined('BITRIX_SALE_HANDLERS_YANDEX_TAXI_TEST_ENVIRONMENT')
140 && BITRIX_SALE_HANDLERS_YANDEX_TAXI_TEST_ENVIRONMENT === true
141 )
142 )
143 {
144 static::$transport->setIsTestEnvironment(true);
145 }
146 }
147
148 return static::$transport;
149 }
150
154 public static function getOauthTokenProvider(): OauthTokenProvider
155 {
156 if (is_null(static::$oauthTokenProvider))
157 {
158 static::$oauthTokenProvider = new OauthTokenProvider();
159 }
160
161 return static::$oauthTokenProvider;
162 }
163
167 public static function getApi(): Api
168 {
169 if (is_null(static::$api))
170 {
171 static::$api = new Api(
172 static::getTransport(),
173 static::getClaimReader(),
174 static::getEventJournalBuilder(),
175 static::getLogger()
176 );
177 }
178
179 return static::$api;
180 }
181
185 public static function getJournalProcessor(): JournalProcessor
186 {
187 if (is_null(static::$journalProcessor))
188 {
189 static::$journalProcessor = new JournalProcessor(
190 static::getEventReader(),
191 static::getEventProcessor()
192 );
193 }
194
195 return static::$journalProcessor;
196 }
197
201 private static function getEventReader(): EventReader
202 {
203 if (is_null(static::$eventReader))
204 {
205 static::$eventReader = new EventReader(static::getApi());
206 }
207
208 return static::$eventReader;
209 }
210
214 private static function getEventProcessor(): EventProcessor
215 {
216 if (is_null(static::$eventProcessor))
217 {
218 static::$eventProcessor = new EventProcessor(static::getApi());
219 }
220
221 return static::$eventProcessor;
222 }
223
227 public static function getRateCalculator(): RateCalculator
228 {
229 if (is_null(static::$rateCalculator))
230 {
231 static::$rateCalculator = new RateCalculator(
232 static::getApi(),
233 static::getClaimBuilder(),
234 static::getTariffsChecker()
235 );
236 }
237
238 return static::$rateCalculator;
239 }
240
244 public static function getTariffsChecker(): TariffsChecker
245 {
246 if (is_null(static::$tariffsChecker))
247 {
248 static::$tariffsChecker = new TariffsChecker(static::getApi());
249 }
250
251 return static::$tariffsChecker;
252 }
253
257 public static function getInstaller(): Installer
258 {
259 if (is_null(static::$installer))
260 {
261 static::$installer = new Installer(
262 static::getTariffsRepository(),
263 static::getTariffNameBuilder()
264 );
265 }
266
267 return static::$installer;
268 }
269
273 public static function getClaimBuilder(): ClaimBuilder
274 {
275 if (is_null(static::$claimBuilder))
276 {
277 static::$claimBuilder = new ClaimBuilder(
278 static::getTariffsRepository(),
279 static::getReferralSourceBuilder()
280 );
281 }
282
283 return static::$claimBuilder;
284 }
285
289 public static function getRegionFinder(): RegionFinder
290 {
291 if (is_null(static::$regionFinder))
292 {
293 static::$regionFinder = new RegionFinder();
294 }
295
296 return static::$regionFinder;
297 }
298
302 public static function getRegionCoordinatesMapper(): RegionCoordinatesMapper
303 {
304 if (is_null(static::$regionCoordinatesMapper))
305 {
306 static::$regionCoordinatesMapper = new RegionCoordinatesMapper();
307 }
308
309 return static::$regionCoordinatesMapper;
310 }
311
315 public static function getTariffsRepository(): Repository
316 {
317 if (is_null(static::$tariffsRepository))
318 {
319 static::$tariffsRepository = new Repository();
320 }
321
322 return static::$tariffsRepository;
323 }
324
328 public static function getReferralSourceBuilder(): ReferralSourceBuilder
329 {
330 if (is_null(static::$referralSourceBuilder))
331 {
332 static::$referralSourceBuilder = new ReferralSourceBuilder(
333 static::getRegionFinder()
334 );
335 }
336
337 return static::$referralSourceBuilder;
338 }
339
343 public static function getTariffNameBuilder(): TariffNameBuilder
344 {
345 if (is_null(static::$tariffNameBuilder))
346 {
347 static::$tariffNameBuilder = new TariffNameBuilder(
348 static::getRegionFinder()
349 );
350 }
351
352 return static::$tariffNameBuilder;
353 }
354}