Example #1
0
 public function findMultifieldDuplicates($type, \Bitrix\Crm\EntityAdapter $adapter, DuplicateSearchParams $params)
 {
     if (!is_string($type)) {
         throw new Main\ArgumentTypeException('type', 'string');
     }
     if ($type !== 'EMAIL' && $type !== 'PHONE') {
         throw new Main\NotSupportedException("Type: '{$type}' is not supported in current context");
     }
     $allMultiFields = $adapter->getFieldValue('FM');
     $multiFields = is_array($allMultiFields) && isset($allMultiFields[$type]) ? $allMultiFields[$type] : null;
     if (!is_array($multiFields) || empty($multiFields)) {
         return array();
     }
     $criterions = array();
     $dups = array();
     foreach ($multiFields as &$multiField) {
         $value = isset($multiField['VALUE']) ? $multiField['VALUE'] : '';
         if ($value === '') {
             continue;
         }
         $criterion = new DuplicateCommunicationCriterion($type, $value);
         $isExists = false;
         foreach ($criterions as $curCriterion) {
             /** @var DuplicateCriterion $curCriterion */
             if ($criterion->equals($curCriterion)) {
                 $isExists = true;
                 break;
             }
         }
         if ($isExists) {
             continue;
         }
         $criterions[] = $criterion;
         $duplicate = $criterion->find();
         if ($duplicate !== null) {
             $dups[] = $duplicate;
         }
     }
     unset($multiField);
     return $dups;
 }