public async Task <IActionResult> Create([FromBody] IssueCreateDto dto) { var userId = User.GetUserId(); var user = await _repo.GetUser(userId); if (user == null) { return(NotFound(new { message = "User not found" })); } var project = await _repo.GetProject(dto.ProjectId, userId); if (project == null) { return(NotFound(new { message = "Project not found." })); } var phase = project.Phases.FirstOrDefault(p => p.Id == dto.PhaseId); if (phase == null) { return(NotFound(new { message = "Phase not found." })); } var issue = _mapper.Map <Issue>(dto); issue.CreatedById = userId; issue.CreatedAt = DateTime.Today.ToShortDateString(); issue.PhaseId = dto.PhaseId; issue.Status = Status.TO_DO; _repo.Add(issue); if (dto.Labels != null) { foreach (var id in dto.Labels) { var label = await _repo.GetLabel(id); var il = new IssueLabel { IssueId = issue.Id, LabelId = label.Id, Issue = issue, Label = label }; issue.IssueLabels.Add(il); } } foreach (var id in dto.IssuedTo) { var iu = new IssueUser { IssueId = issue.Id, UserId = id }; issue.IssuedTo.Add(iu); } if (await _repo.SaveAll()) { var issueToReturn = _mapper.Map <IssueListItemDto>(issue); return(Ok(new { message = "Successfully created the issue", issue = issueToReturn })); } return(BadRequest(new { message = "Error saving the issue." })); }