• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/effective.php
  • Класс: BitrixTasksInternalsEffective
  • Вызов: Effective::getAverageEfficiencyForGroups
static function getAverageEfficiencyForGroups(
	DateTime $dateFrom = null,
	DateTime $dateTo = null,
	int $userId = 0,
	array $groupIds = []
): array
{
	if (!$dateFrom || !$dateTo)
	{
		$datesRange = static::getDatesRange();

		$dateFrom = $datesRange['FROM'];
		$dateTo = $datesRange['TO'];
	}

	$violations = static::getViolationsCountForGroups($dateFrom, $dateTo, $userId, $groupIds);
	$inProgress = static::getInProgressCountForGroups($dateFrom, $dateTo, $userId, $groupIds);

	$efficiencies = array_fill_keys($groupIds, 100);
	foreach ($efficiencies as $groupId => $efficiency)
	{
		if ($inProgress[$groupId] > 0)
		{
			$efficiencies[$groupId] = (int)round(100 - ($violations[$groupId] / $inProgress[$groupId]) * 100);
		}
		elseif ($violations[$groupId] > 0)
		{
			$efficiencies[$groupId] = 0;
		}

		if ($efficiencies[$groupId] < 0)
		{
			$efficiencies[$groupId] = 0;
		}
	}

	return $efficiencies;
}