protected ActionResult SaveSite(ImportSitesModel model, Trip trip, int siteId, bool saveUnlessOptionalErrors) { var siteModel = model.FindSiteById(siteId); var site = trip.FindSiteById(siteId); Mapper.Map(siteModel, site); string modelPrefix = $"Sites[{model.Sites.IndexOf(siteModel)}]."; this.ValidateMappedModel <Site, ImportSiteModel>(site, modelPrefix, ValidationTag.Required); if (!ModelState.IsValid) { return(Request.IsAjaxRequest() ? PartialView("SitePartial", model).AddViewData("siteId", site.Id) : View(model)); } this.ValidateMappedModel <Site, ImportSiteModel>(site, modelPrefix, ValidationTag.Optional); if (!ModelState.IsValid && saveUnlessOptionalErrors) { siteModel.HasOptionalError = true; model.HasOptionalErrors = true; return(Request.IsAjaxRequest() ? PartialView("SitePartial", model).AddViewData("siteId", site.Id) : View(model)); } site.SetTripDefaults(); Repositories.Imports.Save(trip); Uow.Persist(); siteModel.IsEditing = false; return(Request.IsAjaxRequest() ? PartialView("SitePartial", model).AddViewData("siteId", site.Id) : View(model)); }
protected ActionResult EditSite(ImportSitesModel model, Trip trip, int siteId) { var site = model.FindSiteById(siteId); site.IsEditing = true; return(Request.IsAjaxRequest() ? PartialView("SitePartial", model).AddViewData("siteId", site.Id) : View(model)); }
protected ActionResult RemoveSite(ImportSitesModel model, Trip trip, int siteId) { var site = trip.FindSiteById(siteId); trip.RemoveSite(site); Repositories.Imports.Save(trip); Uow.Persist(); var siteModel = model.FindSiteById(site.Id); model.RemoveSite(siteModel); model.Initialize(); return(Request.IsAjaxRequest() ? PartialView("SitesPartial", model) : (ActionResult)View(model)); }
protected ActionResult AddSite(ImportSitesModel model, Trip trip) { var site = trip.AddSite(); trip.InitializeSites(); Repositories.Imports.Save(trip); Uow.Persist(); Mapper.Map(site, model.AddSite()); model.Initialize(); return(Request.IsAjaxRequest() ? (model.Sites.Count > 2 ? PartialView("SitePartial", model).AddViewData("siteId", site.Id) : PartialView("SitesPartial", model)) : View(model)); }
public virtual ActionResult Sites( [ModelBinder(typeof(ImportSitesModelBinder))] ImportSitesModel model, [ModelBinder(typeof(ImportInnerActionModel))] ImportInnerActionModel innerAction) { ModelState.Clear(); var trip = Repositories.Imports.FindById(model.Id); if (!User.IsAuthorizedToEdit(trip)) { return(new UnauthorizedResult()); } trip.InitializeSites(); if (innerAction.Equals(ImportModelLevel.Trip, ImportModelAction.SaveUnlessOptionalErrors) || innerAction.Equals(ImportModelLevel.Trip, ImportModelAction.SaveIgnoringOptionalErrors)) { return(SaveSites(model, trip, innerAction.Action == ImportModelAction.SaveUnlessOptionalErrors)); } if (innerAction.Equals(ImportModelLevel.Trip, ImportModelAction.Add)) { return(AddSite(model, trip)); } if (innerAction.Equals(ImportModelLevel.Site, ImportModelAction.SaveUnlessOptionalErrors) || innerAction.Equals(ImportModelLevel.Site, ImportModelAction.SaveIgnoringOptionalErrors)) { return(SaveSite(model, trip, innerAction.Id, innerAction.Action == ImportModelAction.SaveUnlessOptionalErrors)); } if (innerAction.Equals(ImportModelLevel.Site, ImportModelAction.Remove)) { return(RemoveSite(model, trip, innerAction.Id)); } if (innerAction.Equals(ImportModelLevel.Site, ImportModelAction.Edit)) { return(EditSite(model, trip, innerAction.Id)); } throw new NotImplementedException(); }
protected ActionResult SaveSites(ImportSitesModel model, Trip trip, bool saveUnlessOptionalErrors) { Mapper.Map(model, trip); trip.VisitSites((p, s) => this.ValidateMappedModel <Site, ImportSiteModel>(s, $"{p}.", ValidationTag.Required)); if (!ModelState.IsValid) { return(View(model)); } trip.VisitSites((p, s) => this.ValidateMappedModel <Site, ImportSiteModel>(s, $"{p}.", ValidationTag.Optional)); if (!ModelState.IsValid && saveUnlessOptionalErrors) { model.HasOptionalErrors = true; return(View(model)); } trip.Sites.Last().SetTripDefaults(); Repositories.Imports.Save(trip); Uow.Persist(); return(RedirectToAction(MVC.Import.Trees(trip.Id))); }