예제 #1
0
        public CommandResult <TopMenus> Add(TopMenusAddRequestModel requestModel)
        {
            var result = new CommandResult <TopMenus>();

            using (var db = new FrameContext())
            {
                if (requestModel.MenuId != null && requestModel.MenuId.Trim().Length != 0 && BaseService.Exist(db, a => a.MenuId == requestModel.MenuId))
                {
                    result.Message = $"菜单唯一标识 MenuId “{requestModel.MenuId}”,在系统中已存在,请重新输入……";
                }
                else
                {
                    var entity = new TopMenus
                    {
                        DisplayName   = requestModel.DisplayName,
                        DllPath       = requestModel.DllPath,
                        EntryFunction = requestModel.EntryFunction,
                        MenuId        = requestModel.MenuId,
                        ParentId      = requestModel.ParentId,
                        Sort          = requestModel.Sort,
                        Timestamp     = requestModel.Timestamp
                    };
                    if (!BaseService.Add(db, entity))
                    {
                        result.Message = "未知原因";
                    }
                    else
                    {
                        result.ResultStatus = ResultStatus.Success;
                        result.Message      = "新的节点信息添加成功";
                        result.Data         = entity;
                    }
                }
            }
            return(result);
        }
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnAdd_OnClick(object sender, RoutedEventArgs e)
        {
            if (!_clsLoginModel.PermissionsFunc(_currentMenuId, (int)PermissionsEnum.添加))
            {
                _metroWindow.ShowMessageAsync("友情提示", "您没有添加菜单信息的权限");
                return;
            }
            if (!Verify())
            {
                return;
            }
            if (!LeftMenuManager.JudgeDisplayNameNotRootName(_metroWindow, DisplayName))
            {
                return;
            }

            Action addAction = () =>
            {
                var requestModel = new TopMenusAddRequestModel
                {
                    DisplayName   = DisplayName,
                    DllPath       = DllPath,
                    EntryFunction = EntryFunction,
                    MenuId        = MenuId,
                    ParentId      = ParentId,
                    Sort          = int.MaxValue,
                    Timestamp     = _topMenusManage.ServerTime.ToUnixTimestamp()
                };
                var result = _topMenusManage.Add(requestModel);
                if (result.ResultStatus == ResultStatus.Success)
                {
                    ClearMenuData();

                    var newItem = GenerateTreeViewItem(result.Data);
                    if (TreeViewMain.SelectedItem == null || ((TreeViewItem)TreeViewMain.SelectedItem).Header.ToString() == Config.RootDisplayName)
                    {
                        TreeViewMain.Items.Add(newItem);
                    }
                    else
                    {
                        ((TreeViewItem)TreeViewMain.SelectedItem).Items.Add(newItem);
                    }

                    _topMenusList = _topMenusManage.GetAll();
                }
                _metroWindow.ShowMessageAsync(result.ResultStatus == ResultStatus.Success ? "添加成功提示" : "添加失败提示", result.Message);
            };


            var setting = new MetroDialogSettings
            {
                AnimateShow           = true,
                AnimateHide           = true,
                AffirmativeButtonText = "是",
                NegativeButtonText    = "否",
                DefaultButtonFocus    = MessageDialogResult.Negative
            };

            if (_topMenusManage.Exist(a => a.DisplayName == DisplayName.Trim()))
            {
                _metroWindow.ShowMessageAsync("信息重复提示", $"菜单名称“{DisplayName}”,在系统中已存在,是否仍使用该名称?", MessageDialogStyle.AffirmativeAndNegative, setting).ContinueWith(
                    t =>
                {
                    _metroWindow.Dispatcher.Invoke((Action)(() =>
                    {
                        if (t.Result == MessageDialogResult.Affirmative)
                        {
                            addAction();
                        }
                    }));
                });
            }
            else
            {
                addAction();
            }
        }