protected ActionResult SaveTree(ImportTreesModel model, Trip trip, int treeId, bool saveUnlessOptionalErrors) { var tree = trip.FindTreeById(treeId); var treeModel = model.FindTreeById(tree.Id); Mapper.Map(treeModel, tree); var siteModel = model.FindSiteContainingTreeWithId(tree.Id); string modelPrefix = $"Sites[{model.Sites.IndexOf(siteModel)}].Trees[{siteModel.Trees.IndexOf(treeModel)}]."; this.ValidateMappedModel <TreeBase, ImportTreeModel>(tree, modelPrefix, ValidationTag.Required); if (!ModelState.IsValid) { return(Request.IsAjaxRequest() ? PartialView("TreePartial", model).AddViewData("treeId", tree.Id) : View(model)); } this.ValidateMappedModel <TreeBase, ImportTreeModel>(tree, modelPrefix, ValidationTag.Optional); if (!ModelState.IsValid && saveUnlessOptionalErrors) { treeModel.HasOptionalErrors = true; model.HasOptionalErrors = true; return(Request.IsAjaxRequest() ? PartialView("TreePartial", model).AddViewData("treeId", tree.Id) : View(model)); } tree.SetTripDefaults(); Repositories.Imports.Save(trip); Uow.Persist(); treeModel.IsEditing = false; return(Request.IsAjaxRequest() ? PartialView("TreePartial", model).AddViewData("treeId", tree.Id) : View(model)); }
protected ActionResult EditTree(ImportTreesModel model, Trip trip, int treeId) { var tree = model.FindTreeById(treeId); tree.IsEditing = true; return(Request.IsAjaxRequest() ? PartialView("TreePartial", model).AddViewData("treeId", tree.Id) : View(model)); }
public virtual ActionResult Trees( [ModelBinder(typeof(ImportTreesModelBinder))] ImportTreesModel model, [ModelBinder(typeof(ImportInnerActionModel))] ImportInnerActionModel innerAction) { ModelState.Clear(); var trip = Repositories.Imports.FindById(model.Id); if (!User.IsAuthorizedToEdit(trip)) { return(new UnauthorizedResult()); } trip.InitializeTrees(); model.Initialize(); if (innerAction.Equals(ImportModelLevel.Tree, ImportModelAction.SaveUnlessOptionalErrors) || innerAction.Equals(ImportModelLevel.Tree, ImportModelAction.SaveIgnoringOptionalErrors)) { return(SaveTree(model, trip, innerAction.Id, innerAction.Action == ImportModelAction.SaveUnlessOptionalErrors)); } if (innerAction.Equals(ImportModelLevel.Tree, ImportModelAction.Edit)) { return(EditTree(model, trip, innerAction.Id)); } if (innerAction.Equals(ImportModelLevel.Site, ImportModelAction.Add)) { return(AddTree(model, trip, innerAction.Id)); } if (innerAction.Equals(ImportModelLevel.Tree, ImportModelAction.Remove)) { return(RemoveTree(model, trip, innerAction.Id)); } if (innerAction.Equals(ImportModelLevel.Trip, ImportModelAction.SaveUnlessOptionalErrors) || innerAction.Equals(ImportModelLevel.Trip, ImportModelAction.SaveIgnoringOptionalErrors)) { return(SaveTrees(model, trip, innerAction.Action == ImportModelAction.SaveUnlessOptionalErrors)); } throw new NotImplementedException(); }
protected ActionResult RemoveTree(ImportTreesModel model, Trip trip, int treeId) { var tree = trip.FindTreeById(treeId); var site = tree.Site; tree.Site.RemoveTree(tree); Repositories.Imports.Save(trip); Uow.Persist(); var treeModel = model.FindTreeById(tree.Id); var siteModel = model.FindSiteById(site.Id); siteModel.RemoveTree(treeModel); model.Initialize(); return(Request.IsAjaxRequest() ? PartialView("SiteTreesPartial", model).AddViewData("siteId", site.Id) : View(model)); }
protected ActionResult AddTree(ImportTreesModel model, Trip trip, int siteId) { var site = trip.FindSiteById(siteId); var tree = site.AddSingleTrunkTree(); Repositories.Imports.Save(trip); Uow.Persist(); var siteModel = model.FindSiteById(site.Id); var treeModel = siteModel.AddTree(); Mapper.Map(tree, treeModel); model.Initialize(); return(Request.IsAjaxRequest() ? (site.Trees.Count > 2 ? PartialView("TreePartial", model).AddViewData("treeId", tree.Id) : PartialView("SiteTreesPartial", model).AddViewData("siteId", site.Id)) : View(model)); }
protected ActionResult SaveTrees(ImportTreesModel model, Trip trip, bool saveUnlessOptionalErrors) { Mapper.Map(model, trip); trip.VisitTrees((p, t) => this.ValidateMappedModel <TreeBase, ImportTreeModel>(t, $"{p}.", ValidationTag.Required)); if (!ModelState.IsValid) { return(View(model)); } trip.VisitTrees((p, t) => this.ValidateMappedModel <TreeBase, ImportTreeModel>(t, $"{p}.", ValidationTag.Optional)); if (!ModelState.IsValid && saveUnlessOptionalErrors) { model.HasOptionalErrors = true; return(View(model)); } trip.Sites.SelectMany(s => s.Trees).Last().SetTripDefaults(); Repositories.Imports.Save(trip); Uow.Persist(); return(RedirectToAction(MVC.Import.Review(trip.Id))); }