Пример #1
0
        protected void btnAssignPermission_Click1(object sender, EventArgs e)
        {
            if (!Validated())
            {
                return;
            }
            int    channelID = 1;
            string userID    = lblUserName.Text;
            int    roleID    = Int32.Parse(lbxRole.SelectedValue);

            Business.User user = new Business.User();
            //gán dữ liệu cho bảng channel_user
            Channel_UserRow cur = new Channel_UserRow();

            cur.Channel_ID = channelID;
            cur.User_ID    = userID;
            //---------------------------------
            //gán dữ liệu cho bảng channel_user_role
            Channel_User_RoleRow curr = new Channel_User_RoleRow();

            curr.Role_ID = roleID;
            //----------------------------------
            using (MainDB db = new MainDB())
            {
                //Kiểm tra xem user đã tồn tại trong kênh này chưa
                Channel_UserRow[] chanU = db.Channel_UserCollection.GetAsArray("User_ID='" + userID + "' and Channel_ID=" + channelID, "");
                //nếu đã tồn tại thì lấy ID của bảng channel_user gán vào bảng channel_user_role
                if (chanU != null && chanU.Length > 0)
                {
                    curr.CU_ID = chanU[0].CU_ID;
                }
                else // nếu chưa tồn tại thì insert 1 bản ghi vào bảng channel_user sau đó lấy ID gán vào channel_user_role
                {
                    //inssert dữ liệu vào bảng channel_user
                    db.Channel_UserCollection.Insert(cur);
                    //gán ID của channel_user_role bằng id vừa thêm vào
                    curr.CU_ID = cur.CU_ID;
                }
                //Kiểm tra xem người dùng ở kênh này đã có role này chưa
                DataTable dtChannelUserRole = user.GetChannelUserRole(userID, channelID, roleID);
                int       CUR_ID            = -1;
                if (dtChannelUserRole != null && dtChannelUserRole.Rows.Count > 0)
                {
                    CUR_ID = Convert.ToInt32(dtChannelUserRole.Rows[0][0]);
                }
                else
                {
                    //gán channel_user vào role
                    db.Channel_User_RoleCollection.Insert(curr);
                }
                //nếu gán cho các role không phải là quản trị kênh thì gán đầy đủ quyền và chuyên mục
                if (lbxRole.SelectedValue != RoleConst.QuanTriKenh.ToString())
                {
                    User_PermissionRow upr;
                    User_CategoryRow   ucr;
                    //duyệt qua các item của chuyên mục
                    foreach (ListItem li in clbCategory.Items)
                    {
                        //nếu chuyện mục nào được chọn thì gán cho chuyên mục đó
                        if (li.Selected)
                        {
                            upr = new User_PermissionRow();
                            //nếu không tồn tại role này thì lấy giá trị gán theo role mới
                            if (CUR_ID == -1)
                            {
                                upr.CUR_ID = curr.CUR_ID;
                            }
                            else // nếu đã tồn tại role này thì lấy giá trị role này luôn.
                            {
                                upr.CUR_ID = CUR_ID;
                            }
                            //duyệt qua các item của quyền
                            foreach (ListItem liPermission in clbPermission.Items)
                            {
                                //nếu quyền nào được chọn thì gán cho quyền đó
                                if (liPermission.Selected)
                                {
                                    upr.Permission_ID = Int32.Parse(liPermission.Value);
                                    //gán vào bảng permission
                                    db.User_PermissionCollection.Insert(upr);
                                    ucr        = new User_CategoryRow();
                                    ucr.UP_ID  = upr.UP_ID;
                                    ucr.Cat_ID = Int32.Parse(li.Value);
                                    //gán user permission vào categorry
                                    db.User_CategoryCollection.Insert(ucr);
                                }
                            }
                        }
                    }
                }
                //khi gán quyền sẽ đặt acive cho user = true
                UserRow ur = db.UserCollection.GetByPrimaryKey(userID);
                if (!ur.User_isActive)
                {
                    ur.User_isActive = true;
                    db.UserCollection.Update(ur);
                }
            }
            lblMessage.Text = "Gán thành công";
            ResetCategory();
            LoadLtsBox();
            //Response.Redirect("/users/userassign.aspx");

            DFISYS.BO.Editoral.Category.CategoryHelper.CleanCacheCategory();
            DFISYS.BO.Editoral.Category.CategoryHelper.CleanCachePermission();
            //GetPermission1_
        }