• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/scrum/controllers/epic.php
  • Класс: BitrixTasksScrumControllersEpic
  • Вызов: Epic::createEpicAction
public function createEpicAction(): ?array
{
	$post = $this->request->getPostList()->toArray();

	$userId = UtilUser::getId();

	$epic = new EpicForm();

	$epic->setGroupId($post['groupId'] ?? null);
	$epic->setName($post['name'] ?? null);

	if ($epic->getName() === '')
	{
		$this->errorCollection->setError(
			new Error(
				Loc::getMessage('TASKS_SCRUM_EPIC_GRID_NAME_ERROR')
			)
		);

		return null;
	}

	$epic->setDescription($post['description'] ?? null);
	$epic->setCreatedBy($post['createdBy'] ?? $userId);

	$colorList = [
		'#aae9fc', '#bbecf1', '#98e1dc', '#e3f299', '#ffee95', '#ffdd93', '#dfd3b6', '#e3c6bb',
		'#ffad97', '#ffbdbb', '#ffcbd8', '#ffc4e4', '#c4baed', '#dbdde0', '#bfc5cd', '#a2a8b0'
	];
	$color = ($post['color'] ?? null) ? $post['color'] : array_rand(array_flip($colorList));
	$epic->setColor($color);

	$files = (is_array($post['files'] ?? null) ? $post['files'] : []);

	$epicService = new EpicService($userId);
	$pushService = (Loader::includeModule('pull') ? new PushService() : null);

	$epic = $epicService->createEpic($epic, $pushService);

	if ($epicService->getErrors())
	{
		$this->errorCollection->add($epicService->getErrors());

		return null;
	}

	if ($files)
	{
		$epicService->attachFiles($this->userFieldManager, $epic->getId(), $files);

		if ($epicService->getErrors())
		{
			$this->errorCollection->add($epicService->getErrors());

			return null;
		}
	}

	return $epic->toArray();
}