Ejemplo n.º 1
0
        public ViewBacklogResponse Execute(ViewBacklogRequest request)
        {
            request.ThrowExceptionIfInvalid();

            var project = _projectRepository.Read(request.ProjectId);
            var team    = _teamRepository.Read(project.TeamId);
            var backlog = _projectRepository.ReadProductBacklog(project.Id);

            var backlogTasks = backlog.Select(x =>
            {
                var task       = _workTaskRepository.Read(x.WorkTaskId);
                var parentTask = task.ParentTask.IsBlankIdentity() ? null : _workTaskRepository.Read(task.ParentTask);

                return(new ViewBacklogResponse.Task
                {
                    Id = task.Id,
                    Name = task.Name,
                    Type = task.Type,
                    Status = x.Status,
                    StoryPoints = task.StoryPoints,
                    ParentTask = parentTask?.ToInfo(),
                });
            });

            var activeBacklogTasks = backlogTasks.Where(x => request.Include(x.Status));

            return(new ViewBacklogResponse
            {
                ProjectId = request.ProjectId,
                Tasks = activeBacklogTasks,
                CanManageBacklog = team.Members.Any(x => x.Id == Identity.FromString(request.UserId))
            });
        }
Ejemplo n.º 2
0
        public static ViewBacklogRequest ToRequest(this string id, ViewBacklogViewModel.BacklogFlavor flavor, string userId)
        {
            var r = new ViewBacklogRequest(userId)
            {
                ProjectId = Identity.FromString(id),
            };

            if (flavor == ViewBacklogViewModel.BacklogFlavor.Done)
            {
                r.Include = status => status == ProductBacklog.WorkTaskStatus.Done;
            }
            return(r);
        }