public async Task <IActionResult> RemoveProjectBug([BindRequired] long?projectId, [BindRequired] long?bugId) { if (!ModelState.IsValid) { return(RedirectToAction(nameof(Details), new { projectId = projectId.Value })); } var removeProjectBugRequest = new RemoveProjectBugRequest { ProjectId = projectId.Value, BugId = bugId.Value }; await _projectApplicationService.Handle(removeProjectBugRequest); return(RedirectToAction(nameof(Details), new { projectId = projectId.Value })); }
public async Task <BugResponse> Handle(RemoveProjectBugRequest request) { var project = await _projectRepository.ReadById(request.ProjectId); if (project == default) { throw new ArgumentNullException("Project not found"); } var bug = project.Bugs.SingleOrDefault(bug => bug.Id == request.BugId); if (bug == default) { throw new ArgumentNullException("Bug for this project not found"); } project.RemoveBug(bug); await _projectRepository.PersistChanges(); return(bug.Adapt <BugResponse>()); }