• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Chat/NotifyChat.php
  • Класс: BitrixImV2ChatNotifyChat
  • Вызов: NotifyChat::add
public function add(array $params, ?Context $context = null): Result
{
	$result = new Result;

	$paramsResult = $this->prepareParams($params);
	if ($paramsResult->isSuccess())
	{
		$params = $paramsResult->getResult();
	}
	else
	{
		return $result->addErrors($paramsResult->getErrors());
	}

	$blockedExternalAuthId = BitrixImModelUserTable::filterExternalUserTypes(['replica']);
	$res = BitrixImModelUserTable::getById($params['AUTHOR_ID']);
	if (
		!($userData = $res->fetch())
		|| $userData['ACTIVE'] == 'N'
		|| in_array($userData['EXTERNAL_AUTH_ID'], $blockedExternalAuthId, true)
	)
	{
		return $result->addError(new ChatError(ChatError::WRONG_RECIPIENT));
	}

	$chat = new static($params);
	$chat->save();

	if ($chat->getChatId() <= 0)
	{
		return $result->addError(new ChatError(ChatError::CREATION_ERROR));
	}

	BitrixImModelRelationTable::add([
		'CHAT_ID' => $chat->getChatId(),
		'MESSAGE_TYPE' => IM_MESSAGE_SYSTEM,
		'USER_ID' => $params['AUTHOR_ID'],
	]);

	return $result->setResult([
		'CHAT_ID' => $chat->getChatId(),
		'CHAT' => $chat,
	]);
}