Esempio n. 1
0
        public CommandResult <TopMenus> Update(int topMenuId, long timestamp, TopMenusUpdateRequestModel requestModel)
        {
            var result = new CommandResult <TopMenus>();

            using (var db = new FrameContext())
            {
                if (!BaseService.Exist(db, a => a.Id == topMenuId))
                {
                    result.Message = "该数据在系统中已不存在,请检查后再试……";
                }
                else if (!BaseService.Exist(db, a => a.Id == topMenuId && a.Timestamp == timestamp))
                {
                    result.Message = "该节点已在别处被更改过!";
                }
                else if (requestModel.MenuId != null && requestModel.MenuId.Trim().Length != 0 && BaseService.Exist(db, a => a.Id != topMenuId && a.MenuId == requestModel.MenuId))
                {
                    result.Message = $"菜单唯一标识 MenuId “{requestModel.MenuId}”在系统中已存在!";
                }
                else
                {
                    var entity = BaseService.Find(db, a => a.Id == topMenuId);
                    entity.DisplayName   = requestModel.DisplayName;
                    entity.DllPath       = requestModel.DllPath;
                    entity.EntryFunction = requestModel.EntryFunction;
                    entity.Ico           = requestModel.Ico;
                    entity.MenuId        = requestModel.MenuId;
                    entity.ParentId      = requestModel.ParentId;
                    entity.Timestamp     = requestModel.Timestamp;

                    if (!BaseService.Update(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 BtnSave_OnClick(object sender, RoutedEventArgs e)
        {
            if (!_clsLoginModel.PermissionsFunc(_currentMenuId, (int)PermissionsEnum.修改))
            {
                _metroWindow.ShowMessageAsync("友情提示", "您没有修改菜单信息的权限");
                return;
            }
            if (!Verify())
            {
                return;
            }
            if (!LeftMenuManager.JudgeDisplayNameNotRootName(_metroWindow, DisplayName))
            {
                return;
            }

            Action updateAction = () =>
            {
                var requestModel = new TopMenusUpdateRequestModel
                {
                    DisplayName   = DisplayName,
                    DllPath       = DllPath,
                    EntryFunction = EntryFunction,
                    Ico           = null,
                    MenuId        = MenuId,
                    ParentId      = ParentId,
                    Timestamp     = _topMenusManage.ServerTime.ToUnixTimestamp()
                };
                var result = _topMenusManage.Update(TopMenuId, Timestamp, requestModel);
                if (result.ResultStatus == ResultStatus.Success)
                {
                    Timestamp = result.Data.Timestamp;
                    ((TopMenus)((TreeViewItem)(TreeViewMain.SelectedItem)).DataContext).Timestamp = result.Data.Timestamp;

                    UpdateSelectedItemPosition(TopMenuId);
                    UpdateSort(TreeViewMain.Items);
                    UpdateSelectedItem(TreeViewMain.Items, TopMenuId);

                    _topMenusList = _topMenusManage.GetAll();
                }
                _metroWindow.ShowMessageAsync(result.ResultStatus == ResultStatus.Success ? "更新成功" : "更新失败", result.Message);
            };

            var setting = new MetroDialogSettings
            {
                AnimateShow           = true,
                AnimateHide           = true,
                AffirmativeButtonText = "确定",
                NegativeButtonText    = "取消",
                DefaultButtonFocus    = MessageDialogResult.Negative
            };

            _metroWindow.ShowMessageAsync("更新节点提示", "您确定要更新此节点信息吗?", MessageDialogStyle.AffirmativeAndNegative, setting).ContinueWith(
                t =>
            {
                _metroWindow.Dispatcher.Invoke((Action)(() =>
                {
                    if (t.Result == MessageDialogResult.Affirmative)
                    {
                        if (_topMenusManage.Exist(a => a.Id != TopMenuId && a.DisplayName == DisplayName))
                        {
                            _metroWindow.ShowMessageAsync("信息重复提示", $"菜单名称“{DisplayName}”,在系统中已存在,是否仍使用该名称?", MessageDialogStyle.AffirmativeAndNegative, setting)
                            .ContinueWith(z =>
                            {
                                if (z.Result == MessageDialogResult.Affirmative)
                                {
                                    _metroWindow.Dispatcher.Invoke((Action)(() =>
                                    {
                                        updateAction();
                                    }));
                                }
                            });
                        }
                        else
                        {
                            updateAction();
                        }
                    }
                }));
            });
        }