- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/scrum/controllers/sprint.php
- Класс: BitrixTasksScrumControllersSprint
- Вызов: Sprint::completeSprintAction
public function completeSprintAction(int $groupId, $direction): ?array
{
$userId = User::getId();
$post = $this->request->getPostList()->toArray();
$groupId = (is_numeric($post['groupId']) ? (int) $post['groupId'] : 0);
$sprintService = new SprintService($userId);
if (!$sprintService->canCompleteSprint($userId, $groupId))
{
$this->errorCollection->setError(
new Error(
Loc::getMessage('TSSC_ERROR_ACCESS_DENIED'),
self::ERROR_ACCESS_DENIED
)
);
return null;
}
$isTargetBacklog = ($direction === 'backlog');
$targetSprintId = (is_numeric($direction) ? (int) $direction : 0);
$entityService = new EntityService();
$kanbanService = new KanbanService();
$itemService = new ItemService();
$taskService = new TaskService($userId);
$pushService = (Loader::includeModule('pull') ? new PushService() : null);
$sprint = $sprintService->getActiveSprintByGroupId($groupId);
if ($sprint->isEmpty())
{
$this->errorCollection->setError(
new Error(
Loc::getMessage('TSSC_ERROR_COULD_NOT_READ_ACTIVE_SPRINT'),
self::ERROR_COULD_NOT_READ_ACTIVE_SPRINT
)
);
return null;
}
$targetEntityId = $targetSprintId;
if ($isTargetBacklog)
{
$backlogService = new BacklogService();
$backlog = $backlogService->getBacklogByGroupId($sprint->getGroupId());
$targetEntityId = $backlog->getId();
}
$sprint = $sprintService->completeSprint(
$sprint,
$entityService,
$taskService,
$kanbanService,
$itemService,
$targetEntityId,
$pushService
);
if ($sprintService->getErrors())
{
$this->errorCollection->add($sprintService->getErrors());
return null;
}
return $sprint->toArray();
}