1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
businessvaluepersondomain.php
См. документацию.
1<?php
2
3
4namespace Bitrix\Sale\Controller;
5
6
7use Bitrix\Main\Engine\Response\DataType\Page;
8use Bitrix\Main\Error;
9use Bitrix\Main\UI\PageNavigation;
10use Bitrix\Sale\Internals\BusinessValuePersonDomainTable;
11use Bitrix\Sale\Result;
12
14{
15 //region Actions
16 public function getFieldsAction()
17 {
18 $view = $this->getViewManager()
19 ->getView($this);
20
21 return ['BUSINESS_VALUE_PERSON_DOMAIN'=>$view->prepareFieldInfos(
22 $view->getFields()
23 )];
24 }
25
26 public function listAction(PageNavigation $pageNavigation, array $select = [], array $filter = [], array $order = []): Page
27 {
28 $select = empty($select) ? ['*'] : $select;
29 $order = empty($order) ? ['PERSON_TYPE_ID'=>'ASC'] : $order;
30
31 $items = BusinessValuePersonDomainTable::getList(
32 [
33 'select' => $select,
34 'filter' => $filter,
35 'order' => $order,
36 'offset' => $pageNavigation->getOffset(),
37 'limit' => $pageNavigation->getLimit(),
38 ]
39 )->fetchAll();
40
41 return new Page('BUSINESS_VALUE_PERSON_DOMAINS', $items, function() use ($filter)
42 {
43 return BusinessValuePersonDomainTable::getCount([$filter]);
44 });
45 }
46
47 public function addAction(array $fields)
48 {
49 $result = new Result();
50
51 $personTypeId = $fields['PERSON_TYPE_ID'];
52 $domain = $fields['DOMAIN'];
53
54 $r = $this->personTypeExists($personTypeId);
55
56 if($r->isSuccess())
57 {
58 $r = $this->exists($personTypeId);
59 if($r->isSuccess())
60 {
61 $result->addError(new Error('Duplicate entry for key [personTypeId]', 201450000001));
62 }
63 else
64 {
65 BusinessValuePersonDomainTable::add(array(
66 'PERSON_TYPE_ID' => $personTypeId,
67 'DOMAIN' => $domain,
68 ));
69 }
70 }
71 else
72 {
73 $result->addErrors($r->getErrors());
74 }
75
76 if($result->isSuccess())
77 {
78 return [
79 'BUSINESS_VALUE_PERSON_DOMAIN'=>BusinessValuePersonDomainTable::getList(['filter'=>[
80 'PERSON_TYPE_ID'=>$personTypeId,
81 'DOMAIN'=>$domain
82 ]])->fetchAll()[0]
83 ];
84 }
85 else
86 {
87 $this->addErrors($result->getErrors());
88 return null;
89 }
90 }
91
93 {
94 $r = $this->checkFields($fields);
95
96 if($r->isSuccess())
97 {
98 $r = $this->existsByFilter([
99 'PERSON_TYPE_ID'=>$fields['PERSON_TYPE_ID'],
100 'DOMAIN'=>$fields['DOMAIN']
101 ]);
102 if($r->isSuccess())
103 {
104 $r = BusinessValuePersonDomainTable::delete(['PERSON_TYPE_ID'=>$fields['PERSON_TYPE_ID'], 'DOMAIN'=>$fields['DOMAIN']]);
105 }
106 }
107
108 if($r->isSuccess())
109 {
110 return true;
111 }
112 else
113 {
114 $this->addErrors($r->getErrors());
115 return null;
116 }
117 }
118 //endregion
119
120 protected function getPersonType($id)
121 {
122 $r = \Bitrix\Sale\PersonType::getList(['filter'=>['ID'=>$id]])->fetchAll();
123 return $r? $r[0]:[];
124 }
125
126 protected function personTypeExists($id)
127 {
128 $r = new Result();
129 if($this->getPersonType($id)['ID']<=0)
130 $r->addError(new Error('person type is not exists', 201440400002));
131
132 return $r;
133 }
134
135 protected function get($personTypeId)
136 {
137 $r = BusinessValuePersonDomainTable::getList(['filter'=>['PERSON_TYPE_ID'=>$personTypeId]])->fetchAll();
138 return $r? $r[0]:[];
139 }
140
141 protected function exists($personTypeId)
142 {
143 $r = new Result();
144 if($this->get($personTypeId)['PERSON_TYPE_ID']<=0)
145 $r->addError(new Error('business value person domain is not exists', 201440400001));
146
147 return $r;
148 }
149
150 protected function existsByFilter($filter)
151 {
152 $r = new Result();
153
154 $row = BusinessValuePersonDomainTable::getList(['filter'=>['PERSON_TYPE_ID'=>$filter['PERSON_TYPE_ID'], 'DOMAIN'=>$filter['DOMAIN']]])->fetchAll();
155 if(isset($row[0]['PERSON_TYPE_ID']) == false)
156 $r->addError(new Error('business value person domain is not exists', 201440400003));
157
158 return $r;
159 }
160
161 protected function checkFields($fields)
162 {
163 $r = new Result();
164
165 if(isset($fields['PERSON_TYPE_ID']) == false && $fields['PERSON_TYPE_ID'] <> '')
166 $r->addError(new Error('personTypeId - parametrs is empty', 201450000002));
167
168 if(isset($fields['DOMAIN']) == false && $fields['DOMAIN'] <> '')
169 $r->addError(new Error('domian - parametrs is empty', 201450000003));
170
171 return $r;
172 }
173
174 protected function checkPermissionEntity($name, $arguments = [])
175 {
176 if($name == 'deletebyfilter')
177 {
178 $r = $this->checkModifyPermissionEntity();
179 }
180 else
181 {
182 $r = parent::checkPermissionEntity($name);
183 }
184 return $r;
185 }
186
187 protected function checkModifyPermissionEntity()
188 {
189 $r = new Result();
190
191 $saleModulePermissions = self::getApplication()->GetGroupRight("sale");
192 if ($saleModulePermissions < "W")
193 {
194 $r->addError(new Error('Access Denied', 200040300020));
195 }
196 return $r;
197 }
198
199 protected function checkReadPermissionEntity()
200 {
201 $r = new Result();
202
203 $saleModulePermissions = self::getApplication()->GetGroupRight("sale");
204 if ($saleModulePermissions == "D")
205 {
206 $r->addError(new Error('Access Denied', 200040300010));
207 }
208 return $r;
209 }
210}
Определения error.php:15
listAction(PageNavigation $pageNavigation, array $select=[], array $filter=[], array $order=[])
Определения businessvaluepersondomain.php:26
static getList(array $parameters=[])
Определения persontype.php:100
</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
$select
Определения iblock_catalog_list.php:194
$filter
Определения iblock_catalog_list.php:54
$name
Определения menu_edit.php:35
Определения aliases.php:54
$order
Определения payment.php:8
$saleModulePermissions
Определения tools.php:21
$items
Определения template.php:224
$fields
Определения yandex_run.php:501