Exemplo n.º 1
0
        public ConfirmationResponse Execute(AuthorizedIdRequest request)
        {
            request.ThrowExceptionIfInvalid();

            var workTask = _workTaskRepository.Read(request.Id);
            var backlog  = _projectRepository.ReadProductBacklog(workTask.ProjectId);

            var taskInBacklog = backlog.FirstOrDefault(x => x.WorkTaskId == workTask.Id);

            if (taskInBacklog != null)
            {
                foreach (var s in workTask.ChildTasks)
                {
                    if (!backlog.IsTaskInBacklog(s))
                    {
                        backlog.AddTaskToBacklog(new ProductBacklog.WorkTaskWithStatus(s, taskInBacklog.Status));
                    }
                }

                backlog.RemoveTaskFromBacklog(workTask.Id);
            }

            _projectRepository.UpdateProductBacklog(backlog);
            _workTaskRepository.Delete(workTask.Id);

            return(new ConfirmationResponse($"WorkTask {workTask.Name} successfully deleted.")
            {
                Id = workTask.Id,
            });
        }
Exemplo n.º 2
0
        public ViewProjectResponse Execute(AuthorizedIdRequest request)
        {
            request.ThrowExceptionIfInvalid();

            var entity   = _projectRepository.Read(request.Id);
            var response = new ViewProjectResponse
            {
                Id               = request.Id,
                Name             = entity.Name,
                DefinitionOfDone = entity.DefinitionOfDone.Conditions,
                Description      = entity.Description,
                TeamId           = entity.TeamId,
            };
            var sprint = _sprintRepository.ReadCurrentSprint(request.Id);

            if (sprint != null)
            {
                response.Sprint = _viewSprintUseCase.Execute(new AuthorizedIdRequest(request.UserId)
                {
                    Id = sprint.Id,
                });
                response.Report = _sprintReportUseCase.Execute(new AuthorizedIdRequest(request.UserId)
                {
                    Id = sprint.Id,
                });
            }

            return(response);
        }
Exemplo n.º 3
0
        public SprintReportResponse Execute(AuthorizedIdRequest request)
        {
            request.ThrowExceptionIfInvalid();

            var sprint  = _sprintRepository.Read(request.Id);
            var backlog = _sprintRepository.ReadSprintBacklog(sprint.Id);
            var records = _sprintRepository.ReadHistoryRecords(sprint.Id);

            var groupByDate = records.GroupBy(x => x.Date).Select(x => new SprintReportResponse.Record
            {
                Date            = x.Key,
                DoneTasks       = x.Average(y => y.DoneTasks),
                ToDoTasks       = x.Average(y => y.ToDoTasks),
                InProgressTasks = x.Average(y => y.InProgressTasks),
            }).OrderBy(x => x.Date).ToList();

            var stories = backlog.Stories.Select(x =>
            {
                var story = _workTaskRepository.Read(x);

                return(new SprintReportResponse.Story
                {
                    Id = story.Id,
                    Name = story.Name,
                    StoryPoints = story.StoryPoints,
                    Completed = backlog.CompletedStories.Contains(x),
                    CompletedTasks = backlog.Tasks.Count(y => y.ParentTaskId == x && y.Status == SprintBacklog.WorkTaskStatus.Done),
                    TotalTasks = backlog.Tasks.Count(y => y.ParentTaskId == x),
                });
            });

            if (groupByDate.Last().Date.Date != sprint.TimeSpan.Item2.Date)
            {
                var diff = sprint.TimeSpan.Item2.Date.Subtract(groupByDate.Last().Date.Date).Days;
                for (var i = 1; i <= diff; ++i)
                {
                    var item = groupByDate.Last();
                    groupByDate.Add(new SprintReportResponse.Record
                    {
                        Date            = item.Date.AddDays(i),
                        DoneTasks       = item.DoneTasks,
                        ToDoTasks       = item.ToDoTasks,
                        InProgressTasks = item.InProgressTasks,
                    });
                }
            }

            return(new SprintReportResponse
            {
                Sprint = sprint.ToInfo(),
                Goal = sprint.Goal,
                ProjectId = sprint.ProjectId,
                TimeSpan = sprint.TimeSpan,
                Stories = stories.ToArray(),
                Records = groupByDate.ToArray(),
            });
        }
Exemplo n.º 4
0
        public ConfirmationResponse Execute(AuthorizedIdRequest request)
        {
            request.ThrowExceptionIfInvalid();

            var meeting = _meetingRepository.Read(request.Id);

            _meetingRepository.Delete(meeting.Id);

            return(new ConfirmationResponse($"Meeting {meeting.Name} successfully deleted.")
            {
                Id = meeting.Id,
            });
        }
