Beispiel #1
0
        public ConfirmationResponse Execute(CreateWorkTaskRequest request)
        {
            request.ThrowExceptionIfInvalid();

            var project = _projectRepository.Read(request.ProjectId);
            var entity  = ToDomainEntity(request);
            var backlog = _projectRepository.ReadProductBacklog(project.Id);

            var shouldUpdateProductBacklog = true;

            if (entity.Type == WorkTaskType.Epic)
            {
                backlog.AddTaskToBacklog(new ProductBacklog.WorkTaskWithStatus(entity.Id, ProductBacklog.WorkTaskStatus.ToDo));
            }
            else if (entity.Type == WorkTaskType.UserStory)
            {
                foreach (var task in entity.ChildTasks)
                {
                    backlog.RemoveTaskFromBacklog(task);
                }
                backlog.AddTaskToBacklog(new ProductBacklog.WorkTaskWithStatus(entity.Id, ProductBacklog.WorkTaskStatus.ToDo));
            }
            else if (entity.ParentTask.IsBlankIdentity())
            {
                backlog.AddTaskToBacklog(new ProductBacklog.WorkTaskWithStatus(entity.Id, ProductBacklog.WorkTaskStatus.ToDo));
            }
            else
            {
                shouldUpdateProductBacklog = false;
            }

            _workTaskRepository.Create(entity);
            if (shouldUpdateProductBacklog)
            {
                _projectRepository.UpdateProductBacklog(backlog);
            }

            return(new ConfirmationResponse("Work task created successfully.")
            {
                Id = entity.Id,
            });
        }