public async Task <IActionResult> Create(AdminNodeEditViewModel model)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageAdminMenu))
            {
                return(Unauthorized());
            }

            var adminMenuList = await _mainMenuService.LoadMainMenuListAsync();

            var adminMenu = _mainMenuService.GetMainMenuById(adminMenuList, model.AdminMenuId);

            if (adminMenu == null)
            {
                return(NotFound());
            }

            var treeNode = _factories.FirstOrDefault(x => x.Name == model.AdminNodeType)?.Create();

            if (treeNode == null)
            {
                return(NotFound());
            }

            dynamic editor = await _displayManager.UpdateEditorAsync(treeNode, updater : this, isNew : true);

            editor.TreeNode = treeNode;

            if (ModelState.IsValid)
            {
                treeNode.UniqueId = model.AdminNodeId;
                adminMenu.MenuItems.Add(treeNode);
                await _mainMenuService.SaveAsync(adminMenu);

                _notifier.Success(H["Admin node added successfully"]);
                return(RedirectToAction("List", new { id = model.AdminMenuId }));
            }

            model.Editor = editor;

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Beispiel #2
0
        public async Task <IActionResult> Create(AdminMenuCreateViewModel model)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageAdminMenu))
            {
                return(Unauthorized());
            }

            if (ModelState.IsValid)
            {
                var tree = new Models.AdminMenu {
                    Name = model.Name
                };

                await _adminMenuService.SaveAsync(tree);

                return(RedirectToAction(nameof(List)));
            }


            return(View(model));
        }