public ActionResult Create(ReleaseUpdateModel releaseEdits)
        {
            var release = Core.Repo.CreateRelease(
                releaseEdits.Name,
                releaseEdits.ReleaseManager,
                DateTime.Parse(releaseEdits.ReleaseDate, CultureInfo.CurrentCulture));

            Core.Repo.SaveRelease(release);

            foreach (ReleaseComponentViewModel component in releaseEdits.Components)
            {
                if (component.Included)
                {
                    var newVersion = Core.Repo.CreateVersion(
                        releaseEdits.Name,
                        component.Name,
                        long.Parse(component.StartRevision, CultureInfo.InvariantCulture),
                        ParseRevisionText(component.EndRevision));
                    newVersion.SelectedRevision = ParseRevisionText(component.SelectedRevision);
                    Core.Repo.SaveVersion(newVersion);
                }
            }
            return RedirectToRoute("Release", new { releaseName = releaseEdits.Name, action = "Edit" });
        }
        public ActionResult Save(ReleaseUpdateModel releaseEdits)
        {
            IRelease release = Core.Repo.GetRelease(releaseEdits.Name);
            release.Name = releaseEdits.Name;
            release.ReleaseDate = DateTime.Parse(releaseEdits.ReleaseDate, CultureInfo.CurrentCulture);
            release.ReleaseManager = releaseEdits.ReleaseManager;
            Core.Repo.SaveRelease(release);

            IList<IVersionWork> versions = Core.Repo.GetVersionsInRelease(release.Name);

            foreach(ReleaseComponentViewModel component in releaseEdits.Components)
            {
                var version = versions.FirstOrDefault(v => v.Component.Name == component.Name);
                if (version != null && component.Included) // update
                {
                    version.StartRevision = long.Parse(component.StartRevision, CultureInfo.InvariantCulture);
                    version.EndRevision = ParseRevisionText(component.EndRevision);
                    version.SelectedRevision = ParseRevisionText(component.SelectedRevision);
                    Core.Repo.SaveVersion(version.VersionData());
                }
                else if (version != null && !component.Included) //delete
                {
                    Core.Repo.DeleteVersion(version.VersionData());
                }
                else if (version == null && component.Included)
                {
                    var newVersion = Core.Repo.CreateVersion(
                        release.Name,
                        component.Name,
                        long.Parse(component.StartRevision, CultureInfo.InvariantCulture),
                        ParseRevisionText(component.EndRevision));
                    Core.Repo.SaveVersion(newVersion);
                }
            }

            return RedirectToAction("Edit");
        }