ContactActivityStatusStatisticEntry::prepareTimeline

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

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

	$query = new Query(Crm\ActivityTable::getEntity());

	$connection = Main\Application::getConnection();
	if($connection instanceof Main\DB\MysqlCommonConnection)
	{
		$query->registerRuntimeField('', new ExpressionField('DEADLINE_DATE', 'DATE(DEADLINE)'));
	}
	elseif($connection instanceof Main\DB\MssqlConnection)
	{
		$query->registerRuntimeField('', new ExpressionField('DEADLINE_DATE', 'CAST(FLOOR(CAST(DEADLINE AS FLOAT)) AS DATETIME)'));
	}
	elseif($connection instanceof Main\DB\OracleConnection)
	{
		$query->registerRuntimeField('', new ExpressionField('DEADLINE_DATE', 'TRUNC(DEADLINE)'));
	}
	$query->addSelect('DEADLINE_DATE');
	$query->addGroup('DEADLINE_DATE');

	$subQuery = new Query(Crm\ActivityBindingTable::getEntity());
	$subQuery->addSelect('ACTIVITY_ID');
	$subQuery->addFilter('=OWNER_TYPE_ID', \CCrmOwnerType::Contact);
	$subQuery->addFilter('=OWNER_ID', $ownerID);

	$query->registerRuntimeField('',
		new ReferenceField('B',
			Base::getInstanceByQuery($subQuery),
			array('=this.ID' => 'ref.ACTIVITY_ID'),
			array('join_type' => 'INNER')
		)
	);

	$dbResult = $query->exec();
	$dates = array();
	while($fieilds = $dbResult->fetch())
	{
		$dates[] = $fieilds['DEADLINE_DATE'];
	}
	return $dates;
}

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