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());
- }
- }
- }
|