• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/effective.php
  • Класс: BitrixTasksInternalsEffective
  • Вызов: Effective::getAverageEfficiency
static function getAverageEfficiency(DateTime $dateFrom = null, DateTime $dateTo = null, $userId = 0, $groupId = 0)
{
	if (!$dateFrom || !$dateTo)
	{
		// DO NOT USE DEFAULT FILTER FOR NOW
//			$defaultFilterFieldsValues = static::getDefaultFilterFieldsValues($userId);
//
//			$dateFrom = $defaultFilterFieldsValues['FROM'];
//			$dateTo = $defaultFilterFieldsValues['TO'];
//			$groupId = $defaultFilterFieldsValues['GROUP_ID'];
//
//			// filter options probably were not set in b_user_options, anyway still haven't dates
//			if (!$dateFrom || !$dateTo)
//			{
//				$datesRange = static::getDatesRange();
//
//				$dateFrom = $datesRange['FROM'];
//				$dateTo = $datesRange['TO'];
//			}

		$datesRange = static::getDatesRange();

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

	$efficiency = 100;
	$violations = static::getViolationsCount($dateFrom, $dateTo, $userId, $groupId);
	$inProgress = static::getInProgressCount($dateFrom, $dateTo, $userId, $groupId);

	if ($inProgress > 0)
	{
		$efficiency = (int)round(100 - ($violations / $inProgress) * 100);
	}
	else if ($violations > 0)
	{
		$efficiency = 0;
	}

	if ($efficiency < 0)
	{
		$efficiency = 0;
	}

	return $efficiency;
}