using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data; using System.IO; using HMI.Core.Util; using HMI.MenuManage.Entity; using HMI.MenuManage.Util; using HMI.Core.Entity; namespace HMI.MenuManage.Model { public class UserManageModel : NotifyBase { public SqliteHelper sqliteHelper; private ObservableCollection _DataSource; public ObservableCollection DataSource { get { return _DataSource; } set { Set(ref _DataSource, value); } } private UserData _SelectedUser; public UserData SelectedUser { get { return _SelectedUser; } set { Set(ref _SelectedUser, value); LoadUserRole(); } } private ObservableCollection _Roles; public ObservableCollection Roles { get => _Roles; set { Set(ref _Roles, value); } } public UserManageModel() { if (!File.Exists(PathHelper.DatabasePath)) { SqliteHelper.CreateDatabase(PathHelper.DatabasePath); } sqliteHelper = new SqliteHelper(PathHelper.DatabasePath); sqliteHelper.ExecuteSql(@"CREATE TABLE IF NOT EXISTS user ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL, password TEXT NOT NULL, name TEXT, UNIQUE(username) ); CREATE TABLE IF NOT EXISTS user_role_rel ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL, roleCode TEXT NOT NULL, UNIQUE(username,roleCode) ); "); } public void LoadData() { ObservableCollection data = new ObservableCollection(); DataTable dt = sqliteHelper.GetDataTable("SELECT * FROM user Order By id;"); if (dt != null) { foreach (DataRow dr in dt.Rows) { var menu = new UserData { Id = dr["id"].ToString(), Username = dr["username"].ToString(), Password = dr["password"].ToString(), Name = dr["name"].ToString() }; data.Add(menu); } } DataSource = data; } public void LoadUserRole() { Roles = SelectedUser == null ? new ObservableCollection() : UserRoleRelHelper.SelectUserRoleData(sqliteHelper, SelectedUser.Username); } public void SaveUserRole() { UserRoleRelHelper.SaveUserRoleRel(sqliteHelper, Roles, SelectedUser, null, null); } } }