• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/rest/controllers/scrum/task.php
  • Класс: BitrixTasksRestControllersScrumTask
  • Вызов: Task::createScrumTask
private function createScrumTask(int $id, array $fields): ItemForm
{
	$scrumItem = new ItemForm();

	$entityId = array_key_exists('entityId', $fields) ? (int)$fields['entityId'] : 0;
	if (!$entityId)
	{
		return $scrumItem;
	}

	$entity = (new EntityService($this->getUserId()))->getEntityById($entityId);
	if (!$entity->getId())
	{
		$this->errorCollection->add([new Error('Entity not found.')]);

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

		return $scrumItem;
	}

	$task = null;
	try
	{
		$task = (new CTaskItem($id, $this->getUserId()))->getData();
	}
	catch (Exception $e)
	{

	}

	if (!$task)
	{
		$this->errorCollection->add([new Error('Task not found.')]);

		return $scrumItem;
	}

	if (
		!$this->checkAccess((int) $task['GROUP_ID'])
		|| (int) $task['GROUP_ID'] !== $entity->getGroupId()
	)
	{
		$this->errorCollection->add([new Error('Access denied')]);

		return $scrumItem;
	}

	$createdBy = 0;
	if (array_key_exists('createdBy', $fields) && is_numeric($fields['createdBy']))
	{
		$createdBy = (int) $fields['createdBy'];
		if (!$this->existsUser($createdBy))
		{
			$this->errorCollection->add([new Error('createdBy user not found')]);

			return $scrumItem;
		}
	}
	$scrumItem->setCreatedBy($createdBy ?? $this->getUserId());

	$scrumItem->setEntityId($entityId);
	$scrumItem->setSourceId((int) $task['ID']);

	$sort = 1;
	if (array_key_exists('sort', $fields) && is_numeric($fields['sort']))
	{
		$sort = (int) $fields['sort'];
	}
	$scrumItem->setSort($sort);

	return $this->getItemService()->createTaskItem($scrumItem);
}