User::getEntityFields

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. User
  4. getEntityFields
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/webform/embed/user.php
  • Класс: Bitrix\Crm\WebForm\Embed\User
  • Вызов: User::getEntityFields
static function getEntityFields(Identificator\Complex $entity, ?int $presetId): array
{
	$data = [
		/*
		'name' => '',
		'last-name' => '',
		'email' => '',
		'phone' => '',
		'second-name' => '',
		'company-name' => '',
		*/
	];

	switch ($entity->getTypeId())
	{
		case \CCrmOwnerType::Deal:
			return self::getClientDataByFields(
				Crm\DealTable::getRow([
					'select' => ['CONTACT_ID', 'COMPANY_ID'],
					'filter' => ['=ID' => $entity->getId()]
				]), $presetId
			);

		case \CCrmOwnerType::Quote:
			return self::getClientDataByFields(
				Crm\QuoteTable::getRow([
					'select' => ['CONTACT_ID', 'COMPANY_ID'],
					'filter' => ['=ID' => $entity->getId()]
				]), $presetId
			);

		case \CCrmOwnerType::Company:
			$map = self::richMap(
				$entity->getTypeId(),
				[
					'TITLE' => 'company-name'
				]
			);
			return self::getDataByFieldsMap(self::loadEntityData($entity), $map);

		case \CCrmOwnerType::Lead:
			$map = self::richMap(
				$entity->getTypeId(),
				[
					'NAME' => 'name',
					'LAST_NAME' => 'last-name',
					'SECOND_NAME' => 'second-name',
					'EMAIL_WORK' => 'email',
					'EMAIL_MAILING' => 'email',
					'EMAIL_HOME' => 'email',
					'PHONE_WORK' => 'phone',
					'PHONE_MAILING' => 'phone',
					'PHONE_MOBILE' => 'phone',
					'COMPANY_TITLE' => 'company-name',
					'COMPANY_ID' => '',
					'CONTACT_ID' => '',
				]
			);
			$fields = Crm\LeadTable::getRow([
				'select' => array_keys($map),
				'filter' => ['=ID' => $entity->getId()]
			]);
			return self::getClientDataByFields($fields, $presetId) + self::getDataByFieldsMap($fields, $map);

		case \CCrmOwnerType::Contact:
			$map = self::richMap(
				$entity->getTypeId(),
				[
					'NAME' => 'name',
					'LAST_NAME' => 'last-name',
					'SECOND_NAME' => 'second-name',
					'EMAIL_WORK' => 'email',
					'EMAIL_MAILING' => 'email',
					'EMAIL_HOME' => 'email',
					'PHONE_WORK' => 'phone',
					'PHONE_MAILING' => 'phone',
					'PHONE_MOBILE' => 'phone',
					'COMPANY_ID' => '',
				]
			);

			$fields = self::loadEntityData($entity);
			return self::getDataByFieldsMap($fields, $map) + self::getClientDataByFields($fields, $presetId);

		default:
			if (!\CCrmOwnerType::isUseDynamicTypeBasedApproach($entity->getTypeId()))
			{
				break;
			}

			$dynamicFactory = Crm\Service\Container::getInstance()->getFactory($entity->getTypeId());
			$dynamicItem = $dynamicFactory->getItem($entity->getId());
			if (!$dynamicItem)
			{
				break;
			}

			$data += self::getDataByFieldsMap(
				$dynamicItem->getData(),
				self::richMap($entity->getTypeId(), [])
			);
			if (!$dynamicItem->getContactId() && !$dynamicItem->getCompanyId())
			{
				break;
			}

			$data += self::getClientDataByFields([
				'CONTACT_ID' => $dynamicItem->getContactId(),
				'COMPANY_ID' => $dynamicItem->getCompanyId(),
			], $presetId);
	}

	return $data;
}

Добавить комментарий