3namespace Sale\Handlers\Delivery\YandexTaxi;
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;
28final class ServiceContainer
34 private static $oauthTokenProvider;
37 private static $claimReader;
40 private static $eventJournalBuilder;
43 private static $logger;
46 private static $transport;
49 private static $journalProcessor;
52 private static $eventReader;
55 private static $eventProcessor;
58 private static $rateCalculator;
61 private static $tariffsChecker;
64 private static $installer;
67 private static $claimBuilder;
70 private static $regionFinder;
73 private static $regionCoordinatesMapper;
76 private static $tariffsRepository;
79 private static $referralSourceBuilder;
82 private static $tariffNameBuilder;
87 private static function getLogger(): Logger
89 if (is_null(static::$logger))
91 static::$logger =
new Logger();
94 return static::$logger;
100 private static function getClaimReader(): ClaimReader
102 if (is_null(static::$claimReader))
104 static::$claimReader =
new ClaimReader();
107 return static::$claimReader;
113 private static function getEventJournalBuilder(): EventBuilder
115 if (is_null(static::$eventJournalBuilder))
117 static::$eventJournalBuilder =
new EventBuilder();
120 return static::$eventJournalBuilder;
126 private static function getTransport(): Client
128 if (is_null(static::$transport))
130 static::$transport =
new Client(
131 static::getOauthTokenProvider(),
133 static::getReferralSourceBuilder()
137 (
int)Option::get(
'sale',
'delivery_service_yandex_taxi_sandbox', 0) == 1
139 defined(
'BITRIX_SALE_HANDLERS_YANDEX_TAXI_TEST_ENVIRONMENT')
140 && BITRIX_SALE_HANDLERS_YANDEX_TAXI_TEST_ENVIRONMENT ===
true
144 static::$transport->setIsTestEnvironment(
true);
148 return static::$transport;
154 public static function getOauthTokenProvider(): OauthTokenProvider
156 if (is_null(static::$oauthTokenProvider))
158 static::$oauthTokenProvider =
new OauthTokenProvider();
161 return static::$oauthTokenProvider;
167 public static function getApi(): Api
169 if (is_null(static::$api))
171 static::$api =
new Api(
172 static::getTransport(),
173 static::getClaimReader(),
174 static::getEventJournalBuilder(),
185 public static function getJournalProcessor(): JournalProcessor
187 if (is_null(static::$journalProcessor))
189 static::$journalProcessor =
new JournalProcessor(
190 static::getEventReader(),
191 static::getEventProcessor()
195 return static::$journalProcessor;
201 private static function getEventReader(): EventReader
203 if (is_null(static::$eventReader))
205 static::$eventReader =
new EventReader(static::getApi());
208 return static::$eventReader;
214 private static function getEventProcessor(): EventProcessor
216 if (is_null(static::$eventProcessor))
218 static::$eventProcessor =
new EventProcessor(static::getApi());
221 return static::$eventProcessor;
227 public static function getRateCalculator(): RateCalculator
229 if (is_null(static::$rateCalculator))
231 static::$rateCalculator =
new RateCalculator(
233 static::getClaimBuilder(),
234 static::getTariffsChecker()
238 return static::$rateCalculator;
244 public static function getTariffsChecker(): TariffsChecker
246 if (is_null(static::$tariffsChecker))
248 static::$tariffsChecker =
new TariffsChecker(static::getApi());
251 return static::$tariffsChecker;
257 public static function getInstaller(): Installer
259 if (is_null(static::$installer))
261 static::$installer =
new Installer(
262 static::getTariffsRepository(),
263 static::getTariffNameBuilder()
267 return static::$installer;
273 public static function getClaimBuilder(): ClaimBuilder
275 if (is_null(static::$claimBuilder))
277 static::$claimBuilder =
new ClaimBuilder(
278 static::getTariffsRepository(),
279 static::getReferralSourceBuilder()
283 return static::$claimBuilder;
289 public static function getRegionFinder(): RegionFinder
291 if (is_null(static::$regionFinder))
293 static::$regionFinder =
new RegionFinder();
296 return static::$regionFinder;
302 public static function getRegionCoordinatesMapper(): RegionCoordinatesMapper
304 if (is_null(static::$regionCoordinatesMapper))
306 static::$regionCoordinatesMapper =
new RegionCoordinatesMapper();
309 return static::$regionCoordinatesMapper;
315 public static function getTariffsRepository(): Repository
317 if (is_null(static::$tariffsRepository))
319 static::$tariffsRepository =
new Repository();
322 return static::$tariffsRepository;
328 public static function getReferralSourceBuilder(): ReferralSourceBuilder
330 if (is_null(static::$referralSourceBuilder))
332 static::$referralSourceBuilder =
new ReferralSourceBuilder(
333 static::getRegionFinder()
337 return static::$referralSourceBuilder;
343 public static function getTariffNameBuilder(): TariffNameBuilder
345 if (is_null(static::$tariffNameBuilder))
347 static::$tariffNameBuilder =
new TariffNameBuilder(
348 static::getRegionFinder()
352 return static::$tariffNameBuilder;