public async Task <IActionResult> ChangeRolePost(UserAndListOfRolesViewModel model) { var gameUserDb = await _db.GameUserDb.FindAsync(model.GameUserVM.Id); var user = await _userManager.FindByIdAsync(model.GameUserVM.Id); //user var userRole = _userManager.GetRolesAsync(user).Result; var role = _roleManager.FindByNameAsync(userRole[0]).Result; var roleName = role.Name; if (role.Id == model.GameUserVM.RoleId) { return(View(new UserAndListOfRolesViewModel { GameUserVM = gameUserDb, Roles = _roleManager.Roles })); } var result = await _userManager.RemoveFromRoleAsync(user, userRole[0]); if (result.Succeeded) { var newRole = _roleManager.FindByIdAsync(model.GameUserVM.RoleId).Result; result = await _userManager.AddToRoleAsync(user, newRole.Name); gameUserDb.RoleId = newRole.Id; gameUserDb.RoleName = newRole.Name; await _db.SaveChangesAsync(); } ///////////////////////////////////////////////////////////////////////////////////////////////////////Changing GameUsers properties: RoleId and RoleName - Only! //var userRole = _db.UserRoles.FirstOrDefaultAsync(a => a.UserId == model.GameUserVM.Id).Result; //userRole.RoleId = model.GameUserVM.RoleId; //var user = _db.GameUserDb.FirstOrDefaultAsync(a => a.Id == model.GameUserVM.Id).Result; //user.RoleId = model.GameUserVM.RoleId; //var role = _roleManager.FindByIdAsync(model.GameUserVM.RoleId).Result; //user.RoleName = role.Name; ///////////////////////////////////////////////////////////////////////////////////////////////////////End //await _db.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); }
public async Task <IActionResult> ChangeRole(string id) { if (String.IsNullOrEmpty(id)) { return(NotFound()); } var user = await _db.GameUserDb.FindAsync(id); if (user == null) { return(NotFound()); } UserAndListOfRolesViewModel model = new UserAndListOfRolesViewModel() { GameUserVM = user, Roles = _roleManager.Roles, }; return(View(model)); }