public IActionResult UpdateSprint([FromRoute] Guid project_id, [FromRoute] Guid sprint_id, [FromBody] SprintUpdateM model) { try { JwtClaimM jwt_claim = _jwtAuth.GetClaims(Request); _permission.EnsureProjectManager(jwt_claim.UserId, project_id); _sprint.EnsureExisted(project_id, sprint_id); return(Ok(_sprint.UpdateSprint(sprint_id, model))); } catch (Exception e) { return(GetError(e)); } }
public SprintDM UpdateSprint(Guid sprint_id, SprintUpdateM model) { try { IList <StageEnum> stages; if (model.Approvals == null) { stages = new List <StageEnum> { StageEnum.Planning, StageEnum.Coding }; } else { stages = Enum.GetValues(typeof(StageEnum)).Cast <StageEnum>().OrderBy(s => s).ToList(); for (int i = 2; i < stages.Count; i++) { if (!model.Approvals.Any(s => s.Equals(stages[i]))) { stages.Remove(stages[i]); i--; } } } Sprint sprint = _sprint.GetOne(sprint_id); sprint.StartDate = model.StartDate != null ? model.StartDate : sprint.StartDate; sprint.EndDate = model.EndDate != null ? model.EndDate : sprint.EndDate; IList <Approval> approvals = _approval.GetAll(a => a.SprintId.Equals(sprint_id)); _approval.DeleteAll(approvals); SaveChanges(); foreach (var stage in stages) { _approval.Add(new Approval { SprintId = sprint_id, StageCode = stage }); } SaveChanges(); return(new SprintDM { Approvals = stages.Select(s => new Stage { StageCode = s, Name = s.ToString() }).ToList(), Stage = new Stage { Name = sprint.StageCode.ToString(), StageCode = sprint.StageCode }, EndDate = sprint.EndDate, Id = sprint.Id, No = sprint.No, StartDate = sprint.StartDate }); } catch (Exception e) { throw e is RequestException ? e : _errorHandler.WriteLog("An error occurred while update a sprint!", e, DateTime.Now, "Server", "Service_Sprint_UpdateSprint"); } }