• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integrity/actualentityselector.php
  • Класс: Bitrix\Crm\Integrity\ActualEntitySelector
  • Вызов: ActualEntitySelector::createDuplicateCriteria
static function createDuplicateCriteria(array $fields, array $searchParameters)
{
	$criteria = array();

	$searchParameters = array_unique($searchParameters);
	foreach ($searchParameters as $searchParameter)
	{
		switch ($searchParameter)
		{
			case self::SEARCH_PARAM_PERSON:
				if (!isset($fields['LAST_NAME']) || !$fields['LAST_NAME'])
				{
					break;
				}

				$criterion = new DuplicatePersonCriterion(
					$fields['LAST_NAME'],
					isset($fields['NAME']) ? $fields['NAME'] : '',
					isset($fields['SECOND_NAME']) ? $fields['SECOND_NAME'] : ''
				);
				$criterion->setStrictComparison(true);
				$criteria[] = $criterion;
				break;

			case self::SEARCH_PARAM_ORGANIZATION:
				if (!isset($fields['COMPANY_TITLE']) || !$fields['COMPANY_TITLE'])
				{
					break;
				}

				$criterion = new DuplicateOrganizationCriterion($fields['COMPANY_TITLE']);
				$criterion->setStrictComparison(true);
				$criteria[] = $criterion;
				break;

			case self::SEARCH_PARAM_EMAIL:
				if (!isset($fields['FM']))
				{
					break;
				}

				$values = DuplicateCommunicationCriterion::extractMultifieldsValues(
					$fields['FM'],
					\CCrmFieldMulti::EMAIL
				);

				foreach ($values as $value)
				{
					$criteria[] = new DuplicateCommunicationCriterion(Communication\Type::EMAIL_NAME, $value);
				}
				break;

			case self::SEARCH_PARAM_PHONE:
				if (!isset($fields['FM']))
				{
					break;
				}

				$values = DuplicateCommunicationCriterion::extractMultifieldsValues(
					$fields['FM'],
					\CCrmFieldMulti::PHONE
				);

				foreach ($values as $value)
				{
					$criteria[] = new DuplicateCommunicationCriterion(Communication\Type::PHONE_NAME, (string) $value);
				}
				break;

			default:
				throw new ArgumentException('Unsupported search parameter "' . $searchParameter .'"');
		}
	}

	return $criteria;
}