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); }
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")); }