using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Common;
using System.Reflection;
namespace Langben.DAL.Framework
{
public class SelectData
{
public static string SelectDataByRole<T>(ref int flagWhere) where T : new()
{
//需要过滤的字段名:key为表名,value为字段名
Dictionary<string, string> fieldNams = new Dictionary<string, string>();
fieldNams.Add("SysPerson", "Name");
List<string> keys = new List<string>(fieldNams.Keys);
string where = string.Empty + "(";
Account ac = null;
if (System.Web.HttpContext.Current != null && System.Web.HttpContext.Current.Session != null && System.Web.HttpContext.Current.Session["account"] != null)
{
ac = System.Web.HttpContext.Current.Session["account"] as Account;
}
List<string> roles = ac.RoleNames;
if (roles.Contains("超级管理员"))
{
if (where == "(")
{
return where.Replace("(", "");
}
return where;
}
//反射模型
T t = new T();
Type type = typeof(T);
string tempName = "";
// 获得此模型的公共属性
PropertyInfo[] propertys = t.GetType().GetProperties();
//获得类名
string className = type.Name;
//遍历属性
foreach (PropertyInfo pi in propertys)
{
//字段名
tempName = pi.Name;
//是否包含此类
if (fieldNams.Keys.Contains(className))
{
for (int i = 0; i < fieldNams.Count; i++)
{
//是否包含此字段
if (fieldNams[keys[i]] == tempName)
{
//遍历角色
foreach (var item in roles)
{
if (flagWhere != 0)
{
where += " or ";
}
flagWhere++;
if (item == "普通人员")
{
//判断字段
if (tempName == "Name")
{
where += "it. " + tempName + " =='" + ac.PersonName + "'";
continue;
}
}
if (item == "小管理员")
{
//判断字段
if (tempName == "Name")
{
where += "it. " + tempName + " is Not Null";
continue;
}
}
}
}
}
}
}
if (where == "(")
{
return where.Replace("(", "");
}
return where + ")";
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Common;
using System.Reflection;
namespace Langben.DAL.Framework
{
public class SelectData
{
public static string SelectDataByRole<T>(ref int flagWhere) where T : new()
{
//需要过滤的字段名:key为表名,value为字段名
Dictionary<string, string> fieldNams = new Dictionary<string, string>();
fieldNams.Add("SysPerson", "Name");
List<string> keys = new List<string>(fieldNams.Keys);
string where = string.Empty + "(";
Account ac = null;
if (System.Web.HttpContext.Current != null && System.Web.HttpContext.Current.Session != null && System.Web.HttpContext.Current.Session["account"] != null)
{
ac = System.Web.HttpContext.Current.Session["account"] as Account;
}
List<string> roles = ac.RoleNames;
if (roles.Contains("超级管理员"))
{
if (where == "(")
{
return where.Replace("(", "");
}
return where;
}
//反射模型
T t = new T();
Type type = typeof(T);
string tempName = "";
// 获得此模型的公共属性
PropertyInfo[] propertys = t.GetType().GetProperties();
//获得类名
string className = type.Name;
//遍历属性
foreach (PropertyInfo pi in propertys)
{
//字段名
tempName = pi.Name;
//是否包含此类
if (fieldNams.Keys.Contains(className))
{
for (int i = 0; i < fieldNams.Count; i++)
{
//是否包含此字段
if (fieldNams[keys[i]] == tempName)
{
//遍历角色
foreach (var item in roles)
{
if (flagWhere != 0)
{
where += " or ";
}
flagWhere++;
if (item == "普通人员")
{
//判断字段
if (tempName == "Name")
{
where += "it. " + tempName + " =='" + ac.PersonName + "'";
continue;
}
}
if (item == "小管理员")
{
//判断字段
if (tempName == "Name")
{
where += "it. " + tempName + " is Not Null";
continue;
}
}
}
}
}
}
}
if (where == "(")
{
return where.Replace("(", "");
}
return where + ")";
}
}
}