1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
helper.php
См. документацию.
1<?
2namespace Sale\Handlers\Delivery\Additional\RusPost;
3
4use Bitrix\Main\Error;
5use \Bitrix\Sale\Delivery\Services;
6use Bitrix\Sale\Result;
7
12class Helper
13{
21 public static function getEnabledShippingPointsList($deliveryId, $useCache = true)
22 {
23 $deliveryId = (int)$deliveryId;
24
25 if($deliveryId <= 0)
26 {
27 return [];
28 }
29
30 if(!($deliveryService = Services\Manager::getObjectById($deliveryId)))
31 {
32 return [];
33 }
34
35 if($useCache)
36 {
37 $ttl = 86400; //day
38 $cacheId = "SaleHandlersDeliveryAdditionalRusPost".
39 $deliveryId.
40 "ShippingPoints".
41 md5(serialize($deliveryService->getConfigValues())
42 );
43
44 $cacheManager = \Bitrix\Main\Application::getInstance()->getManagedCache();
45
46 if($cacheManager->read($ttl, $cacheId))
47 {
48 return $cacheManager->get($cacheId);
49 }
50 }
51
52 $res = self::getEnabledShippingPointsListResult($deliveryId);
53 $result = $res->getData();
54
55 if($useCache)
56 {
57 $cacheManager->set($cacheId, $result);
58 }
59
60 return $result;
61 }
62
69 public static function getEnabledShippingPointsListResult($deliveryId)
70 {
71 $result = new Result();
72 $deliveryId = (int)$deliveryId;
73
74 if($deliveryId <= 0)
75 {
76 $result->addError(new Error('deliveryId is less than zero'));
77 return $result;
78 }
79
80 if(!($deliveryService = Services\Manager::getObjectById($deliveryId)))
81 {
82 $result->addError(new Error('Can\t obtain delivery object'));
83 return $result;
84 }
85
87 if(!($deliveryRequest = $deliveryService->getDeliveryRequestHandler()))
88 {
89 $result->addError(new Error('Can\t obtain request handler'));
90 return $result;
91 }
92
93 if(get_class($deliveryRequest) != 'Sale\Handlers\Delivery\Additional\DeliveryRequests\RusPost\Handler')
94 {
95 $result->addError(new Error('Can\t obtain class Sale\Handlers\Delivery\Additional\DeliveryRequests\RusPost\Handler'));
96 return $result;
97 }
98
99 $points = [];
101 $res = $deliveryRequest->send('USER_SETTINGS', []);
102
103 if($res->isSuccess())
104 {
105 $data = $res->getData();
106
107 if(is_array($data['shipping-points']))
108 {
109 foreach($data['shipping-points'] as $sPoint)
110 {
111 if($sPoint['enabled'] == 1)
112 {
113 $points[$sPoint['operator-postcode']] = $sPoint;
114 }
115 }
116 }
117
118 $result->setData($points);
119 }
120 else
121 {
122 $result->addErrors($res->getErrors());
123 }
124
125 return $result;
126 }
127
132 public static function getSelectedShippingPoint($deliveryService)
133 {
134 if(!$deliveryService)
135 {
136 return [];
137 }
138
139 $result = [];
140 $config = $deliveryService->getConfigValues();
141
142 if(isset($config['MAIN']['SHIPPING_POINT']['VALUE']))
143 {
144 $result = $config['MAIN']['SHIPPING_POINT'];
145 }
146
147 return $result;
148 }
149}
$data['IS_AVAILABLE']
Определения .description.php:13
$res
Определения filter_act.php:7
$result
Определения get_property_values.php:14
trait Error
Определения error.php:11
$config
Определения quickway.php:69