- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/scrum/service/sprintservice.php
- Класс: BitrixTasksScrumServiceSprintService
- Вызов: SprintService::getCompletedTasksMap
public function getCompletedTasksMap(
SprintRanges $sprintRanges,
TaskService $taskService,
array $completedTaskIds
): array
{
$mapCompletedTasks = [];
$sprintDayRanges = [];
$taskCompleteTimeDayRanges = [];
foreach ($sprintRanges->getAllDays() as $dayNumber => $dayTime)
{
$mapCompletedTasks[$dayNumber] = [];
$sprintDayRanges[$dayNumber] = [
'start' => strtotime('today', $dayTime),
'end' => strtotime('tomorrow', $dayTime) - 1
];
}
foreach ($completedTaskIds as $completedTaskId)
{
$taskClosedDate = $taskService->getTaskClosedDate($completedTaskId);
if ($taskClosedDate)
{
$taskClosedTime = $taskClosedDate->getTimestamp();
}
else
{
$taskClosedTime = $sprintRanges->getLastSprintDayTime();
}
$taskCompleteTimeDayRanges[$completedTaskId] = [
'start' => strtotime('today', $taskClosedTime),
'end' => strtotime('tomorrow', $taskClosedTime) - 1
];
}
foreach ($sprintDayRanges as $dayNumber => $sprintDayRange)
{
foreach ($taskCompleteTimeDayRanges as $completedTaskId => $taskCompleteTimeDayRange)
{
if ($this->isTimeOverlapping($sprintDayRange, $taskCompleteTimeDayRange))
{
$mapCompletedTasks[$dayNumber][] = $completedTaskId;
}
}
}
return $mapCompletedTasks;
}