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