using HMI.Base; using HMI.Core.Util; using HMI.MenuManage.Entity; using HMI.MenuManage.Model; using HMI.UI.Util; using HMI.Util; using System; using System.Collections.Generic; using System.Linq; using System.Windows; using System.Windows.Controls; namespace HMI.MenuManage { /// /// UserManage.xaml 的交互逻辑 /// public partial class UserManage : PluginControl { UserManageModel Model; public UserManage() { Model = new UserManageModel(); DataContext = Model; Loaded += UserManage_Loaded; InitializeComponent(); } private void UserManage_Loaded(object sender, RoutedEventArgs e) { Model.LoadData(); this.Loaded -= UserManage_Loaded; } public override void DoClose(object sender, EventArgs e) { try { Model?.sqliteHelper?.Close(); } catch (Exception ex) { log.Warn("Do Close Failed.", ex); } } private void Button_Click(object sender, RoutedEventArgs e) { Button btn = (Button)sender; if (btn.Name == "addBtn") { try { UserModal userModal = new UserModal { Title = LangUtil.Get("HMI.User.Add"), Owner = Window.GetWindow(this), sqliteHelper = Model.sqliteHelper }; if (userModal.Open(new UserData()) == true) { Model.LoadData(); } } catch (Exception ex) { log.Error("Add User Failed.", ex); ToastHelper.Error(Window.GetWindow(this), $"{LangUtil.Get("App.AddFailed")}: {ex.Message}"); } } else if (btn.Name == "refreshBtn") { try { Model.LoadData(); } catch (Exception ex) { log.Error("Refresh User Failed.", ex); ToastHelper.Error(Window.GetWindow(this), $"{LangUtil.Get("App.RefreshFailed")}: {ex.Message}"); } } else if (btn.Name == "editBtn") { try { UserModal userModal = new UserModal { Title = LangUtil.Get("HMI.User.Edit"), Owner = Window.GetWindow(this), sqliteHelper = Model.sqliteHelper }; if (userModal.Open((UserData)btn.DataContext) == true) { Model.LoadData(); } } catch (Exception ex) { log.Error("Edit User Failed.", ex); ToastHelper.Error(Window.GetWindow(this), $"{LangUtil.Get("App.EditFailed")}: {ex.Message}"); } } else if (btn.Name == "deleteBatchBtn") { try { List usernames = Model.DataSource.Where(x => x.Selected).Select(x => x.Username).ToList(); if (usernames == null || usernames.Count <= 0) { ToastHelper.Warning(Window.GetWindow(this), LangUtil.Get("HMI.NoDeleteData")); return; } var res = MsgBoxHelper.WarnMessage(Window.GetWindow(this), string.Format(LangUtil.Get("HMI.MakeSureDeletes"), usernames.Count)); if (res == MessageBoxResult.OK) { Model.DeleteUserByUsernames(usernames); Model.LoadData(); } } catch (Exception ex) { log.Error("Delete User Batch Failed.", ex); ToastHelper.Error(Window.GetWindow(this), $"{LangUtil.Get("App.DeleteFailed")}: {ex.Message}"); } } else if (btn.Name == "delBtn") { try { var data = (UserData)((Button)sender).DataContext; var res = MsgBoxHelper.WarnMessage(Window.GetWindow(this), string.Format(LangUtil.Get("HMI.MakeSureDeleteSingle"), data.Name)); if (res == MessageBoxResult.OK) { Model.DeleteUserByUsername(data.Username); Model.LoadData(); } } catch (Exception ex) { log.Error("Delete User Failed.", ex); ToastHelper.Error(Window.GetWindow(this), $"{LangUtil.Get("App.DeleteFailed")}: {ex.Message}"); } } else if (btn.Name == "saveRoleBtn") { try { Model.SaveUserRole(); Model.LoadUserRole(); ToastHelper.Success(Window.GetWindow(this), LangUtil.Get("App.SaveSuccess")); } catch (Exception ex) { log.Error("Update User-Role Rel Failed.", ex); ToastHelper.Error(Window.GetWindow(this), $"{LangUtil.Get("App.SaveFailed")}: {ex.Message}"); } } else if (btn.Name == "exportBtn") { ExportToExcel(); } else if (btn.Name == "importBtn") { ImportFromExcel(); } } public void ExportToExcel() { try { if (Model.DataSource == null || Model.DataSource.Count <= 0) { ToastHelper.Warning(this.lang("App.NoExportData")); return; } System.Windows.Forms.SaveFileDialog sfd = new System.Windows.Forms.SaveFileDialog(); string fname = string.Empty; sfd.Filter = ""; sfd.DefaultExt = "xls"; sfd.FileName = this.lang("HMI.User.Title"); if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { fname = sfd.FileName; ExcelHelper.ExportExcel(fname, Model.DataSource); ToastHelper.Success(this.lang("App.ExportSuccess")); } } catch (Exception ex) { log.Error("Export User Data Failed.", ex); ToastHelper.Error(ex.Message); } } public void ImportFromExcel() { try { System.Windows.Forms.OpenFileDialog openDialog = new System.Windows.Forms.OpenFileDialog(); openDialog.Filter = "execl(*.xlsx;*.xls)|*.xlsx;*.xls"; if (openDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { List users = ExcelHelper.ReadFromExcel(openDialog.FileName); if (users == null || users.Count <= 0) { ToastHelper.Warning(this.lang("App.NoImportData")); return; } Model.ImportUser(users); Model.LoadData(); ToastHelper.Success(this.lang("App.ImportSuccess")); } } catch (Exception ex) { log.Error("AlarmText Import Failed.", ex); ToastHelper.Error(Window.GetWindow(this), $"{this.lang("App.ImportFailed")}: {ex.Message}"); } } } }