1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
Converter.php
См. документацию.
1<?php
2
3declare(strict_types=1);
4
5namespace Bitrix\Socialnetwork\Collab\Controller;
6
7use Bitrix\Main\DI\ServiceLocator;
8use Bitrix\Main\Engine\AutoWire\Parameter;
9use Bitrix\Main\Engine\Controller;
10use Bitrix\Main\Engine\CurrentUser;
11use Bitrix\Main\Error;
12use Bitrix\SocialNetwork\Collab\Access\CollabAccessController;
13use Bitrix\Socialnetwork\Collab\Controller\Dto\CollabGetDto;
14use Bitrix\Socialnetwork\Collab\Controller\Dto\Converter\ConvertToCollabDto;
15use Bitrix\Socialnetwork\Collab\Controller\Filter\IntranetUserFilter;
16use Bitrix\Socialnetwork\Collab\Converter\Command\ConvertToCollabCommand;
17use Bitrix\Socialnetwork\Collab\Converter\ConverterFeature;
18use Bitrix\Socialnetwork\Item\Workgroup;
19use Bitrix\Socialnetwork\Permission\GroupAccessController;
20use Bitrix\Socialnetwork\Permission\GroupDictionary;
21
22class Converter extends Controller
23{
24 protected int $userId;
27
28 protected function init(): void
29 {
30 parent::init();
31
32 $this->userId = (int)CurrentUser::get()->getId();
33 $this->accessController = CollabAccessController::getInstance($this->userId);
34 $this->collabController = new Collab();
35 }
36
37 public function getAutoWiredParameters(): array
38 {
39 return [
40 new Parameter(
41 ConvertToCollabDto::class,
42 function (): ConvertToCollabDto {
43 $request = $this->getRequest();
44
46 }
47 ),
48 ];
49 }
50
51 public function configureActions(): array
52 {
53 return [
54 'convertToCollab' => [
55 '+prefilters' => [
57 ],
58 ],
59 ];
60 }
61
62 public function validateGroupAction(int $id): ?array
63 {
64 if (!ConverterFeature::isOn())
65 {
66 $this->addError(new Error('Feature is not available'));
67
68 return null;
69 }
70
71 $group = Workgroup::getById($id);
72 if (!($group instanceof Workgroup))
73 {
74 $this->addError(new Error('Group not found'));
75
76 return null;
77 }
78
79 if (!GroupAccessController::can($this->userId, GroupDictionary::CONVERT, $id))
80 {
81 $this->addError(new Error('Access denied'));
82
83 return null;
84 }
85
87 $command = (new ConvertToCollabCommand())
88 ->setGroup($group)
89 ->setInitiatorId($this->userId)
90 ;
91
92 $validationResult = $command->validateGroup();
93
94 if (!$validationResult->isSuccess())
95 {
96 $this->addErrors($validationResult->getErrors());
97 }
98
99 return [
100 'isValid' => $validationResult->isSuccess(),
101 ];
102 }
103
107 public function convertToCollabAction(ConvertToCollabDto $dto): ?\Bitrix\Socialnetwork\Collab\Collab
108 {
109 if (!ConverterFeature::isOn())
110 {
111 $this->addError(new Error('Feature is not available'));
112
113 return null;
114 }
115
116 $group = Workgroup::getById($dto->id);
117 if (!($group instanceof Workgroup))
118 {
119 $this->addError(new Error('Group not found'));
120
121 return null;
122 }
123
124 if (!GroupAccessController::can($this->userId, GroupDictionary::CONVERT, $dto->id))
125 {
126 $this->addError(new Error('Access denied'));
127
128 return null;
129 }
130
131 $command = (new ConvertToCollabCommand())
132 ->setGroup($group)
133 ->setInitiatorId($this->userId)
134 ;
135
136 $service = ServiceLocator::getInstance()->get('socialnetwork.collab.converter.service');
138 $converterResult = $service->convert($command);
139
140 if (!$converterResult->isSuccess())
141 {
142 $this->addErrors($converterResult->getErrors());
143
144 return null;
145 }
146
147 $getDto = new CollabGetDto($converterResult->getEntityAfter()->getId());
148
149 return $this->collabController->getAction($getDto);
150 }
151}
if(!Loader::includeModule('catalog')) if(!AccessController::getCurrent() ->check(ActionDictionary::ACTION_PRICE_EDIT)) if(!check_bitrix_sessid()) $request
Определения catalog_reindex.php:36
Определения error.php:15
static getById($id)
Определения datamanager.php:364
CollabAccessController $accessController
Определения Converter.php:25
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
addError(string $class, string $message='')
Определения AccessErrorTrait.php:18
addErrors(array $errors)
Определения error.php:41
trait Error
Определения error.php:11
$service
Определения payment.php:18