Example #1
0
        public async Task <BugResponse> Handle(ReadProjectBugRequest request)
        {
            var project = await _projectRepository.ReadById(request.ProjectId);

            if (project == default)
            {
                throw new ArgumentNullException("Project not found");
            }

            var foundBug = project.Bugs
                           .FirstOrDefault(bug => bug.Id == request.BugId);

            if (foundBug == default)
            {
                throw new ArgumentNullException("Bug for this project not found");
            }

            return(foundBug.Adapt <BugResponse>());
        }
        public async Task <IActionResult> UpdateProjectBug([BindRequired] long?projectId, [BindRequired] long?bugId)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction(nameof(Details), new { projectId = projectId.Value }));
            }

            var readProjectRequest = new ReadProjectRequest
            {
                ProjectId = projectId.Value
            };
            var foundProject = await _projectApplicationService.Handle(readProjectRequest);

            var readProjectBugRequest = new ReadProjectBugRequest
            {
                ProjectId = projectId.Value,
                BugId     = bugId.Value
            };
            var foundBug = await _projectApplicationService.Handle(readProjectBugRequest);

            var viewModel = new UpdateProjectBugViewModel
            {
                Assignee    = foundBug.Assignee.Id,
                ProjectId   = projectId,
                BugId       = bugId,
                TeamMembers = foundProject.TeamMembers
                              .Select(user => new SelectListItem {
                    Value = user.Id.ToString(), Text = user.FullName
                })
                              .ToList(),
                Description = foundBug.Description,
                DueDate     = foundBug.DueDate,
                Priority    = foundBug.Priority,
                Status      = foundBug.Status,
                Title       = foundBug.Title
            };

            return(View(viewModel));
        }
        public async Task <IActionResult> DetailProjectBug([BindRequired] long?projectId, [BindRequired] long?bugId)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction(nameof(Details), new { projectId = projectId.Value }));
            }

            var readProjectBugRequest = new ReadProjectBugRequest
            {
                ProjectId = projectId.Value,
                BugId     = bugId.Value
            };
            var bug = await _projectApplicationService.Handle(readProjectBugRequest);

            var viewModel = new ProjectBugDetailViewModel
            {
                ProjectId = projectId.Value,
                Bug       = bug
            };

            return(View(viewModel));
        }