using NPOI.SS.Formula.Functions; using Prism.Commands; using Prism.Common; using Prism.Events; using Prism.Ioc; using Prism.Mvvm; using Prism.Regions; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data.Entity; using System.Linq; using TeamAAS_VP.Data; using TeamAAS_VP.Events; using TeamAAS_VP.Core; using TeamAAS_VP.Models; using TeamAAS_VP.Resources.Languages; namespace TeamAAS_VP.ViewModels.User { public class LoginViewModel : BindableBase { IRegionManager _regionManager; IEventAggregator _eventAggregator; IContainerProvider _container; private List Users; #region 属性 private ObservableCollection _UserNameList; /// /// 用户列表 /// public ObservableCollection UserNameList { get { return _UserNameList; } set { _UserNameList = value; } } public string SelectedUserName { get; set; } public string UserPassword { get; set; } public bool IsRemember { get; set; } #endregion #region 命令 /// /// 注册命令 /// public DelegateCommand SignUpCommand { get; set; } /// /// 登录命令 /// public DelegateCommand LoginCommand { get; set; } public DelegateCommand LoadedCommand { get; set; } #endregion #region 事件 #endregion public LoginViewModel(IRegionManager regionManager, IEventAggregator ea,IContainerProvider container) { _regionManager= regionManager; _eventAggregator = ea; _container= container; LoadedCommand = new DelegateCommand(OnLoad); SignUpCommand = new DelegateCommand(new Action(SignUp)); LoginCommand = new DelegateCommand(new Action(Login)); UserNameList = new ObservableCollection(); //获取所有用户 Users = DatabaseHelper.GetAllUser(); TeamAAS_VP.Models.User rememberUser = null; if (Users != null) { foreach (var user in Users) { UserNameList.Add(user.UserName); if (user.IsRemember) { rememberUser = user; } } } //对记住的用户界面绑定 if (rememberUser != null) { SelectedUserName = rememberUser.UserName; UserPassword = rememberUser.UserPassword; IsRemember = true; } } #region 方法 private void Login() { if (Users == null || string.IsNullOrEmpty(SelectedUserName) || UserPassword==null) return; var management = _container.Resolve(); if (management.CurrentUser != null) { if (management.CurrentUser.UserName == SelectedUserName) { return; } } // 使用 LINQ 查询检查是否存在具有指定用户名和密码的用户 bool userExists = Users.Any(user => user.UserName == SelectedUserName && user.UserPassword == UserPassword); if (userExists) { if (IsRemember) DatabaseHelper.RememberUser(SelectedUserName); else DatabaseHelper.NotRememberUser(); _eventAggregator.GetEvent().Publish(new MessageParameter() { Msg= $"{Lang.登录成功}!", Duration=1}); var user = Users.FirstOrDefault(u => u.UserName == SelectedUserName); management.CurrentUser = user; _eventAggregator.GetEvent().Publish(user); //Growl.SuccessGlobal("登录成功!"); } else { _eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.密码错误, Duration = 1 }); //Growl.WarningGlobal("密码错误!"); } } private void SignUp() { var management = _container.Resolve(); if (management.CurrentUser.userPart!=Enums.UserPart.Administrator) { _eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.当前用户权限不足, Duration = 1 }); return; } _regionManager.RequestNavigate("UserRegionContext", "SignUpView"); } private void OnLoad() { } /// /// 更新用户列表 /// public void UpdateUserList() { UserNameList.Clear(); //获取所有用户 Users = DatabaseHelper.GetAllUser(); TeamAAS_VP.Models.User rememberUser = null; if (Users != null) { foreach (var user in Users) { UserNameList.Add(user.UserName); if (user.IsRemember) { rememberUser = user; } } } //对记住的用户界面绑定 if (rememberUser != null) { SelectedUserName = rememberUser.UserName; UserPassword = rememberUser.UserPassword; IsRemember = true; } } #endregion } }