Exemple #1
0
        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);
        }
Exemple #2
0
        /// <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);
        }