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);
        }
Exemple #4
0
        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;
        }
Exemple #5
0
        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);
        }