- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/rest.php
- Класс: BitrixImOpenLinesRest
- Вызов: Rest::crmChatUserAdd
static function crmChatUserAdd($arParams, $n, CRestServer $server)
{
if (empty($arParams['CRM_ENTITY_TYPE']) || empty($arParams['CRM_ENTITY']))
{
throw new RestException('Empty CRM data', 'CRM_CHAT_EMPTY_CRM_DATA', CRestServer::STATUS_WRONG_REQUEST);
}
if (!Loader::includeModule('im'))
{
throw new RestException('Messenger is not installed.', 'IM_NOT_INSTALLED', CRestServer::STATUS_WRONG_REQUEST);
}
$chatId = CrmCommon::getLastChatIdByCrmEntity($arParams['CRM_ENTITY_TYPE'], $arParams['CRM_ENTITY']);
if ($chatId > 0)
{
$chat = ImModelChatTable::getByPrimary($chatId, ['select' => ['ENTITY_ID']])->fetch();
$parsedUserCode = SessionCommon::parseUserCode($chat['ENTITY_ID']);
$lineId = $parsedUserCode['CONFIG_ID'];
if (!Config::canJoin($lineId, $arParams['CRM_ENTITY_TYPE'], $arParams['CRM_ENTITY']))
{
throw new RestException('You don't have access to join user to chat', 'CHAT_JOIN_PERMISSION_DENIED', CRestServer::STATUS_FORBIDDEN);
}
$arParams['USER_ID'] = (int)$arParams['USER_ID'];
if ($arParams['USER_ID'] <= 0)
{
throw new RestException('Empty User ID', 'CRM_CHAT_EMPTY_USER', CRestServer::STATUS_WRONG_REQUEST);
}
$user = ImUser::getInstance($arParams['USER_ID']);
if (!$user->isExists() || !$user->isActive())
{
throw new RestException('User not active', 'CRM_CHAT_USER_NOT_ACTIVE', CRestServer::STATUS_WRONG_REQUEST);
}
$CIMChat = new CIMChat(0);
$result = $CIMChat->AddUser($chatId, $arParams['USER_ID']);
if (!$result)
{
throw new RestException('You don't have access or user already member in chat', 'WRONG_REQUEST', CRestServer::STATUS_WRONG_REQUEST);
}
}
return $chatId;
}