- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/scrum/controllers/sprint.php
- Класс: BitrixTasksScrumControllersSprint
- Вызов: Sprint::getDataForSprintStartFormAction
public function getDataForSprintStartFormAction(int $groupId, int $sprintId): ?array
{
$userId = User::getId();
$entityService = new EntityService();
$sprintService = new SprintService($userId);
$itemService = new ItemService();
$taskService = new TaskService($userId);
$kanbanService = new KanbanService();
$sprint = $sprintService->getSprintById($sprintId);
if ($sprint->isEmpty())
{
$this->errorCollection->setError(
new Error(
Loc::getMessage('TSSC_ERROR_COULD_NOT_READ_SPRINT'),
self::ERROR_COULD_NOT_READ_SPRINT
)
);
return null;
}
$sprintData = $sprintService->getSprintData($sprint);
$sprintData['dateStart'] = ConvertTimeStamp($sprintData['dateStart']);
$sprintData['dateEnd'] = ConvertTimeStamp($sprintData['dateEnd']);
$sprintCounters = $entityService->getCounters(
$groupId,
$sprint->getId(),
$taskService
);
$sprintData['numberTasks'] = $sprintCounters['countTotal'];
$sprintData['storyPoints'] = (float) $sprintCounters['storyPoints'];
$sprintData['numberUnevaluatedTasks'] = 0;
$taskIds = $sprintCounters['taskIds'];
$epics = [];
foreach ($entityService->getItems($sprint->getId()) as $itemObject)
{
$item = new ItemForm();
$item->fillFromDatabase($itemObject->collectValues());
if (in_array($item->getSourceId(), $taskIds))
{
$itemData = $itemService->getItemData($item);
if ($itemData['epicId'])
{
$epicData = $this->getEpicData($itemData['epicId']);
if ($epicData)
{
$itemData['epic'] = $epics[$itemData['epicId']] = $epicData;
}
}
if ($item->getStoryPoints() === '')
{
$sprintData['numberUnevaluatedTasks']++;
}
}
}
$sprintData['epics'] = array_values($epics);
$lastStoryPoints = 0;
$lastCompletedSprint = $sprintService->getLastCompletedSprint($groupId);
if (!$lastCompletedSprint->isEmpty())
{
$lastStoryPoints = $sprintService->getCompletedStoryPoints(
$lastCompletedSprint,
$kanbanService,
$itemService
)
+ $sprintService->getUnCompletedStoryPoints(
$lastCompletedSprint,
$kanbanService,
$itemService
);
}
$differenceStoryPoints = $sprintData['storyPoints'] - $lastStoryPoints;
$sprintData['differenceMarker'] = $differenceStoryPoints >= 0;
$sprintData['differenceStoryPoints'] = ($differenceStoryPoints > 0 ? '+' : '') . $differenceStoryPoints;
return $sprintData;
}