BrickPile.UI.Areas.UI.Controllers.PagesController.Save C# (CSharp) Method

Save() private method

private Save ( [ Prefix = "NewPageModel")]IPagepageModel, dynamic currentPage ) : ActionResult
Prefix [
currentPage dynamic
return ActionResult
        public virtual ActionResult Save(
            [ModelBinder(typeof (ContentModelBinder)), Bind(Prefix = "NewPageModel")] IPage pageModel,
            dynamic currentPage)
        {
            var parent = currentPage as Page;

            if (!ModelState.IsValid)
            {
                NewPageViewModel viewModel;
                using (IDocumentSession session = this.documentStore.OpenSession())
                {
                    viewModel = new NewPageViewModel
                    {
                        RootModel = session.Advanced.GetStartPage(),
                        ParentModel = parent,
                        NewPageModel = pageModel,
                        SlugsInUse =
                            parent != null
                                ? JsonConvert.SerializeObject(
                                    session.Advanced.GetChildrenFor((IPage) currentPage)
                                        .Select(x => x.Metadata.Slug))
                                : null
                    };
                }

                return View("new", viewModel);
            }

            using (IDocumentSession session = this.documentStore.OpenSession())
            {
                session.Store(pageModel, pageModel.Metadata.IsPublished ? StoreAction.Publish : StoreAction.Save);

                if (parent != null)
                {
                    pageModel.Parent = (Page) currentPage;

                    IPage[] children = session.Advanced.GetChildrenFor((IPage) currentPage).ToArray();

                    int max = children.Length > 0 ? children.Max(x => x.Metadata.SortOrder) : 0;

                    pageModel.Metadata.SortOrder = max + 1;
                }

                session.SaveChanges();
            }
            return RedirectToAction("index", new {currentPage = parent ?? pageModel});
        }