LoginViewModel.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. 
  2. using NPOI.SS.Formula.Functions;
  3. using Prism.Commands;
  4. using Prism.Common;
  5. using Prism.Events;
  6. using Prism.Ioc;
  7. using Prism.Mvvm;
  8. using Prism.Regions;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Collections.ObjectModel;
  12. using System.Data.Entity;
  13. using System.Linq;
  14. using TeamAAS_VP.Data;
  15. using TeamAAS_VP.Events;
  16. using TeamAAS_VP.Core;
  17. using TeamAAS_VP.Models;
  18. using TeamAAS_VP.Resources.Languages;
  19. namespace TeamAAS_VP.ViewModels.User
  20. {
  21. public class LoginViewModel : BindableBase
  22. {
  23. IRegionManager _regionManager;
  24. IEventAggregator _eventAggregator;
  25. IContainerProvider _container;
  26. private List<TeamAAS_VP.Models.User> Users;
  27. #region 属性
  28. private ObservableCollection<string> _UserNameList;
  29. /// <summary>
  30. /// 用户列表
  31. /// </summary>
  32. public ObservableCollection<string> UserNameList
  33. {
  34. get { return _UserNameList; }
  35. set { _UserNameList = value; }
  36. }
  37. public string SelectedUserName { get; set; }
  38. public string UserPassword { get; set; }
  39. public bool IsRemember { get; set; }
  40. #endregion
  41. #region 命令
  42. /// <summary>
  43. /// 注册命令
  44. /// </summary>
  45. public DelegateCommand SignUpCommand { get; set; }
  46. /// <summary>
  47. /// 登录命令
  48. /// </summary>
  49. public DelegateCommand LoginCommand { get; set; }
  50. public DelegateCommand LoadedCommand { get; set; }
  51. #endregion
  52. #region 事件
  53. #endregion
  54. public LoginViewModel(IRegionManager regionManager, IEventAggregator ea,IContainerProvider container)
  55. {
  56. _regionManager= regionManager;
  57. _eventAggregator = ea;
  58. _container= container;
  59. LoadedCommand = new DelegateCommand(OnLoad);
  60. SignUpCommand = new DelegateCommand(new Action(SignUp));
  61. LoginCommand = new DelegateCommand(new Action(Login));
  62. UserNameList = new ObservableCollection<string>();
  63. //获取所有用户
  64. Users = DatabaseHelper.GetAllUser();
  65. TeamAAS_VP.Models.User rememberUser = null;
  66. if (Users != null)
  67. {
  68. foreach (var user in Users)
  69. {
  70. UserNameList.Add(user.UserName);
  71. if (user.IsRemember)
  72. {
  73. rememberUser = user;
  74. }
  75. }
  76. }
  77. //对记住的用户界面绑定
  78. if (rememberUser != null)
  79. {
  80. SelectedUserName = rememberUser.UserName;
  81. UserPassword = rememberUser.UserPassword;
  82. IsRemember = true;
  83. }
  84. }
  85. #region 方法
  86. private void Login()
  87. {
  88. if (Users == null || string.IsNullOrEmpty(SelectedUserName) || UserPassword==null)
  89. return;
  90. var management = _container.Resolve<Management>();
  91. if (management.CurrentUser != null)
  92. {
  93. if (management.CurrentUser.UserName == SelectedUserName)
  94. {
  95. return;
  96. }
  97. }
  98. // 使用 LINQ 查询检查是否存在具有指定用户名和密码的用户
  99. bool userExists = Users.Any(user => user.UserName == SelectedUserName && user.UserPassword == UserPassword);
  100. if (userExists)
  101. {
  102. if (IsRemember)
  103. DatabaseHelper.RememberUser(SelectedUserName);
  104. else
  105. DatabaseHelper.NotRememberUser();
  106. _eventAggregator.GetEvent<SnackbarMessageNotification>().Publish(new MessageParameter() { Msg= $"{Lang.登录成功}!", Duration=1});
  107. var user = Users.FirstOrDefault(u => u.UserName == SelectedUserName);
  108. management.CurrentUser = user;
  109. _eventAggregator.GetEvent<UserLoginNotification>().Publish(user);
  110. //Growl.SuccessGlobal("登录成功!");
  111. }
  112. else
  113. {
  114. _eventAggregator.GetEvent<SnackbarMessageNotification>().Publish(new MessageParameter() { Msg = Lang.密码错误, Duration = 1 });
  115. //Growl.WarningGlobal("密码错误!");
  116. }
  117. }
  118. private void SignUp()
  119. {
  120. var management = _container.Resolve<Management>();
  121. if (management.CurrentUser.userPart!=Enums.UserPart.Administrator)
  122. {
  123. _eventAggregator.GetEvent<SnackbarMessageNotification>().Publish(new MessageParameter() { Msg = Lang.当前用户权限不足, Duration = 1 });
  124. return;
  125. }
  126. _regionManager.RequestNavigate("UserRegionContext", "SignUpView");
  127. }
  128. private void OnLoad()
  129. {
  130. }
  131. /// <summary>
  132. /// 更新用户列表
  133. /// </summary>
  134. public void UpdateUserList()
  135. {
  136. UserNameList.Clear();
  137. //获取所有用户
  138. Users = DatabaseHelper.GetAllUser();
  139. TeamAAS_VP.Models.User rememberUser = null;
  140. if (Users != null)
  141. {
  142. foreach (var user in Users)
  143. {
  144. UserNameList.Add(user.UserName);
  145. if (user.IsRemember)
  146. {
  147. rememberUser = user;
  148. }
  149. }
  150. }
  151. //对记住的用户界面绑定
  152. if (rememberUser != null)
  153. {
  154. SelectedUserName = rememberUser.UserName;
  155. UserPassword = rememberUser.UserPassword;
  156. IsRemember = true;
  157. }
  158. }
  159. #endregion
  160. }
  161. }