Exemplo n.º 5
0
        public ConfirmationResponse Execute(AuthorizedIdRequest request)
        {
            request.ThrowExceptionIfInvalid();

            var document = _documentRepository.Read(request.Id);

            _documentRepository.Delete(document.Id);

            return(new ConfirmationResponse($"Document {document.Name} successfully deleted.")
            {
                Id = document.Id,
            });
        }
Exemplo n.º 6
0
        public ConfirmationResponse Execute(AuthorizedIdRequest request)
        {
            request.ThrowExceptionIfInvalid();

            var team = _teamRepository.Read(request.Id);

            _teamRepository.Delete(team.Id);

            return(new ConfirmationResponse($"Team {team.Name} successfully deleted.")
            {
                Id = team.Id,
            });
        }
        public ViewProjectHistoryResponse Execute(AuthorizedIdRequest request)
        {
            request.ThrowExceptionIfInvalid();

            var team     = _teamRepository.Read(request.Id);
            var projects = _projectRepository.ReadTeamProjectHistory(team.Id);

            return(new ViewProjectHistoryResponse
            {
                Team = team.ToInfo(),
                Projects = projects.Records.Select(x => new ViewProjectHistoryResponse.Project
                {
                    Id = x.RecordId,
                    To = x.To,
                    From = x.From
                })
            });
        }
Exemplo n.º 8
0
        public ViewTeamHistoryResponse Execute(AuthorizedIdRequest request)
        {
            request.ThrowExceptionIfInvalid();

            var project = _projectRepository.Read(request.Id);
            var teams   = _projectRepository.ReadProjectTeamHistory(project.Id);

            return(new ViewTeamHistoryResponse
            {
                Project = project.ToInfo(),
                Teams = teams.Records.Select(x => new ViewTeamHistoryResponse.Team
                {
                    Id = x.RecordId,
                    To = x.To,
                    From = x.From,
                }),
            });
        }
Exemplo n.º 9
0
        public ViewSprintResponse Execute(AuthorizedIdRequest request)
        {
            request.ThrowExceptionIfInvalid();

            var sprint  = _sprintRepository.Read(request.Id);
            var backlog = _sprintRepository.ReadSprintBacklog(sprint.Id);

            if (sprint.Status == SprintStatus.Planned)
            {
                var tasks = new List <SprintBacklog.WorkTaskWithStatus>();
                foreach (var storyId in backlog.Stories)
                {
                    var story = _workTaskRepository.Read(storyId);
                    tasks.AddRange(
                        story.ChildTasks
                        .Select(task => new SprintBacklog.WorkTaskWithStatus(task, storyId, SprintBacklog.WorkTaskStatus.ToDo)));
                }

                backlog.Tasks = tasks;
            }

            var responseStories = backlog.Stories.Select(x => new ViewSprintResponse.Story
            {
                Id        = x,
                Completed = backlog.CompletedStories.Contains(x),
                Tasks     = backlog.Tasks
                            .Where(y => y.ParentTaskId == x)
                            .Select(y => new Tuple <Identity, SprintBacklog.WorkTaskStatus>(y.WorkTaskId, y.Status)),
            });

            return(new ViewSprintResponse
            {
                Id = sprint.Id,
                Goal = sprint.Goal,
                Name = sprint.Name,
                ProjectId = sprint.ProjectId,
                TimeSpan = sprint.TimeSpan,
                Stories = responseStories,
                CanDelete = sprint.Status == SprintStatus.Planned,
                Documents = sprint.Documents,
                IsReportAvailable = sprint.Status != SprintStatus.Planned,
            });
        }
Exemplo n.º 10
0
        public ViewTeamHistoryResponse Execute(AuthorizedIdRequest request)
        {
            request.ThrowExceptionIfInvalid();

            var person = _personRepository.Read(request.Id);
            var teams  = _teamRepository.ReadPersonTeamHistory(person.Id);

            return(new ViewTeamHistoryResponse
            {
                Person = person.ToInfo(),
                Teams = teams.Records.Select(x => new ViewTeamHistoryResponse.Team
                {
                    Id = x.RecordId.Item1,
                    Roles = x.RecordId.Item2,
                    To = x.To,
                    From = x.From,
                }),
            });
        }
Exemplo n.º 11
0
        public ViewDocumentResponse Execute(AuthorizedIdRequest request)
        {
            request.ThrowExceptionIfInvalid();

            var entity = _documentRepository.ReadWithReferences(request.Id);

            return(new ViewDocumentResponse
            {
                Id = entity.Document.Id,
                Name = entity.Document.Name,
                Project = entity.Document.Project,
                Tasks = entity.Tasks,
                Content = entity.Document.Content,
                Kind = entity.Document.Kind,
                Meetings = entity.Meetings,
                Links = entity.Document.Links,
                Sprints = entity.Sprints,
            });
        }
