1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
customfieldsservice.php
См. документацию.
1<?php
2
3namespace Bitrix\Location\Infrastructure\Service;
4
5use Bitrix\Location\Common\BaseService;
6use Bitrix\Location\Entity\Area;
7use Bitrix\Location\Geometry\Type\Point;
8use Bitrix\Location\Infrastructure\Service\Config\Container;
9use Bitrix\Location\Infrastructure\Service\CustomFieldsService\CrimeaCustomFields;
10use Bitrix\Location\Infrastructure\Service\CustomFieldsService\CustomFields;
11use Bitrix\Location\Infrastructure\Service\CustomFieldsService\DonetskCustomFields;
12use Bitrix\Location\Infrastructure\Service\CustomFieldsService\KhersonCustomFields;
13use Bitrix\Location\Infrastructure\Service\CustomFieldsService\LuganskCustomFields;
14use Bitrix\Location\Infrastructure\Service\CustomFieldsService\SevastopolCustomFields;
15use Bitrix\Location\Infrastructure\Service\CustomFieldsService\ZaporozhyeCustomFields;
16use Bitrix\Location\Repository\AreaRepository;
17
19{
21 protected static $instance;
22
23 private const TYPE_CUSTOM_FIELDS = 'CUSTOM_FIELDS';
24 private const CODE_CRIMEA = 'CRIMEA';
25 private const CODE_SEVASTOPOL = 'SEVASTOPOL';
26 private const CODE_DONETSK = 'DONETSK';
27 private const CODE_LUGANSK = 'LUGANSK';
28 private const CODE_ZAPOROZHYE = 'ZAPOROZHYE';
29 private const CODE_KHERSON = 'KHERSON';
30
32 private $areaRepository;
33
35 private $customFieldsAreas;
36
41 public function getCustomFieldsByPoint(Point $point): ?CustomFields
42 {
43 $this->loadAreasWithCustomFields();
44
45 foreach ($this->customFieldsAreas as $customFieldsArea)
46 {
47 if (!$customFieldsArea->containsPoint($point))
48 {
49 continue;
50 }
51
52 $className = null;
53 switch ($customFieldsArea->getCode())
54 {
55 case self::CODE_CRIMEA:
56 $className = CrimeaCustomFields::class;
57 break;
58 case self::CODE_SEVASTOPOL:
59 $className = SevastopolCustomFields::class;
60 break;
61 case self::CODE_DONETSK:
62 $className = DonetskCustomFields::class;
63 break;
64 case self::CODE_LUGANSK:
65 $className = LuganskCustomFields::class;
66 break;
67 case self::CODE_ZAPOROZHYE:
68 $className = ZaporozhyeCustomFields::class;
69 break;
70 case self::CODE_KHERSON:
71 $className = KhersonCustomFields::class;
72 break;
73 }
74
75 if (!$className)
76 {
77 continue;
78 }
79
80 return new $className();
81 }
82
83 return null;
84 }
85
89 protected function __construct(Container $config)
90 {
91 $this->areaRepository = new AreaRepository();
92
93 parent::__construct($config);
94 }
95
96 private function loadAreasWithCustomFields(): void
97 {
98 if (!is_null($this->customFieldsAreas))
99 {
100 return;
101 }
102
103 $this->customFieldsAreas = $this->areaRepository->findByArguments([
104 'filter' => [
105 '=TYPE' => self::TYPE_CUSTOM_FIELDS,
106 ],
107 'order' => [
108 'SORT' => 'DESC',
109 ]
110 ]);
111 }
112}
$config
Определения quickway.php:69