示例#1
0
        public static List <RolesForUserDTO> GetRolesByUserID(int userID)
        {
            var data            = new List <RolesForUserDTO>();
            var rolesForUserDTO = new RolesForUserDTO();

            using (SqlConnection con = new SqlConnection(Helper.Connection())) {
                using (SqlCommand cmd = new SqlCommand("GetRolesByUserID", con)) {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@UserID", userID);
                    con.Open();

                    /* Create instance of DataAdapter to read multiple DataSet */
                    var da = new SqlDataAdapter(cmd);
                    var ds = new DataSet();
                    da.Fill(ds);

                    foreach (DataRow item in ds.Tables[0].Rows)
                    {
                        rolesForUserDTO.UserID    = item["UserID"] == DBNull.Value ? 0 : Convert.ToInt32(item["UserID"]);
                        rolesForUserDTO.FirstName = item["FirstName"] == DBNull.Value ? "" : Convert.ToString(item["FirstName"]);
                        rolesForUserDTO.LastName  = item["LastName"] == DBNull.Value ? "" : Convert.ToString(item["LastName"]);

                        foreach (DataRow roleItem in ds.Tables[1].Rows)
                        {
                            rolesForUserDTO.RolesWithIsAssigned.Add(new RoleWithIsAssigned()
                            {
                                ID          = roleItem["ID"] == DBNull.Value ? 0 : Convert.ToInt32(roleItem["ID"]),
                                Name        = roleItem["Name"] == DBNull.Value ? "" : Convert.ToString(roleItem["Name"]),
                                Description = roleItem["Description"] == DBNull.Value ? "" : Convert.ToString(roleItem["Description"]),
                                IsAssigned  = roleItem["IsAssigned"] == DBNull.Value ? false : Convert.ToBoolean(roleItem["IsAssigned"])
                            });
                        }
                        data.Add(rolesForUserDTO);
                    }
                    ;
                }
            }

            return(data);
        }
示例#2
0
        public async Task <IActionResult> EditRolesOfUser(RolesForUserDTO model)
        {
            var             userRoles = new List <AssignRolesToUser>();
            var             roleIDs   = new List <string>();
            var             userName  = AdminRepository.GetUserNameByUserID(model.UserID);
            ApplicationUser user      = await _userManager.FindByNameAsync(userName);

            foreach (var role in model.RolesWithIsAssigned)
            {
                var roleName = AdminRepository.GetRoleNameByRoleID(role.ID);

                if (role.IsAssigned)
                {
                    roleIDs.Add(role.ID.ToString());
                    await _userManager.AddToRoleAsync(user, roleName);
                }
                else
                {
                    await _userManager.RemoveFromRoleAsync(user, roleName);
                }
            }

            var roleIDsToString = string.Join(",", roleIDs);

            var modelToList = new List <RolesForUserDTO> {
                model
            };

            userRoles = modelToList.GroupBy(x => new { x.UserID }).Select(y =>
                                                                          new AssignRolesToUser {
                UserID  = y.Key.UserID,
                RoleIDs = roleIDsToString
            }).ToList();

            AdminRepository.AssignRolesToUser(userRoles);
            await HttpContext.RefreshLoginAsync();

            return(RedirectToAction("Index"));
        }