• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/crm.php
  • Класс: BitrixImOpenLinesCrm
  • Вызов: Crm::setOperatorId
public function setOperatorId($id, $autoMode = false): Result
{
	$result = new Result();
	$result->setResult(false);
	$editorId = 0;

	if (Loader::includeModule('crm'))
	{
		$fields = $this->getFields();
		$session = $fields->getSession();

		if (!empty($session))
		{
			if (
				$session->getConfig('CRM') === 'Y'
				&& $session->getConfig('CRM_TRANSFER_CHANGE') === 'Y'
				&& $session->getData('CRM') === 'Y'
				&& ($activityId = $session->getData('CRM_ACTIVITY_ID'))
			)
			{
				if($autoMode === true)
				{
					if(!empty($id))
					{
						$editorId = $id;
					}
					else
					{
						$editorId = 1;
					}
				}

				$updateActivityData = ['OPERATOR_ID' => $id];
				if(!empty($editorId))
				{
					$updateActivityData['EDITOR_ID'] = $editorId;
				}
				$resultUpdateActivity = Activity::update($activityId, $updateActivityData);

				if($resultUpdateActivity->isSuccess())
				{
					$result->setResult(true);

					if($session->getData('CRM_CREATE') == 'Y')
					{
						$crmBindingManager = CrmCommon::getActivityBindings($activityId);

						if($crmBindingManager->isSuccess())
						{
							$binding = $crmBindingManager->getData();

							$updateEntityData = ['ASSIGNED_BY_ID' => $id];
							if(!empty($editorId))
							{
								$updateEntityData['EDITOR_ID'] = $editorId;
							}
							if($session->getData('CRM_CREATE_LEAD') == 'Y' && !empty($binding[CCrmOwnerType::LeadName]))
							{
								CrmCommon::update(CCrmOwnerType::LeadName, $binding[CCrmOwnerType::LeadName], $updateEntityData);
							}

							if($session->getData('CRM_CREATE_CONTACT') == 'Y' && !empty($binding[CCrmOwnerType::ContactName]))
							{
								CrmCommon::update(CCrmOwnerType::ContactName, $binding[CCrmOwnerType::ContactName], $updateEntityData);
							}

							if($session->getData('CRM_CREATE_COMPANY') == 'Y' && !empty($binding[CCrmOwnerType::CompanyName]))
							{
								CrmCommon::update(CCrmOwnerType::CompanyName, $binding[CCrmOwnerType::CompanyName], $updateEntityData);
							}

							if($session->getData('CRM_CREATE_DEAL') == 'Y' && !empty($binding[CCrmOwnerType::DealName]))
							{
								CrmCommon::update(CCrmOwnerType::DealName, $binding[CCrmOwnerType::DealName], $updateEntityData);
							}
						}
						else
						{
							$result->addErrors($crmBindingManager->getErrors());
						}
					}
				}
				else
				{
					$result->addErrors($resultUpdateActivity->getErrors());
				}
			}

		}
		else
		{
			$result->addError(new Error(Loc::getMessage('IMOL_CRM_ERROR_NO_SESSION'), self::ERROR_IMOL_NO_SESSION, __METHOD__));
		}
	}
	else
	{
		$result->addError(new Error(Loc::getMessage('IMOL_CRM_ERROR_NOT_LOAD_CRM'), self::ERROR_IMOL_NOT_LOAD_CRM, __METHOD__));
	}

	return $result;
}