using CapMachine.Core; using CapMachine.Model; using CapMachine.Wpf.Dtos; using CapMachine.Wpf.Services; using Masuit.Tools; using Prism.Commands; using Prism.Events; using Prism.Regions; using Prism.Services.Dialogs; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace CapMachine.Wpf.ViewModels { public class UserManageViewModel : NavigationViewModel { public UserManageViewModel(IEventAggregator eventAggregator, IFreeSql freeSql, ConfigService configService, IDialogService dialogService, IRegionManager regionManager) { //事件服务 _EventAggregator = eventAggregator; FreeSql = freeSql; ConfigService = configService; DialogService = dialogService; RegionManager = regionManager; CurUserDto = new UserDto() { IsEnable = true }; } private IEventAggregator _EventAggregator { get; set; } public IFreeSql FreeSql { get; } public ConfigService ConfigService { get; } public IDialogService DialogService { get; } public IRegionManager RegionManager { get; } /// /// 当前用户 /// public UserDto CurUserDto { get; set; } private DelegateCommand _LoginCmd; /// /// 用户登录命令 /// public DelegateCommand LoginCmd { set { _LoginCmd = value; } get { if (_LoginCmd == null) { _LoginCmd = new DelegateCommand(() => LoginCmdMethod()); } return _LoginCmd; } } /// /// 用户登录信息 /// /// private void LoginCmdMethod() { if (string.IsNullOrEmpty(CurUserDto.Name)) { MessageBox.Show("用户为空"); return; } if (string.IsNullOrEmpty(CurUserDto.Password)) { MessageBox.Show("密码为空"); return; } var ListUser = FreeSql.Select().Where(a => a.Name == CurUserDto.Name!.Trim() && a.IsEnable == true).ToList(); if (ListUser != null && ListUser.Count() > 0) { if (ListUser.FirstOrDefault().Password == CurUserDto.Password.Trim()) { MessageBox.Show("登录成功!", "提示"); var loginUser = ListUser.FirstOrDefault(); CurUserDto.Id = loginUser.Id; CurUserDto.Name = loginUser.Name; CurUserDto.Level = loginUser.Level; CurUserDto.IsEnable = loginUser.IsEnable; CurUserDto.Password = ""; ConfigService.CurUserDto = CurUserDto; ConfigService.IsUserLoggedIn = true; _UserManageCmd?.RaiseCanExecuteChanged(); RegionManager.RequestNavigate("MainViewContentRegion", "MonitorView"); } else { ConfigService.IsUserLoggedIn = false; _UserManageCmd?.RaiseCanExecuteChanged(); MessageBox.Show("密码错误!", "提示"); } } else { ConfigService.IsUserLoggedIn = false; _UserManageCmd?.RaiseCanExecuteChanged(); MessageBox.Show("当前用户不存在!", "提示"); } } //UserManageCmd private DelegateCommand _UserManageCmd; /// /// 用户登录命令 /// public DelegateCommand UserManageCmd { set { _UserManageCmd = value; } get { if (_UserManageCmd == null) { _UserManageCmd = new DelegateCommand(() => UserManageCmdMethod(), () => CanUserManage()); } return _UserManageCmd; } } /// /// 判断当前用户是否可以进行用户管理 /// /// true可管理,false不可管理 private bool CanUserManage() { return ConfigService.IsUserLoggedIn && ConfigService.CurUserDto != null && ConfigService.CurUserDto.Level == "管理员"; } /// /// 用户管理 /// /// private void UserManageCmdMethod() { if (!ConfigService.IsUserLoggedIn) { MessageBox.Show("请先登录后再进行用户管理!", "提示"); return; } if (ConfigService.CurUserDto != null && ConfigService.CurUserDto.Level == "管理员") { ShowDialogExpInfo(); } else { MessageBox.Show("登录的管理员才有权限编辑用户信息!", "提示"); } } private void ShowDialogExpInfo() { //弹窗 DialogService.ShowDialog("DialogUserView", new DialogParameters() { { "Name", "" } }, (par) => { if (par.Result == ButtonResult.OK) { //用户信息 //var ListChartTabGroupDto = par.Parameters.GetValue("ReturnValue"); } else if (par.Result == ButtonResult.Cancel) { //取消 } }); } /// /// 导航到当前页面时刷新用户管理按钮状态 /// /// 导航上下文 public override void OnNavigatedTo(NavigationContext navigationContext) { _UserManageCmd?.RaiseCanExecuteChanged(); base.OnNavigatedTo(navigationContext); } } }