• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integrity/duplicateentityranking.php
  • Класс: Bitrix\Crm\Integrity\DuplicateEntityRanking
  • Вызов: DuplicateEntityRanking::registerEntityStatistics
static function registerEntityStatistics($entityTypeID, $entityID, array $entityFields)
{
	$lastChanged = 0;
	$completeness = 0;
	if($entityTypeID === \CCrmOwnerType::Contact)
	{
		if(isset($entityFields['DATE_MODIFY']) && $entityFields['DATE_MODIFY'] !== '')
		{
			$lastChanged = MakeTimeStamp($entityFields['DATE_MODIFY']);
		}

		if(isset($entityFields['NAME']) && $entityFields['NAME'] !== '')
		{
			$completeness++;
		}
		if(isset($entityFields['SECOND_NAME']) && $entityFields['SECOND_NAME'] !== '')
		{
			$completeness++;
		}
		if(isset($entityFields['LAST_NAME']) && $entityFields['LAST_NAME'] !== '')
		{
			$completeness++;
		}
	}
	elseif($entityTypeID === \CCrmOwnerType::Company)
	{
		if(isset($entityFields['DATE_MODIFY']) && $entityFields['DATE_MODIFY'] !== '')
		{
			$lastChanged = MakeTimeStamp($entityFields['DATE_MODIFY']);
		}

		if(isset($entityFields['TITLE']) && $entityFields['TITLE'] !== '')
		{
			$completeness++;
		}
		if(isset($entityFields['ADDRESS']) && $entityFields['ADDRESS'] !== '')
		{
			$completeness++;
		}
		if(isset($entityFields['ADDRESS_LEGAL']) && $entityFields['ADDRESS_LEGAL'] !== '')
		{
			$completeness++;
		}
	}
	elseif($entityTypeID === \CCrmOwnerType::Lead)
	{
		if(isset($entityFields['DATE_MODIFY']) && $entityFields['DATE_MODIFY'] !== '')
		{
			$lastChanged = MakeTimeStamp($entityFields['DATE_MODIFY']);
		}

		if(isset($entityFields['TITLE']) && $entityFields['TITLE'] !== '')
		{
			$completeness++;
		}
		if(isset($entityFields['COMPANY_TITLE']) && $entityFields['COMPANY_TITLE'] !== '')
		{
			$completeness++;
		}
		if(isset($entityFields['NAME']) && $entityFields['NAME'] !== '')
		{
			$completeness++;
		}
		if(isset($entityFields['SECOND_NAME']) && $entityFields['SECOND_NAME'] !== '')
		{
			$completeness++;
		}
		if(isset($entityFields['LAST_NAME']) && $entityFields['LAST_NAME'] !== '')
		{
			$completeness++;
		}
		if(isset($entityFields['ADDRESS']) && $entityFields['ADDRESS'] !== '')
		{
			$completeness++;
		}
	}
	else
	{
		throw new Main\NotSupportedException('Entity type: '.\CCrmOwnerType::ResolveName($entityTypeID).' is not supported in current context');
	}

	if($lastChanged <= 0)
	{
		$lastChanged = time() + \CTimeZone::GetOffset();
	}

	$completeness += count(DuplicateCommunicationCriterion::getRegisteredTypes($entityTypeID, $entityID));

	Entity\DuplicateEntityStatisticsTable::upsert(
		array(
			'ENTITY_TYPE_ID' => $entityTypeID,
			'ENTITY_ID' => $entityID,
			'RANKING_DATA' => serialize(
				array(
					'LAST_CHANGED' => $lastChanged,
					'COMPLETENESS' => $completeness
				)
			)
		)
	);
}