public ActionResult AddIterationInline(IterationModel model) { if (!ModelState.IsValid) return JsonView(ModelState.IsValid, "_AddIterationInline", model); if (ProjectContext.TryAddIteration(model)) { Context.SaveChanges(); } else { AddModelErrors(ProjectContext.Errors); } return JsonView(ModelState.IsValid, "_AddIterationInline", model); }
public ActionResult Edit(long id) { Iteration iteration; if (!ProjectContext.Iterations.TryGetById(id, out iteration)) throw new ApplicationException("iteration with id = " + id + " was not found!"); var model = new IterationModel { Id = iteration.Id, Name = iteration.Name, Description = iteration.Description, From = iteration.From.Date, To = iteration.To.Date, State = iteration.State, ReleaseId = iteration.ReleaseId }; return View("EditIteration", model); }
public ActionResult Edit(IterationModel model) { if (!ModelState.IsValid) return View("EditIteration", model); if (ProjectContext.TryEditIteration(model)) { Context.SaveChanges(); return this.RedirectToAction(x => x.Index(model.ReleaseId)); } AddModelErrors(ProjectContext.Errors); return View("EditIteration", model); }
public bool TryEditIteration(IterationModel model) { Iteration iteration; if (!Iterations.TryGetById(model.Id, out iteration)) throw new ApplicationException("iteration with id = " + model.Id + " was not found!"); iteration.Name = model.Name; iteration.Description = model.Description; iteration.From = model.From; iteration.To = model.To; iteration.ProjectId = ProjectId; var iterations = Iterations.AsPredicateTrue() .And(x => x.Id != iteration.Id) .Evaluate(); if (iterations.AnyOverlapsWith(iteration)) { Errors.Add(new Tuple<string, string>("from", "IterationOverlapedErrorKey")); Errors.Add(new Tuple<string, string>("to", "IterationOverlapedErrorKey")); return false; } Release release; if (!Releases.TryGetById(iteration.ReleaseId, out release)) throw new InvalidOperationException("iteration with id " + iteration.Id + "does not belong to any Release"); if (iteration.From < release.From || iteration.To > release.To) { Errors.Add(new Tuple<string, string>("from", "IterationOutsideTheBoundsOfRelease")); Errors.Add(new Tuple<string, string>("to", "IterationOutsideTheBoundsOfRelease")); return false; } return true; }
public bool TryAddIteration(IterationModel model) { var iteration = new Iteration(model.Name, model.From, model.To, ProjectId, model.ReleaseId) { Description = model.Description }; if (Iterations.AnyOverlapsWith(iteration)) { Errors.Add(new Tuple<string, string>("from", "IterationOverlapedErrorKey")); Errors.Add(new Tuple<string, string>("to", "IterationOverlapedErrorKey")); return false; } Release release; if (!Releases.TryGetById(iteration.ReleaseId, out release)) throw new InvalidOperationException("iteration with id " + iteration.Id + "does not belong to any Release"); if (iteration.From < release.From || iteration.To > release.To) { Errors.Add(new Tuple<string, string>("from", "IterationOutsideTheBoundsOfRelease")); Errors.Add(new Tuple<string, string>("to", "IterationOutsideTheBoundsOfRelease")); return false; } Database.Iterations.Add(iteration); return true; }
public ActionResult StartIteration(IterationModel model) { Iteration iteration; if (!ProjectContext.Iterations.TryGetById(model.Id, out iteration)) throw new ApplicationException("iteration with id = " + model.Id + " was not found!"); iteration.State = IterationState.Commited; iteration.Release.State = ReleaseState.Active; var issues = ProjectContext.Issues.Where(x => x.IterationId == iteration.Id).ToList(); ProjectContext.TrackIssueProgress(issues, IssueProgressType.IterationStarted); Context.SaveChanges(); return JsonView(ModelState.IsValid, "_StartIteration", model); }
public ActionResult StartIteration(long id) { Iteration iteration; if (!ProjectContext.Iterations.TryGetById(id, out iteration)) throw new ApplicationException("iteration with id = " + id + " was not found!"); var model = new IterationModel { Id = iteration.Id, Name = iteration.Name, }; return PartialView("_StartIteration", model); }