예제 #1
0
        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());
        }
예제 #2
0
        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,
            });
        }