3namespace Sale\Handlers\Delivery;
7use Bitrix\Main\Localization\Loc;
8use Bitrix\Main\ModuleManager;
10use Bitrix\Sale\Delivery\Services\Base;
11use Bitrix\Sale\Delivery\Services\Manager;
12use Bitrix\Sale\Delivery\Services\Table;
13use Sale\Handlers\Delivery\YandexTaxi\Api\Tariffs\Repository;
14use Sale\Handlers\Delivery\YandexTaxi\Common\TariffNameBuilder;
15use Sale\Handlers\Delivery\YandexTaxi\EventJournal\JournalProcessor;
16use Sale\Handlers\Delivery\YandexTaxi\Installer\Installer;
17use Sale\Handlers\Delivery\YandexTaxi\ServiceContainer;
19Loader::registerAutoLoadClasses(
22 __NAMESPACE__.
'\YandextaxiProfile' =>
'handlers/delivery/yandextaxi/profile.php',
26Loc::loadMessages(__FILE__);
32final class YandextaxiHandler
extends Base
35 protected $handlerCode =
'BITRIX_YANDEX_TAXI';
38 public const SERVICE_CODE =
'YANDEX_TAXI';
41 protected static $canHasProfiles =
true;
44 private $journalProcessor;
50 private $tariffsRepository;
53 private $tariffNameBuilder;
58 public function __construct(
array $initParams)
60 parent::__construct($initParams);
62 if (isset($initParams[
'CONFIG'][
'MAIN'][
'OAUTH_TOKEN']))
64 ServiceContainer::getOauthTokenProvider()->setToken($initParams[
'CONFIG'][
'MAIN'][
'OAUTH_TOKEN']);
67 $this->journalProcessor = ServiceContainer::getJournalProcessor();
68 $this->installer = ServiceContainer::getInstaller();
69 $this->tariffsRepository = ServiceContainer::getTariffsRepository();
70 $this->tariffNameBuilder = ServiceContainer::getTariffNameBuilder();
76 public static function getClassTitle()
78 return Loc::getMessage(
'SALE_YANDEX_TAXI_TITLE');
84 public static function getClassDescription()
86 return Loc::getMessage(
'SALE_YANDEX_TAXI_TITLE');
96 if (!ModuleManager::isModuleInstalled(
'location'))
100 Loc::getMessage(
'SALE_YANDEX_TAXI_LOCATION_MODULE_REQUIRED')
105 $fields[
'CODE'] = static::SERVICE_CODE;
113 public static function onAfterAdd($serviceId,
array $fields = [])
116 $instance = Manager::getObjectById($serviceId);
122 return $instance->installer->install($serviceId)->isSuccess();
133 'filter' => [
'=ID' => $serviceId]
138 && isset(
$fields[
'CONFIG'][
'MAIN'][
'OAUTH_TOKEN'])
139 && isset(
$service[
'CONFIG'][
'MAIN'][
'OAUTH_TOKEN'])
140 &&
$fields[
'CONFIG'][
'MAIN'][
'OAUTH_TOKEN'] !==
$service[
'CONFIG'][
'MAIN'][
'OAUTH_TOKEN']
146 $fields[
'CONFIG'][
'MAIN'][
'CURSOR'] =
'';
155 public static function onAfterDelete($serviceId)
158 $instance = Manager::getObjectById($serviceId);
164 \CAgent::RemoveAgent(
165 $instance->journalProcessor->getAgentName($serviceId),
175 public function getYandexTaxiJournalProcessor(): JournalProcessor
177 return $this->journalProcessor;
183 protected function getConfigStructure()
187 'TITLE' => Loc::getMessage(
'SALE_YANDEX_TAXI_AUTH'),
188 'DESCRIPTION' => Loc::getMessage(
'SALE_YANDEX_TAXI_AUTH'),
192 'NAME' => Loc::getMessage(
'SALE_YANDEX_TAXI_AUTH_TOKEN'),
197 'NAME' =>
'History Journal Cursor',
209 public static function isHandlerCompatible()
212 in_array(ServiceContainer::getRegionFinder()->getCurrentRegion(), [
'ru',
'kz',
'by'])
213 && ModuleManager::isModuleInstalled(
'crm') && Loader::includeModule(
'crm')
220 public static function canHasProfiles()
222 return self::$canHasProfiles;
228 public static function getChildrenClassNames():
array
231 '\Sale\Handlers\Delivery\YandextaxiProfile'
238 public function getProfilesList():
array
242 $tariffs = $this->tariffsRepository->getTariffs();
243 foreach ($tariffs as $tariff)
245 $result[$tariff[
'name']] = $this->tariffNameBuilder->getTariffName($tariff);
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)