• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/crm.php
  • Класс: BitrixImOpenLinesCrm
  • Вызов: Crm::getFieldsAddContact
protected function getFieldsAddContact(): Result
{
	$result = new Result;

	$isCorrectEntity = $this->isFieldsCrmEntityCorrect();

	if ($isCorrectEntity->isSuccess())
	{
		$fields = $this->getFields();
		$session = $fields->getSession();

		$fieldsAdd = [];
		$fieldsFmAdd = [];

		$fieldsAdd['SOURCE_ID'] = $this->getSourceId()->getResult();

		if (!empty($fields->getPersonName()))
		{
			$fieldsAdd['NAME'] = $fields->getPersonName();
		}

		if (!empty($fields->getPersonLastName()))
		{
			$fieldsAdd['LAST_NAME'] = $fields->getPersonLastName();
		}

		if (!empty($fields->getPersonSecondName()))
		{
			$fieldsAdd['SECOND_NAME'] = $fields->getPersonSecondName();
		}

		if (
			!isset($fieldsAdd['NAME']) &&
			!isset($fieldsAdd['LAST_NAME']) &&
			!isset($fieldsAdd['SECOND_NAME'])
		)
		{
			$fieldsAdd['NAME'] = LiveChat::getDefaultGuestName();
		}

		if (!empty($fields->getPersonEmail()))
		{
			$fieldsFmAdd['EMAIL']['WORK'][] = $fields->getPersonEmail();
		}

		if (!empty($fields->getPersonPhone()))
		{
			$fieldsFmAdd['PHONE']['WORK'][] = $fields->getPersonPhone();
		}

		if (!empty($fields->getEmails()))
		{
			if (!empty($fieldsFmAdd['EMAIL']['WORK']))
			{
				$fieldsFmAdd['EMAIL']['WORK'] = array_merge($fieldsFmAdd['EMAIL']['WORK'], $fields->getEmails());
				$fieldsFmAdd['EMAIL']['WORK'] = ToolsEmail::getArrayUniqueValidate($fieldsFmAdd['EMAIL']['WORK']);
			}
			else
			{
				$fieldsFmAdd['EMAIL']['WORK'] = $fields->getEmails();
			}
		}

		if (!empty($fields->getPhones()))
		{
			if (!empty($fieldsFmAdd['PHONE']['WORK']))
			{
				$fieldsFmAdd['PHONE']['WORK'] = array_merge($fieldsFmAdd['PHONE']['WORK'], $fields->getPhones());
				$fieldsFmAdd['PHONE']['WORK'] = ToolsPhone::getArrayUniqueValidate($fieldsFmAdd['PHONE']['WORK']);
			}
			else
			{
				$fieldsFmAdd['PHONE']['WORK'] = $fields->getPhones();
			}
		}

		if (!empty($fields->getPersonWebsite()))
		{
			if (mb_strlen($fields->getPersonWebsite()) > 250)
			{
				$fieldsAdd['SOURCE_DESCRIPTION'] = $fields->getPersonWebsite();
			}
			else
			{
				$fieldsFmAdd['WEB']['HOME'][] = $fields->getPersonWebsite();
			}
		}

		if (($userCode = $this->getCode()) && ($userCodeImol = $this->getCodeImol()))
		{
			$fieldsFmAdd['IM'][CrmCommon::getCommunicationType($userCode)][] = $userCodeImol;
		}

		if ($userId = $this->getUserId())
		{
			$fieldsFmAdd['LINK']['USER'][] = $userId;
		}

		if (!empty($fieldsFmAdd))
		{
			$fieldsAdd['FM'] = CrmCommon::formatMultifieldFields($fieldsFmAdd);
		}

		if (!empty($fieldsAdd))
		{
			$result->setData($fieldsAdd);
		}
	}
	else
	{
		$result->addErrors($isCorrectEntity->getErrors());
	}

	return $result;
}