• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/search/result/factory.php
  • Класс: Bitrix\Crm\Search\Result\Factory
  • Вызов: Factory::createResultAdapter
static function createResultAdapter(int $entityTypeId, ?int $categoryId = null): Adapter
{
	$factory = Container::getInstance()->getFactory($entityTypeId);

	switch ($entityTypeId)
	{
		case \CCrmOwnerType::Lead:
			$adapter = new \Bitrix\Crm\Search\Result\Adapter\LeadAdapter();
			break;
		case \CCrmOwnerType::Deal:
			$adapter = new \Bitrix\Crm\Search\Result\Adapter\DealAdapter();
			break;
		case \CCrmOwnerType::Contact:
			$adapter = new \Bitrix\Crm\Search\Result\Adapter\ContactAdapter();
			break;
		case \CCrmOwnerType::Company:
			$adapter = new \Bitrix\Crm\Search\Result\Adapter\CompanyAdapter();
			break;
		case \CCrmOwnerType::Invoice:
			$adapter = new \Bitrix\Crm\Search\Result\Adapter\InvoiceAdapter();
			break;
		case \CCrmOwnerType::Quote:
			$adapter = new \Bitrix\Crm\Search\Result\Adapter\QuoteAdapter();
			break;
		default:
			if ($factory)
			{
				if (\CCrmOwnerType::isPossibleDynamicTypeId($entityTypeId))
				{
					$adapter = new \Bitrix\Crm\Search\Result\Adapter\DynamicAdapter($factory);
				}
				if ($entityTypeId === \CCrmOwnerType::SmartInvoice)
				{
					$adapter = new \Bitrix\Crm\Search\Result\Adapter\SmartInvoiceAdapter($factory);
				}
			}

			break;
	}

	if (!$adapter)
	{
		throw new NotImplementedException(
			\CCrmOwnerType::ResolveName($entityTypeId) . ' search result provider is not implemented'
		);
	}

	if ($factory && $categoryId)
	{
		$adapter->setCategory(
			$factory->getCategory($categoryId)
		);
	}

	return $adapter;
}