using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data; using System.IO; using HMI.Core.Entity; using HMI.Core.Util; using HMI.MenuManage.Entity; using HMI.MenuManage.Util; namespace HMI.MenuManage.Model { public class RoleManageModel : NotifyBase { public SqliteHelper sqliteHelper; private ObservableCollection _DataSource; public ObservableCollection DataSource { get { return _DataSource; } set { Set(ref _DataSource, value); } } private RoleData _SelectedValue; public RoleData SelectedValue { get => _SelectedValue; set { Set(ref _SelectedValue, value); LoadRelData(value); } } private ObservableCollection _TreeDataSource; public ObservableCollection TreeDataSource { get { return _TreeDataSource; } set { Set(ref _TreeDataSource, value); } } public RoleManageModel() { if (!File.Exists(PathHelper.DatabasePath)) { SqliteHelper.CreateDatabase(PathHelper.DatabasePath); } sqliteHelper = new SqliteHelper(PathHelper.DatabasePath); sqliteHelper.ExecuteSql(@"CREATE TABLE IF NOT EXISTS role ( id INTEGER PRIMARY KEY AUTOINCREMENT, code TEXT NOT NULL, name TEXT, UNIQUE(code) ); CREATE TABLE IF NOT EXISTS role_menu_rel ( id INTEGER PRIMARY KEY AUTOINCREMENT, roleCode TEXT NOT NULL, menuCode TEXT NOT NULL, UNIQUE(roleCode,menuCode) ); "); } public void LoadData() { ObservableCollection data = new ObservableCollection(); DataTable dt = sqliteHelper.GetDataTable("SELECT * FROM role Order By id;"); if (dt != null) { foreach (DataRow dr in dt.Rows) { var menu = new RoleData { Id = dr["id"].ToString(), Code = dr["code"].ToString(), Name = dr["name"].ToString() }; data.Add(menu); } } DataSource = data; } public void LoadRelData(RoleData data) { if (data == null) { TreeDataSource.Clear(); return; } TreeDataSource = RoleMenuHelper.SelectRoleMenuTreeData(sqliteHelper, data.Code); } public void DelSingleData(RoleData data) { sqliteHelper.ExecuteBatchSql(new List{ $"DELETE FROM role WHERE id = '{data.Id}'", $"DELETE FROM role_menu_rel WHERE roleCode = '{data.Code}'", $"DELETE FROM user_role_rel WHERE roleCode = '{data.Code}'" }); } public void SaveRelData(RoleData role) { if (role == null) return; RoleMenuHelper.SaveRelData(sqliteHelper, TreeDataSource, role.Code, null, null); } } }