public async Task <ActionResult> Update(int projectId, int issueId, [FromBody] UpdateIssueRequestModel input) { var updateRequest = await this.issuesService.UpdateAsync(issueId, projectId, input); if (!updateRequest.Success) { return(this.BadRequest(new ErrorsResponseModel { Errors = updateRequest.Errors, })); } return(this.Ok()); }
public async Task <ResultModel <bool> > UpdateAsync(int issueId, int projectId, UpdateIssueRequestModel model) { var issue = await this.GetByIdAndProjectIdAsync(issueId, projectId); if (issue == null) { return(new ResultModel <bool> { Errors = new string[] { Errors.InvalidIssueId }, }); } if (issue.SprintId != model.SprintId) { await this.ReorderOldSprintBackLogIndexes(projectId, issue.BacklogIndex, issue.SprintId); await this.ReorderNewSprintBackLogIndexes(projectId, model.BacklogIndex, model.SprintId); } else { await this.ReorderSameSprintBackLogIndexes(projectId, issue.Id, issue.BacklogIndex, model.BacklogIndex, model.SprintId); } issue.Title = model.Title; issue.Description = model.Description; issue.StoryPoints = model.StoryPoints; issue.Priority = model.Priority; issue.Type = model.Type; issue.Status = model.Status; issue.AssigneeId = model.AssigneeId; issue.SprintId = model.SprintId; issue.ParentIssueId = model.ParentIssueId; issue.StatusIndex = model.StatusIndex; issue.BacklogIndex = model.BacklogIndex; issue.ModifiedOn = DateTime.UtcNow; this.dbContext.Update(issue); await this.dbContext.SaveChangesAsync(); await this.hub.Clients.Group(projectId.ToString()).SendAsync(HubEvents.BacklogUpdate, true); await this.hub.Clients.Group(projectId.ToString()).SendAsync(HubEvents.BoardUpdate, true); return(new ResultModel <bool> { Success = true, }); }