- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/chat.php
- Класс: BitrixImOpenLinesChat
- Вызов: Chat::createLead
public function createLead($userId = 0): Result
{
$result = new Result();
$sessionField = $this->getFieldData(self::FIELD_SESSION);
if ($sessionField['CRM'] == 'Y')
{
$result->setResult(true);
}
elseif ($this->isDataLoaded())
{
$session = new Session();
$session->setChat($this);
if ($session->load(['USER_CODE' => $this->chat['ENTITY_ID']]))
{
if ($this->validationAction($session->getData('CHAT_ID')))
{
if (
$userId > 0
&& $session->getData('OPERATOR_ID') == $userId
)
{
$crmManager = new Crm($session);
if ($crmManager->isLoaded())
{
$crmManager
->getFields()
->setTitle($session->getChat()->getData('TITLE'))
->setDataFromUser()
;
$rawResult = $crmManager
->setSkipSearch()
->setSkipAutomationTrigger()
->registrationChanges()
;
$crmManager->sendCrmImMessages();
if ($rawResult->isSuccess())
{
$result->setResult(true);
}
else
{
$result->addErrors($rawResult->getErrors());
}
}
else
{
$result->addError(new Error('Failed to load CRM', 'IMOL_CHAT_ERROR_NOT_LOAD_CRM', __METHOD__));
}
}
else
{
$result->addError(new Error('Attempt to save a CRM entity by a user who is not an operator', self::ERROR_USER_NOT_OPERATOR, __METHOD__, ['USER_ID' => $userId]));
}
}
else
{
$result->addError(new Error(Loc::getMessage('IMOL_CHAT_ERROR_NOT_LOAD_DATA'), 'IMOL_CHAT_ERROR_NOT_LOAD_DATA', __METHOD__, ['chat' => $this->chat]));
}
}
else
{
$result->addError(new Error(Loc::getMessage('IMOL_CHAT_ERROR_ANSWER_NOT_LOAD_SESSION'), 'IMOL_CHAT_ERROR_ANSWER_NOT_LOAD_SESSION', __METHOD__));
}
}
else
{
$result->addError(new Error('Chat failed to load', 'IMOL_CHAT_ERROR_NOT_LOAD_CHAT', __METHOD__));
}
return $result;
}