• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/effective.php
  • Класс: BitrixTasksInternalsEffective
  • Вызов: Effective::getEfficiencyForGraph
static function getEfficiencyForGraph(
	DateTime $timeFrom = null,
	Datetime $timeTo = null,
	int $userId = 0,
	int $groupId = 0,
	string $groupBy = 'DATE'
)
{
	if ($groupBy !== 'HOUR')
	{
		$groupBy = 'DATE';
	}
	$expressions = [
		'EFFECTIVE' => new EntityExpressionField('EFFECTIVE', 'AVG(EFFECTIVE)'),
		'DATE' => new EntityExpressionField('DATE', 'DATE(DATETIME)'),
		'HOUR' => new EntityExpressionField('HOUR', 'DATE_FORMAT(DATETIME, "%%Y-%%m-%%d %%H:00:01")')
	];
	$select = [$expressions['EFFECTIVE'], $expressions[$groupBy]];
	$group = [$groupBy];

	$query = EffectiveTable::query();
	$query->setSelect($select);
	$query
		->where('DATETIME', '>=', $timeFrom)
		->where('DATETIME', '<=', $timeTo)
	;
	if ($userId)
	{
		$query->where('USER_ID', $userId);
		$group[] = 'USER_ID';
	}
	if ($groupId)
	{
		$query->where('GROUP_ID', $groupId);
		$group[] = 'GROUP_ID';
	}
	$query->setGroup($group);

	return $query->exec()->fetchAll();
}