- Модуль: 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;
}