CommunicationStatistics::getActivities

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CommunicationStatistics
  4. getActivities
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/activity/communicationstatistics.php
  • Класс: Bitrix\Crm\Activity\CommunicationStatistics
  • Вызов: CommunicationStatistics::getActivities
static function getActivities($ownerTypeId, array $ownerIds, $activity)
{
	if (count($ownerIds) <= 0)
		return array();

	$date = static::getDeadline($activity);
	
	$startTime = new DateTime($date->format(DateTime::getFormat()));
	$endTime = new DateTime($date->format(DateTime::getFormat()));
	$endTime->setTime(23, 59, 59);
	$provider = \CCrmActivity::GetActivityProvider($activity);

	$filter = array(
		'>=DEADLINE' => $startTime,
		'<=DEADLINE' => $endTime,
		'=BINDINGS.OWNER_TYPE_ID' => $ownerTypeId,
		'@BINDINGS.OWNER_ID' => $ownerIds,
	);

	$typeId = \CCrmActivity::GetActivityType($activity);
	if ($typeId !== \CCrmActivityType::Provider)
		$filter['=TYPE_ID'] = $typeId;
	else
	{
		$filter['=PROVIDER_ID'] = $provider::getId();
		$filter['=PROVIDER_TYPE_ID'] = $provider::getTypeId($activity);
	}

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

	$result = array();
	if ($activitiesList)
	{
		while($activity = $activitiesList->fetch())
		{
			if (!isset($result[$activity['B_OWNER_ID']]))
				$result[$activity['B_OWNER_ID']] = array();

			$result[$activity['B_OWNER_ID']][] = $activity;
		}
	}

	return $result;
}

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