- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/scrum/service/robotservice.php
- Класс: BitrixTasksScrumServiceRobotService
- Вызов: RobotService::updateRobotsOfLastSprint
public function updateRobotsOfLastSprint(int $groupId, array $stageIdsMap): bool
{
try
{
$projectDocumentType = BizprocDocumentTask::resolveScrumProjectTaskType($groupId);
$currentDocumentType = ['tasks', BizprocDocumentTask::class, $projectDocumentType];
$helper = new BitrixBizprocCopyIntegrationHelper($currentDocumentType);
$robotIds = $helper->getWorkflowTemplateIds();
$triggerIds = $helper->getTriggerIds();
foreach ($robotIds as $robotId)
{
$queryResult = CBPWorkflowTemplateLoader::getList([], ['ID' => $robotId]);
if ($fields = $queryResult->fetch())
{
if (array_key_exists($fields['DOCUMENT_STATUS'], $stageIdsMap))
{
$fields['DOCUMENT_STATUS'] = $stageIdsMap[$fields['DOCUMENT_STATUS']];
if (is_array($fields['TEMPLATE']))
{
foreach ($fields['TEMPLATE'] as &$activity)
{
$activity = $this->updateChangeStageActivity($activity, $stageIdsMap);
}
}
CBPWorkflowTemplateLoader::update($robotId, $fields, true);
}
}
}
foreach ($triggerIds as $triggerId)
{
$queryResult = TriggerTable::getList(['filter' => ['=ID' => $triggerId]]);
if ($fields = $queryResult->fetch())
{
if (array_key_exists($fields['DOCUMENT_STATUS'], $stageIdsMap))
{
$fields['DOCUMENT_STATUS'] = $stageIdsMap[$fields['DOCUMENT_STATUS']];
TriggerTable::update($triggerId, $fields);
}
}
}
return true;
}
catch (Exception $exception)
{
$this->errorCollection->setError(
new Error($exception->getMessage(), self::ERROR_COULD_NOT_UPDATE_ROBOTS)
);
return false;
}
}