public Permission GetPermission(string userID, int roleID) { Permission p = new Permission(); PermissionConst p_const = new PermissionConst(); DataTable dt = GetPermissionAsTable(userID, roleID); if (dt != null && dt.Rows.Count > 0) { int permission_ID = -1; //lấy các field const của permisison FieldInfo[] fi = p_const.GetType().GetFields(); foreach (DataRow dr in dt.Rows) { permission_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(p_const)) == permission_ID) { //get ra field của đối tượng permission sau đó gán bằng true p.GetType().GetField("is" + info.Name).SetValue(p, true); break; } } } } return(p); }
/// <summary> /// Get các quyền của user không phụ thuộc vào channel và chuyên mục /// </summary> /// <param name="userID">User ID</param> /// <returns></returns> public Permission GetPermission(string userID) { Permission p = new Permission(); PermissionConst p_const = new PermissionConst(); string strCacheName = "GetPermission1_" + 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 Permission_ID from permission"); } SetDataToCache(dt, strCacheName, "Permission"); } else { //string sql = "select Distinct Permission_ID from VIEW_PermissionWithoutCategory where User_ID='" + userID + "'"; using (MainDB db = new MainDB()) { dt = db.StoreProcedure.GetPermission(userID.ToString()); } string[] strTableCache = { "Channel", "Channel_User", "Channel_User_Role", "Permission", "Role", "User", "User_Permission" }; SetCache(dt, strCacheName, strTableCache); } } if (dt != null && dt.Rows.Count > 0) { int permission_ID = -1; //lấy các field const của permisison FieldInfo[] fi = p_const.GetType().GetFields(); foreach (DataRow dr in dt.Rows) { permission_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(p_const)) == permission_ID) { //get ra field của đối tượng permission sau đó gán bằng true p.GetType().GetField("is" + info.Name).SetValue(p, true); break; } } } } return(p); }