• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/rest/controllers/scrum/sprint.php
  • Класс: BitrixTasksRestControllersScrumSprint
  • Вызов: Sprint::startAction
public function startAction(int $id)
{
	$id = (int) $id;
	if (!$id)
	{
		$this->errorCollection->add([new Error('Sprint id not found')]);

		return null;
	}

	$entityService = new EntityService();
	$sprint = $entityService->getEntityById($id);

	if (!$sprint->getId())
	{
		$this->errorCollection->add([new Error('Sprint not found')]);

		return null;
	}

	if ($sprint->getEntityType() !== EntityForm::SPRINT_TYPE)
	{
		$this->errorCollection->add([new Error('Sprint not found')]);

		return null;
	}

	if (!$sprint->isPlannedSprint())
	{
		$this->errorCollection->add([new Error('Sprint must be planned')]);

		return null;
	}

	$sprintService = new SprintService();

	if (!$sprintService->canStartSprint($this->getUserId(), $sprint->getGroupId()))
	{
		$this->errorCollection->add([new Error('Access denied')]);

		return null;
	}

	if (!$this->checkAccess($sprint->getGroupId()))
	{
		$this->errorCollection->add([new Error('Access denied')]);

		return null;
	}

	$kanbanService = new KanbanService();
	$taskService = new TaskService($this->getUserId());
	$itemService = new ItemService();
	$backlogService = new BacklogService();
	$robotService = (Loader::includeModule('bizproc') ? new RobotService() : null);

	$sprint = $sprintService->startSprint(
		$sprint,
		$taskService,
		$kanbanService,
		$itemService,
		$backlogService,
		$robotService
	);

	if (!empty($sprintService->getErrors()))
	{
		$this->errorCollection->add([new Error('Unable to start sprint')]);

		return null;
	}

	return $sprint->toArray();
}