#region
using System;
using System.Data;
using CSFrameworkV5.Common;
using CSFrameworkV5.Core;
using CSFrameworkV5.Core.CodeGenerator;
using CSFrameworkV5.Models;
#endregion
namespace CSFrameworkV5.DataAccess
{
///
/// 角色资料的DAL层
///
[DefaultORM_UpdateMode(typeof(tb_MyRole), true)]
public class dalRole : dalBaseDataDict
{
public dalRole(Loginer loginer)
: base(loginer)
{
_KeyName = tb_MyRole.__KeyName;
_TableName = tb_MyRole.__TableName;
_ModelType = typeof(tb_MyRole);
_Database = DatabaseProvider.SystemDatabase;
}
///
/// 根据表名获取该表的SQL命令生成器
///
/// 表名
///
protected override IGenerateSqlCommand CreateSqlGenerator(
DataTable table)
{
Type ORM = null;
if (table.TableName == tb_MyRole.__TableName)
ORM = typeof(tb_MyRole);
if (table.TableName == tb_MyRoleActions.__TableName)
ORM = typeof(tb_MyRoleActions);
if (table.TableName == tb_MyUserRoles.__TableName)
ORM = typeof(tb_MyUserRoles);
if (ORM == null) throw new Exception(table.TableName + "表没有ORM模型!");
//支持两种SQL命令生成器
return new GenerateSqlCmdByTableFields(ORM, table,
GeneratorFactory);
}
///
/// 删除角色
///
/// 角色编号
///
public override bool Delete(string keyValue)
{
var sp = _Database.CreateSqlProc("usp_DeleteRole");
sp.AddParam("RoleID", DbType.String, keyValue);
sp.AddParam("DataSetID", DbType.String, _Loginer.DBID); //增加帐套参数
var i = _Database.ExecuteCommand(sp.Command);
return true;
}
public override DataTable GetLookupData()
{
var sql =
$"SELECT DataSetID,RoleID,RoleName FROM tb_MyRole WHERE DataSetID={_Database.ParamSymboName}DataSetID ORDER BY RoleName";
var cmd = _Database.CreateCommand(sql);
cmd.AddParam("DataSetID", _Loginer.DBID);
return _Database.GetTable(cmd.Command, TableName);
}
public DataTable GetRoleAction(string roleID)
{
var sql =
$"SELECT * FROM tb_MyRoleActions WHERE RoleID={_Database.ParamSymboName}RoleID AND DataSetID={_Database.ParamSymboName}DataSetID";
var cmd = _Database.CreateCommand(sql);
cmd.AddParam("DataSetID", _Loginer.DBID);
cmd.AddParam("RoleID", roleID);
return _Database.GetTable(cmd.Command,
tb_MyRoleActions.__TableName);
}
public DataTable GetRoleData()
{
var sql =
$"SELECT * FROM tb_MyRole WHERE DataSetID={_Database.ParamSymboName}DataSetID ORDER BY RoleName";
var cmd = _Database.CreateCommand(sql);
cmd.AddParam("DataSetID", _Loginer.DBID);
return _Database.GetTable(cmd.Command, TableName);
}
public DataSet GetRoleOwners(string roleID)
{
var sp = _Database.CreateSqlProc("usp_GetRoleOwners");
sp.AddParam("DataSetID", DbType.String, _Loginer.DBID);
sp.AddParam("RoleID", DbType.String, roleID);
var ds = _Database.GetDataSet(sp.Command);
ds.Tables[0].TableName = tb_MyGroup.__TableName;
ds.Tables[1].TableName = tb_MyUser.__TableName;
ds.Tables[2].TableName = tb_MyUserRoles.__TableName;
return ds;
}
public override DataTable GetSummaryData()
{
AssertTableName();
var sql =
$"SELECT * FROM tb_MyRole WHERE DataSetID={_Database.ParamSymboName}DataSetID ORDER BY RoleName";
var cmd = _Database.CreateCommand(sql);
cmd.AddParam("DataSetID", _Loginer.DBID);
return _Database.GetTable(cmd.Command, TableName);
}
public bool IsExistsRole(string roleID)
{
var sql =
$"SELECT COUNT(*) FROM tb_MyRole WHERE DataSetID={_Database.ParamSymboName}DataSetID AND RoleID={_Database.ParamSymboName}RoleID";
var cmd = _Database.CreateCommand(sql);
cmd.AddParam("DataSetID", _Loginer.DBID);
cmd.AddParam("RoleID", roleID);
var o = _Database.ExecuteScalar(cmd.Command);
return ConvertEx.ToInt(o) > 0;
}
}
}