CommunicationStatistics::getDataForRebuild

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CommunicationStatistics
  4. getDataForRebuild
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/activity/communicationstatistics.php
  • Класс: Bitrix\Crm\Activity\CommunicationStatistics
  • Вызов: CommunicationStatistics::getDataForRebuild
static function getDataForRebuild($ownerTypeId, array $ownerIds)
{
	$filter = array(
		'=BINDINGS.OWNER_TYPE_ID' => $ownerTypeId,
		'@BINDINGS.OWNER_ID' => $ownerIds,
	);

	\CTimeZone::Disable();
	$activitiesList = Crm\ActivityTable::getList(array(
		'select' => array(
			'ID', 'TYPE_ID', 'PROVIDER_ID', 'PROVIDER_TYPE_ID', 'B_OWNER_ID' => 'BINDINGS.OWNER_ID', 'COMPLETED', 'DEADLINE',
			'RESULT_STATUS', 'RESULT_SOURCE_ID', 'RESULT_MARK', 'RESULT_STREAM', 'RESULT_VALUE', 'RESULT_SUM', 'RESULT_CURRENCY_ID'
		),
		'filter' => $filter
	));
	\CTimeZone::Enable();

	$data = array();
	while ($activity = $activitiesList->fetch())
	{
		$provider = \CCrmActivity::GetActivityProvider($activity);
		if (!$provider || !$activity['DEADLINE'])
			continue;

		$date = $activity['DEADLINE']->format('Y-m-d');

		$providerId = $provider::getId();
		$typeId = $provider::getTypeId($activity);
		$ownerId = (int)$activity['B_OWNER_ID'];

		if ($ownerId <= 0)
			continue;

		if (!isset($data[$providerId]))
			$data[$providerId] = array();
		if (!isset($data[$providerId][$typeId]))
			$data[$providerId][$typeId] = array();
		if (!isset($data[$providerId][$typeId][$ownerId]))
			$data[$providerId][$typeId][$ownerId] = array();
		if (!isset($data[$providerId][$typeId][$ownerId][$date]))
			$data[$providerId][$typeId][$ownerId][$date] = array();

		$data[$providerId][$typeId][$ownerId][$date][] = $activity;
	}

	return $data;
}

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