using HMI.Core.Entity;
|
using HMI.Core.Util;
|
using HMI.MenuManage.Entity;
|
using HMI.MenuManage.Util;
|
using System.Collections.Generic;
|
using System.Collections.ObjectModel;
|
using System.Data;
|
using System.IO;
|
|
namespace HMI.MenuManage.Model
|
{
|
public class RoleManageModel : NotifyBase
|
{
|
public SqliteHelper sqliteHelper;
|
|
private ObservableCollection<RoleData> _DataSource;
|
|
public ObservableCollection<RoleData> 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<RoleMenuRel> _TreeDataSource;
|
|
public ObservableCollection<RoleMenuRel> 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<RoleData> data = new ObservableCollection<RoleData>();
|
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<string>{
|
$"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 DeleteRoleByCodes(IEnumerable<string> codes)
|
{
|
List<string> sqls = new List<string>();
|
foreach (string code in codes)
|
{
|
sqls.Add($"DELETE FROM role WHERE code = '{code}';");
|
sqls.Add($"DELETE FROM role_menu_rel WHERE roleCode = '{code}';");
|
sqls.Add($"DELETE FROM user_role_rel WHERE roleCode = '{code}';");
|
}
|
sqliteHelper.ExecuteBatchSql(sqls);
|
}
|
|
public void SaveRelData(RoleData role)
|
{
|
if (role == null) return;
|
RoleMenuHelper.SaveRelData(sqliteHelper, TreeDataSource, role.Code, null, null);
|
}
|
}
|
}
|