• Модуль: 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;
}