Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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();
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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));
        }
Beispiel #6
0
        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)));
        }