// GET: Application/Edit/5 public ActionResult Edit(string id, string application) { if (id == null) { throw new ArgumentNullException("id", "InitiativeId was not provided."); } var initiative = _initiativeBusiness.GetInitiative(_accountRepository.FindById(User.Identity.GetUserId()).Email, id); var app = initiative.ApplicationGroups.SelectMany(x => x.Applications).Single(x => x.Name == application); var applicationGroup = initiative.ApplicationGroups.Single(x => x.Applications.Any(y => y.Name == application)).Name; //var environments = _sessionBusiness.GetSessionsForApplications(new List<Guid>() { app.Id }).GroupBy(x => x.Environment).Select(x => x.First()).Select(x => x.Environment).ToArray(); var model = new ApplicationPropetiesModel { ApplicationGroupName = applicationGroup, TicketPrefix = app.TicketPrefix, InitiativeId = initiative.Id.ToString(), ApplicationName = application, }; if (app.KeepLatestVersions == null) { model.AutoArchive = false; model.KeepLatestVersions = 5; } else { model.AutoArchive = true; model.KeepLatestVersions = app.KeepLatestVersions; } return(PartialView(model)); }
public ActionResult Edit(ApplicationPropetiesModel model, FormCollection collection) { var initiative = _initiativeBusiness.GetInitiative(_accountRepository.FindById(User.Identity.GetUserId()).Email, model.InitiativeId); var applicationGroup = initiative.ApplicationGroups.Single(x => x.Applications.Any(y => y.Name == model.ApplicationName)); var application = applicationGroup.Applications.Single(x => x.Name == model.ApplicationName); application.TicketPrefix = model.TicketPrefix; List <IApplicationVersion> versionsToArchive = null; //application.KeepLatestVersions = model.AutoArchive ? model.KeepLatestVersions : null; if (model.AutoArchive && model.KeepLatestVersions > 0) { var versions = _applicationVersionBusiness.GetApplicationVersions(application.Id).ToArray(); versionsToArchive = versions.OrderBy(x => x.Version).Take(versions.Count() - model.KeepLatestVersions.Value).ToList(); if (versionsToArchive.IsNullOrEmpty()) //No versions to archive, set autoarchive to true { application.KeepLatestVersions = model.KeepLatestVersions; } } else { application.KeepLatestVersions = null; } if (initiative.ApplicationGroups.Any(x => x.Name == model.ApplicationGroupName)) { if (initiative.ApplicationGroups.Single(x => x.Name == model.ApplicationGroupName).Applications.All(x => x.Name != model.ApplicationName)) { initiative.ApplicationGroups.Single(x => x.Name == model.ApplicationGroupName).Add(application); } else { _initiativeBusiness.UpdateInitiative(initiative); //Check if versions to archive, if yes inform user if (versionsToArchive.IsNullOrEmpty()) { return(RedirectToAction("Details", "Application", new { id = model.InitiativeId, application = model.ApplicationName })); } //return EnableArchive(versionsToArchive); return(RedirectToAction("EnableArchive", "Application", new { applicationId = application.Id, keepLatestVersions = model.KeepLatestVersions })); } } else { initiative.AddApplicationGroup(new ApplicationGroup(model.ApplicationGroupName, new List <IApplication> { application })); } applicationGroup.Remove(application); _initiativeBusiness.UpdateInitiative(initiative); //Check if versions to archive, if yes inform user if (versionsToArchive.IsNullOrEmpty()) { return(RedirectToAction("Details", "Application", new { id = model.InitiativeId, application = model.ApplicationName })); } //return EnableArchive(versionsToArchive); return(RedirectToAction("EnableArchive", "Application", new { applicationId = application.Id, keepLatestVersions = model.KeepLatestVersions })); }