Exemplo n.º 12
0
        public ViewMeetingResponse Execute(AuthorizedIdRequest request)
        {
            request.ThrowExceptionIfInvalid();

            var entity = _meetingRepository.Read(request.Id);

            return(new ViewMeetingResponse
            {
                Id = entity.Id,
                Description = entity.Description,
                InvolvedPersons = entity.InvolvedPersons,
                Name = entity.Name,
                OrganizedBy = entity.OrganizedBy,
                ProjectId = entity.ProjectId,
                Time = entity.Time,
                Duration = entity.Duration,
                Log = entity.Log,
                Documents = entity.Documents,
            });
        }
Exemplo n.º 13
0
        public ProjectReportResponse Execute(AuthorizedIdRequest request)
        {
            request.ThrowExceptionIfInvalid();

            var project = _projectRepository.Read(request.Id);
            var records = _projectRepository.ReadHistoryRecords(project.Id);
            var sprints = _sprintRepository.ReadSprints(project.Id, SprintStatus.Done);

            var recordsByDate = records.GroupBy(x => x.Date).Select(x => new ProjectReportResponse.Record
            {
                Date          = x.Key,
                DoneTasks     = x.Average(y => y.DoneTasks),
                ToDoTasks     = x.Average(y => y.ToDoTasks),
                InSprintTasks = x.Average(y => y.InSprintTasks),
                ReadyTasks    = x.Average(y => y.ReadyTasks),
            });

            var sprintReports = sprints.Select(x =>
            {
                var sprintBacklog = _sprintRepository.ReadSprintBacklog(x.Id);

                return(new ProjectReportResponse.Sprint
                {
                    Id = x.Id,
                    Name = x.Name,
                    EndDate = x.TimeSpan.Item2,
                    PlannedStories = sprintBacklog.Stories.Count,
                    PlannedValue = sprintBacklog.Stories.Sum(y => _workTaskRepository.Read(y).StoryPoints ?? 0),
                    CompletedStories = sprintBacklog.CompletedStories.Count,
                    CompletedValue = sprintBacklog.CompletedStories.Sum(y => _workTaskRepository.Read(y).StoryPoints ?? 0),
                });
            });

            return(new ProjectReportResponse
            {
                Project = project.ToInfo(),
                Records = recordsByDate.ToArray(),
                Sprints = sprintReports.ToArray(),
            });
        }
Exemplo n.º 14
0
        public ViewMemberHistoryResponse Execute(AuthorizedIdRequest request)
        {
            request.ThrowExceptionIfInvalid();

            var team    = _teamRepository.Read(request.Id);
            var history = _teamRepository.ReadTeamPersonHistory(team.Id);

            return(new ViewMemberHistoryResponse
            {
                Team = team.ToInfo(),
                Members = history.Records.Select(x => new ViewMemberHistoryResponse.TeamMembers(
                                                     x.RecordId.Select(y => new ViewMemberHistoryResponse.Member
                {
                    Id = y.Item1,
                    Role = y.Item2,
                }))
                {
                    To = x.To,
                    From = x.From,
                }),
            });
        }
Exemplo n.º 15
0
        public ConfirmationResponse Execute(AuthorizedIdRequest request)
        {
            request.ThrowExceptionIfInvalid();

            var sprint        = _sprintRepository.Read(request.Id);
            var sprintBacklog = _sprintRepository.ReadSprintBacklog(sprint.Id);

            var projectBacklog = _projectRepository.ReadProductBacklog(sprint.ProjectId);

            foreach (var s in sprintBacklog.Stories)
            {
                projectBacklog.UpdateTask(new ProductBacklog.WorkTaskWithStatus(s, ProductBacklog.WorkTaskStatus.Ready));
            }

            _sprintRepository.Delete(sprint.Id);
            _projectRepository.UpdateProductBacklog(projectBacklog);

            return(new ConfirmationResponse($"Sprint {sprint.Name} successfully deleted.")
            {
                Id = sprint.Id,
            });
        }
Exemplo n.º 16
0
        public ViewWorkTaskResponse Execute(AuthorizedIdRequest request)
        {
            request.ThrowExceptionIfInvalid();

            var entity = _workTaskRepository.Read(request.Id);

            return(new ViewWorkTaskResponse
            {
                Id = entity.Id,
                Name = entity.Name,
                Description = entity.Description,
                ProjectId = entity.ProjectId,
                ParentTask = entity.ParentTask,
                Type = entity.Type,
                ChildTasks = entity.ChildTasks,
                StoryPoints = entity.StoryPoints,
                Steps = entity.Steps,
                Comments = entity.Comments,
                CanEdit = CanWorkTaskBeEdited(entity),
                CanEditParent = entity.ParentTask.IsBlankIdentity() || CanWorkTaskBeEdited(_workTaskRepository.Read(entity.ParentTask)),
                Documents = entity.Documents,
            });
        }