| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247 | using Prism.Commands;using Prism.Mvvm;using System;using System.Collections.ObjectModel;using System.Windows.Input;using MECF.Framework.Common.ControlDataContext;using MECF.Framework.Common.DataCenter;using System.Windows.Threading;using System.Threading.Tasks;using System.Windows;using WPF.Themes.UserControls;using CyberX8_MainPages.Views;using CyberX8_MainPages.Unity;using System.Linq;using Venus_Unity;using System.IO;using CyberX8_MainPages.Roles;namespace CyberX8_MainPages.ViewModels{    internal class RoleViewModel : BindableBase    {        #region 私有属性        /// <summary>        /// 定时器        /// </summary>        DispatcherTimer _timer;        /// <summary>        /// 用户        /// </summary>        private ObservableCollection<UserItem> _users = new ObservableCollection<UserItem>();        /// <summary>        /// 已选用户        /// </summary>        private UserItem _selectedUser = new UserItem();        /// <summary>        /// 第一次加载        /// </summary>        private bool _firstLoad = true;        /// <summary>        /// Roles        /// </summary>        private ObservableCollection<string> _roles = new ObservableCollection<string>();        /// <summary>        /// RoleDefines        /// </summary>        private ObservableCollection<RoleDefine> _roleDefines;        /// <summary>        /// 当前RoleDefine        /// </summary>        private RoleDefine _currentRoleDefine;        /// <summary>        /// 当前Menus列表        /// </summary>        private ObservableCollection<Menu> _currentMenus = new ObservableCollection<Menu>();        #endregion        #region 属性        /// <summary>        /// 用户        /// </summary>        public ObservableCollection<UserItem> Users        {            get { return _users; }            set { SetProperty(ref _users, value);}        }        /// <summary>        /// 已选用户        /// </summary>        public UserItem SelectedUser        {            get { return _selectedUser; }            set { SetProperty(ref _selectedUser, value);}        }        /// <summary>        /// Roles        /// </summary>        public ObservableCollection<string> Roles        {            get { return _roles;}            set { SetProperty(ref _roles, value);}        }        /// <summary>        /// RoleDefines        /// </summary>        public ObservableCollection<RoleDefine> RoleDefines        {            get { return _roleDefines; }            set { SetProperty(ref _roleDefines, value);}        }        /// <summary>        /// 当前RoleDefine        /// </summary>        public RoleDefine CurrentRoleDefine        {            get { return _currentRoleDefine; }            set { SetProperty(ref _currentRoleDefine, value);}        }        /// <summary>        /// 当前Menus列表        /// </summary>        public ObservableCollection<Menu> CurrentMenus        {            get { return _currentMenus; }            set { SetProperty(ref _currentMenus, value); }        }        #endregion        #region Command指令        /// <summary>        /// Add Command        /// </summary>        public ICommand AddUserCommand { get; set; }        /// <summary>        /// Delete Command        /// </summary>        public ICommand DeleteUserCommand { get; set; }        /// <summary>         /// Edit Command        /// </summary>        public ICommand EditUserCommand { get; set; }        /// <summary>        /// Change Role Setting Command        /// </summary>        public ICommand ChangeRoleCommand { get; set; }        /// <summary>         /// Save Role Setting Command        /// </summary>        public ICommand SaveCommand { get; set; }        #endregion        /// <summary>        /// 构造函数        /// </summary>        public RoleViewModel()        {            AddUserCommand = new DelegateCommand<object>(OnAddUser);            DeleteUserCommand = new DelegateCommand<object>(OnDeleteUser);            ChangeRoleCommand = new DelegateCommand<object>(OnChangeRole);            SaveCommand = new DelegateCommand<object>(OnSaveRole);            EditUserCommand = new DelegateCommand<object>(OnEditUser);            string configPath = "";            if (File.Exists($"Config/UIMenu_permission.json"))            {                configPath = $"Config/UIMenu_permission.json";            }            RoleDefines = SerializeHelper.Instance.ReadFromJsonFile<ObservableCollection<RoleDefine>>(configPath);            for (int i = 0; i < RoleDefines.Count; i++)            {                Roles.Add(RoleDefines[i].RoleName);            }        }                /// <summary>        /// 加载数据        /// </summary>        public void LoadData(string systemName)        {            Users.Clear();            Users = new ObservableCollection<UserItem>(QueryDataClient.Instance.Service.QueryAllUsers());            if (_firstLoad)            {                GlobalEvents.Instance.UserViewUpdateEvent += Instance_UserViewUpdateEvent;                _firstLoad = false;            }            CurrentRoleDefine = RoleDefines[0];        }                /// <summary>        /// 隐藏        /// </summary>        public void Hide()        {                  }        #region 指令Action        /// <summary>        /// 保存Role权限设置        /// </summary>        private void OnSaveRole(object param)        {            RoleDefines[Roles.IndexOf(CurrentRoleDefine.RoleName)] = CurrentRoleDefine;            SerializeHelper.Instance.WriteToJsonFile<ObservableCollection<RoleDefine>>(RoleDefines, $"Config/UIMenu_permission.json");        }        /// <summary>        /// 添加用户        /// </summary>        /// <param name="param"></param>        private void OnAddUser(object param)        {            var _mainWindow = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is Window) as Window;            var userItem = new UserItemView();            userItem.Show();            userItem.Owner = _mainWindow;            Users = new ObservableCollection<UserItem>(QueryDataClient.Instance.Service.QueryAllUsers());        }        /// <summary>        /// 删除用户        /// </summary>        /// <param name="param"></param>        private async void OnDeleteUser(object param)        {            if (SelectedUser == null)            {                WPFMessageBox.ShowWarning("Please Select User");                return;            }            if (WPFMessageBox.ShowQuestion($"Delete User {SelectedUser.Name}?", "") == MessageBoxResult.Yes)            {                QueryDataClient.Instance.Service.DeleteUser(SelectedUser.Name);                await Task.Delay(500);                Users = new ObservableCollection<UserItem>(QueryDataClient.Instance.Service.QueryAllUsers());            }        }        /// <summary>        /// 编辑用户        /// </summary>        /// <param name="param"></param>        private void OnEditUser(object param)        {            if (SelectedUser == null || string.IsNullOrEmpty(SelectedUser.Name))            {                WPFMessageBox.ShowWarning("Please Select User");                return;            }            var _mainWindow = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is Window) as Window;            var userItem = new UserItemView(SelectedUser);            userItem.Show();            userItem.Owner = _mainWindow;        }        /// <summary>        /// Change Role        /// </summary>        private void OnChangeRole(object param)        {            string roleName = param.ToString();            CurrentRoleDefine = RoleDefines[Roles.IndexOf(roleName)];               }        #endregion        private void Instance_UserViewUpdateEvent()        {            Users = new ObservableCollection<UserItem>(QueryDataClient.Instance.Service.QueryAllUsers());        }           }}
 |