ContactActivityStatusStatisticEntry::register

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. ContactActivityStatusStatisticEntry
  4. register
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/statistics/contactactivitystatusstatisticentry.php
  • Класс: Bitrix\Crm\Statistics\ContactActivityStatusStatisticEntry
  • Вызов: ContactActivityStatusStatisticEntry::register
static function register($ownerID, array $entityFields = null, array $options = null)
{
	if(!is_int($ownerID))
		$ownerID = (int)$ownerID;

	if($ownerID <= 0)
		throw new Main\ArgumentException('Owner ID must be greater than zero.', 'ownerID');

	if(!is_array($options))
		$options = array();

	$date = isset($options['DATE']) ? $options['DATE'] : null;
	if(!$date)
		throw new Main\ArgumentException('Options DATE must be specified.', 'DATE');

	$providerId = isset($options['PROVIDER_ID']) ? $options['PROVIDER_ID'] : null;
	if(!$providerId)
		throw new Main\ArgumentException('Options PROVIDER_ID must be specified.', 'PROVIDER_ID');
	
	$providerTypeId = isset($options['PROVIDER_TYPE_ID']) ? $options['PROVIDER_TYPE_ID'] : null;
	if(!$providerTypeId)
		throw new Main\ArgumentException('Options PROVIDER_TYPE_ID must be specified.', 'PROVIDER_TYPE_ID');

	$value = isset($options['VALUE']) && is_array($options['VALUE']) ? $options['VALUE'] : null;
	if(!$value)
		throw new Main\ArgumentException('Options VALUE must be specified.', 'VALUE');

	if(!is_array($entityFields))
	{
		$dbResult = \CCrmContact::GetListEx(
			array(),
			array('=ID' => $ownerID, 'CHECK_PERMISSIONS' => 'N'),
			false,
			false,
			array('ASSIGNED_BY_ID')
		);
		$entityFields = is_object($dbResult) ? $dbResult->Fetch() : null;
		if(!is_array($entityFields))
		{
			return false;
		}
	}

	$responsibleID = isset($entityFields['ASSIGNED_BY_ID']) ? (int)$entityFields['ASSIGNED_BY_ID'] : 0;
	$answered = isset($value[StatisticsStatus::Answered]) ?  (int)$value[StatisticsStatus::Answered]: 0;
	$unanswered = isset($value[StatisticsStatus::Unanswered]) ?  (int)$value[StatisticsStatus::Unanswered] : 0;

	if ($answered === 0 && $unanswered === 0)
	{
		ContactActivityStatusStatisticsTable::delete(array(
			'OWNER_ID' => $ownerID,
			'DEADLINE_DATE' => $date,
			'PROVIDER_ID' => $providerId,
			'PROVIDER_TYPE_ID' => $providerTypeId
		));
		return true;
	}

	$present = self::get($ownerID, $date, $providerId, $providerTypeId);
	if(is_array($present))
	{
		if($responsibleID === (int)$present['RESPONSIBLE_ID']
			&& $answered === (int)$present['ANSWERED_QTY']
			&& $unanswered === (int)$present['UNANSWERED_QTY']
		)
			return true;

		if($responsibleID !== (int)$present['RESPONSIBLE_ID'])
		{
			ContactActivityStatusStatisticsTable::synchronize(
				$ownerID,
				array('RESPONSIBLE_ID' => $responsibleID)
			);
		}
	}

	$data = array(
		'OWNER_ID' => $ownerID,
		'DEADLINE_DATE' => $date,
		'PROVIDER_ID' => $providerId,
		'PROVIDER_TYPE_ID' => $providerTypeId,
		'RESPONSIBLE_ID' => $responsibleID,
		'ANSWERED_QTY' => $answered,
		'UNANSWERED_QTY' => $unanswered
	);

	ContactActivityStatusStatisticsTable::upsert($data);

	return true;
}

Добавить комментарий