- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/scrum/service/kanbanservice.php
- Класс: BitrixTasksScrumServiceKanbanService
- Вызов: KanbanService::addTasksToKanban
public function addTasksToKanban(int $sprintId, array $taskIds, int $lastSprintId = 0): bool
{
try
{
if (empty($taskIds))
{
return false;
}
$defaultStageId = $this->getDefaultStageId($sprintId);
if (!$defaultStageId)
{
$this->errorCollection->setError(
new Error('Failed to get the default stage', self::ERROR_COULD_NOT_ADD_TASK)
);
return false;
}
$taskStageIdsMap = [];
if ($lastSprintId)
{
$stageIdsMap = $this->getStageIdsMapBetweenTwoSprints($sprintId, $lastSprintId);
if ($stageIdsMap)
{
$lastStages = $this->getStagesCompletedSprint($lastSprintId);
foreach ($lastStages as $lastStage)
{
$taskIdsInLastSprint = $this->getTaskIds([
'=STAGE.ENTITY_TYPE' => StagesTable::WORK_MODE_ACTIVE_SPRINT,
'TASK_ID' => $taskIds,
'STAGE_ID' => $lastStage['ID']
]);
if ($taskIdsInLastSprint)
{
foreach ($taskIdsInLastSprint as $taskIdInLastSprint)
{
$taskStageIdsMap[$taskIdInLastSprint] = $stageIdsMap[$lastStage['ID']];
}
}
}
}
}
$this->removeTasksFromKanban($sprintId, $taskIds);
foreach ($taskIds as $taskId)
{
$stageId = ($taskStageIdsMap[$taskId] ?? $defaultStageId);
TaskStageTable::add([
'TASK_ID' => $taskId,
'STAGE_ID' => $stageId,
]);
$taskObject = new CTasks;
$taskObject->update($taskId, ['STAGE_ID' => $stageId]);
}
return true;
}
catch (Exception $exception)
{
$this->errorCollection->setError(
new Error($exception->getMessage(), self::ERROR_COULD_NOT_ADD_TASK)
);
return false;
}
}