public ActionResult EditNavigation(EditNavigationPageModel model)
        {
            if (model is null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            if (model.NavigationMenuItem is null)
            {
                throw new NullReferenceException(nameof(model.NavigationMenuItem));
            }

            using (this.NavigationMenuRepository.WriteContext())
            {
                NavigationMenuItem thisNavigation = this.NavigationMenuRepository.Find(model.NavigationMenuItem);

                if (this.SecurityProvider.CheckAccess(thisNavigation, PermissionTypes.Write))
                {
                    thisNavigation.Href = model.NavigationMenuItem.Href;
                    thisNavigation.Name = model.NavigationMenuItem.Name;
                    thisNavigation.Text = model.NavigationMenuItem.Text;
                    thisNavigation.Icon = model.NavigationMenuItem.Icon;

                    this.NavigationMenuRepository.AddOrUpdate(thisNavigation);
                }
            }

            return(this.Redirect("/Admin/Navigation/Index"));
        }
        public ActionResult AddNavigation(EditNavigationPageModel model)
        {
            if (model is null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            if (model.NavigationMenuItem is null)
            {
                throw new NullReferenceException("Posted NavigationMEnuItem is null");
            }

            using (this.NavigationMenuRepository.WriteContext())
            {
                if (!string.IsNullOrWhiteSpace(model.BaseUri))
                {
                    this.NavigationMenuRepository.AddChild(model.BaseUri, model.NavigationMenuItem);
                }
                else
                {
                    this.NavigationMenuRepository.AddOrUpdate(model.NavigationMenuItem);
                }
            }

            return(this.Redirect("/Admin/Navigation/Index"));
        }
        public ActionResult EditNavigation(string Url)
        {
            EditNavigationPageModel model = new EditNavigationPageModel(Url, this.NavigationMenuRepository.GetByUri(Url));

            if (model.NavigationMenuItem is null || !this.SecurityProvider.CheckAccess(model.NavigationMenuItem, PermissionTypes.Write))
            {
                return(this.Content(""));
            }

            return(this.View(model));
        }
        public ActionResult AddNavigation(string?Url = null)
        {
            EditNavigationPageModel model = new EditNavigationPageModel(Url, new NavigationMenuItem());

            return(this.View(model));
        }