public Role GetRole(string userID) { string strCacheName = "GetRole_" + userID; Role r = new Role(); RoleConst r_const = new RoleConst(); //string sql = "select Distinct Role_ID from View_GetRole where User_ID = '" + userID + "'"; DataTable dt = GetFromCache(strCacheName); if (dt == null) { if (userID.ToLower().Trim() == "admin") { using (MainDB db = new MainDB()) { dt = db.StoreProcedure.vc_Execute_Sql("select Role_ID from role"); } } else { using (MainDB db = new MainDB()) { //dt = db.SelectQuery(sql); //dt = db.StoreProcedure.vc_Execute_Sql(sql); dt = db.StoreProcedure.GetRole(userID); } } string[] strTableCache = { "Channel_User", "Channel_User_Role", "Role" }; SetCache(dt, strCacheName, strTableCache); } if (dt != null && dt.Rows.Count > 0) { int role_ID = -1; //lấy các field const của permisison FieldInfo[] fi = r_const.GetType().GetFields(); foreach (DataRow dr in dt.Rows) { role_ID = Convert.ToInt32(dr[0]); //duyệt qua các field const foreach (FieldInfo info in fi) { //kiểm tra nếu field nào có giá trị bằng giá trị get ra được từ DB thì set biến cho đối tượng permission if (Convert.ToInt32(info.GetValue(r_const)) == role_ID) { //get ra field của đối tượng permission sau đó gán bằng true if (r.GetType().GetField("is" + info.Name) != null) { r.GetType().GetField("is" + info.Name).SetValue(r, true); } else { r.GetType().GetProperty("is" + info.Name).SetValue(r, true, null); } break; } } } } return(r); }
/// <summary> /// Get ra đối tượng role /// </summary> /// <param name="userID"></param> /// <param name="channelID"></param> /// <returns></returns> public Role GetRole(string userID, int channelID) { Role r = new Role(); RoleConst r_const = new RoleConst(); DataTable dt = GetRoleAsTable(userID, channelID); if (dt != null && dt.Rows.Count > 0) { int role_ID = -1; //lấy các field const của permisison FieldInfo[] fi = r_const.GetType().GetFields(); foreach (DataRow dr in dt.Rows) { role_ID = Convert.ToInt32(dr[0]); //duyệt qua các field const foreach (FieldInfo info in fi) { //kiểm tra nếu field nào có giá trị bằng giá trị get ra được từ DB thì set biến cho đối tượng permission if (Convert.ToInt32(info.GetValue(r_const)) == role_ID) { //get ra field của đối tượng permission sau đó gán bằng true if (r.GetType().GetField("is" + info.Name) != null) { r.GetType().GetField("is" + info.Name).SetValue(r, true); } else { r.GetType().GetProperty("is" + info.Name).SetValue(r, true, null); } break; } } } } return(r); }