- Модуль: 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;
}