1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
AddModeratorsHandler.php
См. документацию.
1<?php
2
3declare(strict_types=1);
4
5namespace Bitrix\Socialnetwork\Collab\Control\Handler\Add;
6
7use Bitrix\Socialnetwork\Collab\Integration\IM\ActionMessageBuffer;
8use Bitrix\Socialnetwork\Control\Member\Trait\AddMemberTrait;
9use Bitrix\Socialnetwork\Collab\Integration\IM\ActionType;
10use Bitrix\Socialnetwork\Collab\Integration\IM\ActionMessageFactory;
11use Bitrix\Socialnetwork\Collab\Integration\IM\Messenger;
12use Bitrix\Socialnetwork\Control\Command\AddCommand;
13use Bitrix\Socialnetwork\Control\Handler\Add\AddHandlerInterface;
14use Bitrix\Socialnetwork\Control\Handler\HandlerResult;
15use Bitrix\Socialnetwork\Control\Member\Trait\GetMembersTrait;
16use Bitrix\Socialnetwork\Integration\HumanResources\AccessCodeConverter;
17use Bitrix\Socialnetwork\Item\Workgroup;
18use Bitrix\Socialnetwork\UserToGroupTable;
19
21{
22 use GetMembersTrait;
23 use AddMemberTrait;
24
25 public function add(AddCommand $command, Workgroup $entity): HandlerResult
26 {
27 $handlerResult = new HandlerResult();
28
29 $moderators = $command->getModeratorMembers();
30 if (empty($moderators))
31 {
32 return $handlerResult;
33 }
34
35 $membersByCommand = (new AccessCodeConverter(...$moderators))
36 ->getUsers()
37 ->getUserIds();
38
39 $add = array_diff($membersByCommand, $this->getMemberIds($entity->getId()));
40
41 $handlerResult = $this->addMembers(
42 $entity->getId(),
43 $command->getInitiatorId(),
46 ...$add,
47 );
48
49 if (!$handlerResult->isSuccess())
50 {
51 return $handlerResult;
52 }
53
54 ActionMessageBuffer::getInstance()
55 ->put(ActionType::AddUser, $entity->getId(), $command->getInitiatorId(), $add)
56 ->flush();
57
58 Messenger::setManagers($entity->getId(), $add);
59
60 return $handlerResult;
61 }
62}
add(AddCommand $command, Workgroup $entity)
Определения AddModeratorsHandler.php:25
$entity