1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
handler.php
См. документацию.
1<?php
2
3namespace Sale\Handlers\Delivery;
4
5use Bitrix\Main\Error;
6use Bitrix\Main\Loader;
7use Bitrix\Main\Localization\Loc;
8use Bitrix\Main\ModuleManager;
9use Bitrix\Main\Result;
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;
18
19Loader::registerAutoLoadClasses(
20 'sale',
21 [
22 __NAMESPACE__.'\YandextaxiProfile' => 'handlers/delivery/yandextaxi/profile.php',
23 ]
24);
25
26Loc::loadMessages(__FILE__);
27
32final class YandextaxiHandler extends Base
33{
35 protected $handlerCode = 'BITRIX_YANDEX_TAXI';
36
37 // @TODO get rid of the constant
38 public const SERVICE_CODE = 'YANDEX_TAXI';
39
41 protected static $canHasProfiles = true;
42
44 private $journalProcessor;
45
47 private $installer;
48
50 private $tariffsRepository;
51
53 private $tariffNameBuilder;
54
58 public function __construct(array $initParams)
59 {
60 parent::__construct($initParams);
61
62 if (isset($initParams['CONFIG']['MAIN']['OAUTH_TOKEN']))
63 {
64 ServiceContainer::getOauthTokenProvider()->setToken($initParams['CONFIG']['MAIN']['OAUTH_TOKEN']);
65 }
66
67 $this->journalProcessor = ServiceContainer::getJournalProcessor();
68 $this->installer = ServiceContainer::getInstaller();
69 $this->tariffsRepository = ServiceContainer::getTariffsRepository();
70 $this->tariffNameBuilder = ServiceContainer::getTariffNameBuilder();
71 }
72
76 public static function getClassTitle()
77 {
78 return Loc::getMessage('SALE_YANDEX_TAXI_TITLE');
79 }
80
84 public static function getClassDescription()
85 {
86 return Loc::getMessage('SALE_YANDEX_TAXI_TITLE');
87 }
88
92 public static function onBeforeAdd(array &$fields = array()): Result
93 {
94 $result = new Result();
95
96 if (!ModuleManager::isModuleInstalled('location'))
97 {
98 return $result->addError(
99 new Error(
100 Loc::getMessage('SALE_YANDEX_TAXI_LOCATION_MODULE_REQUIRED')
101 )
102 );
103 }
104
105 $fields['CODE'] = static::SERVICE_CODE;
106
107 return $result;
108 }
109
113 public static function onAfterAdd($serviceId, array $fields = [])
114 {
116 $instance = Manager::getObjectById($serviceId);
117 if (!$instance)
118 {
119 return false;
120 }
121
122 return $instance->installer->install($serviceId)->isSuccess();
123 }
124
130 public static function onBeforeUpdate($serviceId, array &$fields = array())
131 {
132 $service = Table::getList([
133 'filter' => ['=ID' => $serviceId]
134 ])->fetch();
135
136 if (
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']
141 )
142 {
146 $fields['CONFIG']['MAIN']['CURSOR'] = '';
147 }
148
149 return true;
150 }
151
155 public static function onAfterDelete($serviceId)
156 {
158 $instance = Manager::getObjectById($serviceId);
159 if (!$instance)
160 {
161 return false;
162 }
163
164 \CAgent::RemoveAgent(
165 $instance->journalProcessor->getAgentName($serviceId),
166 'sale'
167 );
168
169 return true;
170 }
171
175 public function getYandexTaxiJournalProcessor(): JournalProcessor
176 {
177 return $this->journalProcessor;
178 }
179
183 protected function getConfigStructure()
184 {
185 return [
186 'MAIN' => [
187 'TITLE' => Loc::getMessage('SALE_YANDEX_TAXI_AUTH'),
188 'DESCRIPTION' => Loc::getMessage('SALE_YANDEX_TAXI_AUTH'),
189 'ITEMS' => [
190 'OAUTH_TOKEN' => [
191 'TYPE' => 'STRING',
192 'NAME' => Loc::getMessage('SALE_YANDEX_TAXI_AUTH_TOKEN'),
193 "REQUIRED" => true,
194 ],
195 'CURSOR' => [
196 'TYPE' => 'STRING',
197 'NAME' => 'History Journal Cursor',
198 'REQUIRED' => false,
199 'HIDDEN' => true,
200 ]
201 ]
202 ]
203 ];
204 }
205
209 public static function isHandlerCompatible()
210 {
211 return (
212 in_array(ServiceContainer::getRegionFinder()->getCurrentRegion(), ['ru', 'kz', 'by'])
213 && ModuleManager::isModuleInstalled('crm') && Loader::includeModule('crm')
214 );
215 }
216
220 public static function canHasProfiles()
221 {
222 return self::$canHasProfiles;
223 }
224
228 public static function getChildrenClassNames(): array
229 {
230 return [
231 '\Sale\Handlers\Delivery\YandextaxiProfile'
232 ];
233 }
234
238 public function getProfilesList(): array
239 {
240 $result = [];
241
242 $tariffs = $this->tariffsRepository->getTariffs();
243 foreach ($tariffs as $tariff)
244 {
245 $result[$tariff['name']] = $this->tariffNameBuilder->getTariffName($tariff);
246 }
247
248 return $result;
249 }
250}
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
trait Error
Определения error.php:11
$service
Определения payment.php:18
$instance
Определения ps_b24_final.php:14
$fields
Определения yandex_run.php:501