• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/crm.php
  • Класс: BitrixImOpenLinesCrm
  • Вызов: Crm::registerActivity
public function registerActivity(): Result
{
	$result = new Result;
	$fields = $this->getFields();
	$session = $fields->getSession();

	if (!Loader::includeModule('crm'))
	{
		$result->addError(new Error(Loc::getMessage('IMOL_CRM_ERROR_NOT_LOAD_CRM'), self::ERROR_IMOL_NOT_LOAD_CRM, __METHOD__));
	}

	if (empty($this->getEntityManageFacility()->getActivityBindings()))
	{
		$result->addError(new Error(Loc::getMessage('IMOL_CRM_ERROR_NO_CRM_BINDINGS'), self::ERROR_IMOL_NO_CRM_BINDINGS, __METHOD__));
	}

	if ($result->isSuccess() && !empty($session) && !empty($session->getData('ID')))
	{
		if ($session->getData('CRM_ACTIVITY_ID') > 0)
		{
			$result->setResult($session->getData('CRM_ACTIVITY_ID'));
		}
		else
		{
			$parsedUserCode = SessionCommon::parseUserCode($session->getData('USER_CODE'));
			$connectorId = $parsedUserCode['CONNECTOR_ID'];
			$lineId = $parsedUserCode['CONFIG_ID'];

			$addFields = [
				'LINE_ID' => $lineId,
				'NAME' => Loc::getMessage('IMOL_CRM_CREATE_ACTIVITY_2', Array('#LEAD_NAME#' => $session->getChat()->getData('TITLE'), '#CONNECTOR_NAME#' => CrmCommon::getSourceName($session->getData('USER_CODE')))),
				'SESSION_ID' => $session->getData('ID'),
				'MODE' => $session->getData('MODE'),
				'BINDINGS' => $this->getEntityManageFacility()->getActivityBindings(),
				'OPERATOR_ID' => $this->getResponsibleCrmId(),
				'USER_CODE' => $session->getData('USER_CODE'),
				'CONNECTOR_ID' => $connectorId,
			];

			foreach (array_merge($this->updateEntites, $this->registeredEntites) as $item)
			{
				$addFields['ENTITES'][] = [
					'ENTITY_ID' => $item['ENTITY_ID'],
					'ENTITY_TYPE_ID' => CCrmOwnerType::ResolveId($item['ENTITY_TYPE'])
				];
			}

			$resultAddActivity = Activity::add($addFields);
			if ($resultAddActivity->isSuccess())
			{
				$result->setResult($resultAddActivity->getResult());
			}
			else
			{
				$result->addErrors($resultAddActivity->getErrors());
			}
		}
	} else
	{
		$result->addError(new Error(Loc::getMessage('IMOL_CRM_ERROR_NO_SESSION'), self::ERROR_IMOL_NO_SESSION, __METHOD__));
	}

	return $result;
}