RoleViewModel.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Collections.ObjectModel;
  4. using System.Linq;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using System.Windows.Input;
  8. using Aitex.Core.RT.Log;
  9. using MECF.Framework.UI.Client.CenterViews.Configs.Roles;
  10. using MECF.Framework.UI.Client.ClientBase;
  11. using OpenSEMI.ClientBase;
  12. using OpenSEMI.ClientBase.Command;
  13. namespace FurnaceUI.Views.Configs
  14. {
  15. public class RoleViewModel : BaseModel
  16. {
  17. public bool IsPermission { get => this.Permission == 3; }
  18. private bool _IsEnabledRoleName = false;
  19. public bool IsEnabledRoleName
  20. {
  21. get { return _IsEnabledRoleName; }
  22. set { _IsEnabledRoleName = value; NotifyOfPropertyChange("IsEnabledRoleName"); }
  23. }
  24. public RoleViewModel()
  25. {
  26. this.DisplayName = "Role";
  27. }
  28. protected override void OnInitialize()
  29. {
  30. base.OnInitialize();
  31. }
  32. protected override void OnActivate()
  33. {
  34. _RolesList.Clear();
  35. _TreeSelectedRole = null;
  36. RoleManager.Initialize();
  37. LoadRoleList();
  38. base.OnActivate();
  39. }
  40. protected override void OnDeactivate(bool close)
  41. {
  42. if (ControlMode == CtrlMode.EDIT && IsPermission)
  43. {
  44. if (DialogBox.Confirm("The data has been modified. Do you want to save the change(s)?"))
  45. {
  46. if (SaveChanged())
  47. {
  48. ControlMode = CtrlMode.VIEW;
  49. DialogBox.ShowInfo("Operated successfully.");
  50. }
  51. }
  52. }
  53. base.OnDeactivate(close);
  54. }
  55. public void OnRoleChanged()
  56. {
  57. string[] RoleNameList = { "Manager", "Engineer", "Technician", "Operator" };
  58. string _RoleName = RoleNameList.Contains(TreeSelectedRole.DisplayRoleName) ? TreeSelectedRole.DisplayRoleName : "";
  59. IsEnabledRoleName = true;
  60. if (!string.IsNullOrEmpty(_RoleName))
  61. IsEnabledRoleName = false;
  62. if (ControlMode == CtrlMode.EDIT)
  63. {
  64. if (!string.IsNullOrEmpty(TreeSelectedRole.DisplayRoleName) && TreeSelectedRole.DisplayRoleName.Length > 18)
  65. TreeSelectedRole.DisplayRoleName = TreeSelectedRole.DisplayRoleName.Substring(0, 18);
  66. return;
  67. }
  68. //check role to set the mode from view to edit
  69. if (_TreeSelectedRole != null && _TreeSelectedRole.IsRoleChanged())
  70. ControlMode = CtrlMode.EDIT;
  71. }
  72. public bool OnAutoLogoutTimeChecked(object sender)
  73. {
  74. ControlMode = CtrlMode.EDIT;
  75. return ((CheckBox)(sender)).IsChecked.Value;
  76. }
  77. private bool SaveChanged()
  78. {
  79. if (String.IsNullOrWhiteSpace(TreeSelectedRole.DisplayRoleName))
  80. {
  81. DialogBox.ShowWarning("{0} cannot be empty.", "Role name");
  82. //TreeSelectedRole.DisplayRoleName = "No Name";
  83. return false;
  84. }
  85. if (IsRoleExists(TreeSelectedRole))
  86. {
  87. DialogBox.ShowWarning("{0} already exists.", "Role");
  88. return false;
  89. }
  90. foreach (MenuInfo menu in TreeSelectedRole.MenuCollection)
  91. {
  92. menu.IndexPermission = menu.DisplayIndexPermission + 1;
  93. }
  94. TreeSelectedRole.RoleName = TreeSelectedRole.DisplayRoleName;
  95. TreeSelectedRole.IsAutoLogout = TreeSelectedRole.DisplayIsAutoLogout;
  96. TreeSelectedRole.AutoLogoutTime = TreeSelectedRole.DisplayAutoLogoutTime;
  97. TreeSelectedRole.RoleNameTextSaved = TreeSelectedRole.TimeTextSaved = true;
  98. TreeSelectedRole.Description = TreeSelectedRole.DisplayDescription;
  99. try
  100. {
  101. RoleManager.SaveRole(TreeSelectedRole);
  102. }
  103. catch (Exception ex)
  104. {
  105. LOG.Write(ex);
  106. return false;
  107. }
  108. return true;
  109. }
  110. private Boolean IsRoleExists(RoleItem role)
  111. {
  112. if (RoleList == null || RoleList.Count == 0)
  113. return false;
  114. var sameNameList = RoleList.Where(t => t.DisplayRoleName == role.DisplayRoleName);
  115. if (sameNameList == null || sameNameList.Count() <= 1)
  116. return false;
  117. return true;
  118. }
  119. private void LoadRoleList()
  120. {
  121. _RolesList.Clear();
  122. List<RoleItem> roles = RoleManager.GetAllRoles();
  123. if (roles == null || roles.Count == 0)
  124. return;
  125. foreach (RoleItem r in roles)
  126. {
  127. RoleItem treeRole = RoleManager.CloneRole(r);
  128. if (treeRole != null)
  129. {
  130. _RolesList.Add(treeRole);
  131. }
  132. }
  133. TreeSelectedRole = _RolesList.FirstOrDefault();
  134. TreeSelectedRole.IsSelected = true;
  135. ControlMode = CtrlMode.VIEW;
  136. }
  137. private void OnRoleTreeSelectedChanged(EventCommandParameter<object, RoutedEventArgs> arg)
  138. {
  139. RoleItem roleItem = arg.CustomParameter as RoleItem;
  140. if (roleItem == null)
  141. return;
  142. TreeSelectedRole = roleItem;
  143. }
  144. private void OnBtnAddRoleCommand(Object arg)
  145. {
  146. RoleItem newRole = RoleManager.CreateRole();
  147. if (newRole != null)
  148. {
  149. _RolesList.Add(newRole);
  150. TreeSelectedRole = newRole;
  151. TreeSelectedRole.IsSelected = true;
  152. }
  153. ControlMode = CtrlMode.EDIT;
  154. }
  155. private void OnBtnDeleteRoleCommand(Object arg)
  156. {
  157. if (TreeSelectedRole == null) return;
  158. if (!DialogBox.Confirm("Are you sure that you want to delete this role?"))
  159. {
  160. return;
  161. }
  162. if (BaseApp.Instance.UserContext.RoleID == TreeSelectedRole.RoleID)
  163. {
  164. DialogBox.ShowWarning("The action cannot be completed because {0} is currently in use.", "the role");
  165. return;
  166. }
  167. try
  168. {
  169. int index = _RolesList.IndexOf(TreeSelectedRole);
  170. _RolesList.Remove(TreeSelectedRole);
  171. RoleManager.DeleteRole(TreeSelectedRole.RoleID);
  172. index = index > 1 ? index - 1 : 0;
  173. TreeSelectedRole = _RolesList == null ? null : _RolesList[index];
  174. TreeSelectedRole.IsSelected = true;
  175. DialogBox.ShowInfo("Operated successfully.");
  176. }
  177. catch (Exception ex)
  178. {
  179. LOG.Error(ex.StackTrace);
  180. DialogBox.ShowInfo("Operation failed.");
  181. }
  182. }
  183. private void OnBtnCloneRoleCommand(Object arg)
  184. {
  185. if (_TreeSelectedRole != null)
  186. {
  187. RoleItem newRole = RoleManager.CreateRole(_TreeSelectedRole);
  188. if (newRole != null)
  189. {
  190. newRole.DisplayRoleName = newRole.RoleName = "Copy of " + newRole.DisplayRoleName;
  191. _RolesList.Add(newRole);
  192. TreeSelectedRole = newRole;
  193. TreeSelectedRole.IsSelected = true;
  194. ControlMode = CtrlMode.EDIT;
  195. }
  196. }
  197. }
  198. private void OnBtnSaveCommand(Object arg)
  199. {
  200. try
  201. {
  202. if (SaveChanged())
  203. {
  204. ControlMode = CtrlMode.VIEW;
  205. DialogBox.ShowInfo("Operated successfully.");
  206. }
  207. else
  208. DialogBox.ShowInfo("Operation failed.");
  209. }
  210. catch (Exception ex)
  211. {
  212. LOG.Error(ex.StackTrace);
  213. DialogBox.ShowInfo("Operation failed.");
  214. }
  215. }
  216. private void OnBtnCancelRoleCommand(Object arg)
  217. {
  218. LoadRoleList();
  219. ControlMode = CtrlMode.VIEW;
  220. }
  221. #region commands
  222. private ICommand _RoleTreeSelectChangedCmd;
  223. public ICommand RoleTreeSelectChangedCommand
  224. {
  225. get
  226. {
  227. if (this._RoleTreeSelectChangedCmd == null)
  228. this._RoleTreeSelectChangedCmd = new BaseCommand<EventCommandParameter<object, RoutedEventArgs>>((EventCommandParameter<object, RoutedEventArgs> arg) => this.OnRoleTreeSelectedChanged(arg));
  229. return this._RoleTreeSelectChangedCmd;
  230. }
  231. }
  232. private ICommand _BtnSaveCommand;
  233. public ICommand btnSaveCommand
  234. {
  235. get
  236. {
  237. if (this._BtnSaveCommand == null)
  238. this._BtnSaveCommand = new BaseCommand<Object>((Object arg) => this.OnBtnSaveCommand(arg));
  239. return this._BtnSaveCommand;
  240. }
  241. }
  242. private ICommand _BtnAddRoleCommand;
  243. public ICommand btnAddRoleCommand
  244. {
  245. get
  246. {
  247. if (this._BtnAddRoleCommand == null)
  248. this._BtnAddRoleCommand = new BaseCommand<Object>((Object arg) => this.OnBtnAddRoleCommand(arg));
  249. return this._BtnAddRoleCommand;
  250. }
  251. }
  252. private ICommand _BtnDeleteRoleCommand;
  253. public ICommand btnDeleteRoleCommand
  254. {
  255. get
  256. {
  257. if (this._BtnDeleteRoleCommand == null)
  258. this._BtnDeleteRoleCommand = new BaseCommand<Object>((Object arg) => this.OnBtnDeleteRoleCommand(arg));
  259. return this._BtnDeleteRoleCommand;
  260. }
  261. }
  262. private ICommand _BtnCloneRoleCommand;
  263. public ICommand btnCloneRoleCommand
  264. {
  265. get
  266. {
  267. if (this._BtnCloneRoleCommand == null)
  268. this._BtnCloneRoleCommand = new BaseCommand<Object>((Object arg) => this.OnBtnCloneRoleCommand(arg));
  269. return this._BtnCloneRoleCommand;
  270. }
  271. }
  272. private ICommand _BtnCancelRoleCommand;
  273. public ICommand BtnCancelRoleCommand
  274. {
  275. get
  276. {
  277. if (this._BtnCancelRoleCommand == null)
  278. this._BtnCancelRoleCommand = new BaseCommand<Object>((Object arg) => this.OnBtnCancelRoleCommand(arg));
  279. return this._BtnCancelRoleCommand;
  280. }
  281. }
  282. #endregion
  283. public RoleManager RoleManager
  284. {
  285. get { return RoleManager.Instance; }
  286. }
  287. public ObservableCollection<PermissionType> PermissionDictionary
  288. {
  289. get { return RolePermissionMapper.Instance.PermissionDictionary; }
  290. }
  291. private ObservableCollection<RoleItem> _RolesList = new ObservableCollection<RoleItem>();
  292. public ObservableCollection<RoleItem> RoleList
  293. {
  294. get { return _RolesList; }
  295. }
  296. private RoleItem _TreeSelectedRole = null;
  297. public RoleItem TreeSelectedRole
  298. {
  299. get { return _TreeSelectedRole; }
  300. set
  301. {
  302. _TreeSelectedRole = value;
  303. this.NotifyOfPropertyChange("TreeSelectedRole");
  304. }
  305. }
  306. private CtrlMode _ControlMode = CtrlMode.VIEW;
  307. public CtrlMode ControlMode
  308. {
  309. get { return _ControlMode; }
  310. set { _ControlMode = value; NotifyOfPropertyChange("ControlMode"); }
  311. }
  312. }
  313. }