• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/entityadapterfactory.php
  • Класс: Bitrix\Crm\EntityAdapterFactory
  • Вызов: EntityAdapterFactory::create
static function create(array $fields = null, $sourceEntityTypeID = \CCrmOwnerType::Undefined, $destinationEntityTypeID = \CCrmOwnerType::Undefined)
{
	if(!is_int($sourceEntityTypeID))
	{
		throw new Main\ArgumentTypeException('sourceEntityTypeID', 'integer');
	}

	if(!is_int($destinationEntityTypeID))
	{
		throw new Main\ArgumentTypeException('destinationEntityTypeID', 'integer');
	}

	if($sourceEntityTypeID !== \CCrmOwnerType::Undefined && !\CCrmOwnerType::IsDefined($sourceEntityTypeID))
	{
		$sourceEntityTypeID = \CCrmOwnerType::Undefined;
	}

	if($destinationEntityTypeID !== \CCrmOwnerType::Undefined && !\CCrmOwnerType::IsDefined($destinationEntityTypeID))
	{
		$destinationEntityTypeID = \CCrmOwnerType::Undefined;
	}

	if(\CCrmOwnerType::IsDefined($sourceEntityTypeID) && !\CCrmOwnerType::IsDefined($destinationEntityTypeID))
	{
		$destinationEntityTypeID = $sourceEntityTypeID;
	}

	$adapter = null;
	if($sourceEntityTypeID !== \CCrmOwnerType::Undefined && $destinationEntityTypeID !== \CCrmOwnerType::Undefined)
	{
		if($sourceEntityTypeID === \CCrmOwnerType::Lead)
		{
			if($destinationEntityTypeID === \CCrmOwnerType::Company)
			{
				$adapter = new EntityAdapter(
					\CCrmOwnerType::Lead,
					\CCrmOwnerType::Company,
					new Mapper(array('COMPANY_TITLE' => 'TITLE'))
				);
			}
		}
		elseif($sourceEntityTypeID === \CCrmOwnerType::Company)
		{
			if($destinationEntityTypeID === \CCrmOwnerType::Lead)
			{
				$adapter = new EntityAdapter(
					\CCrmOwnerType::Company,
					\CCrmOwnerType::Lead,
					new Mapper(array('TITLE' => 'COMPANY_TITLE'))
				);
			}
		}
	}

	if($adapter === null)
	{
		$adapter = new EntityAdapter($sourceEntityTypeID, $destinationEntityTypeID);
	}

	if($fields !== null)
	{
		$adapter->setFields($fields);
	}

	return $adapter;
}