public IActionResult _EditUser(string id) { var user = _userManager.FindByIdAsync(id).Result; var viewModel = new _EditUserViewModel { Id = user.Id, Email = user.Email, UserName = user.UserName }; viewModel.SelectedRoleId = GetRoleId(user.Id); viewModel.Roles = GetRolesListItems(); return(View(viewModel)); }
public IActionResult _EditUser(string id, _EditUserViewModel model) { if (ModelState.IsValid) { var user = _dbContext.Users.First(u => u.Id == id); user.Email = model.Email; user.UserName = model.UserName; if (model.SelectedRoleId != null && model.SelectedRoleId != "0") { var selectedRole = _dbContext.Roles.First(r => r.Id == model.SelectedRoleId); var isInRole = _userManager.IsInRoleAsync(user, selectedRole.Name).Result; if (!isInRole) { var userRole = _dbContext.UserRoles.FirstOrDefault(ur => ur.UserId == id); if (userRole != null) { var currentRoleName = GetRoleName(user.Id); var r = _userManager.RemoveFromRoleAsync(user, currentRoleName).Result; var res = _userManager.AddToRoleAsync(user, selectedRole.Name).Result; } else { var r = _userManager.AddToRoleAsync(user, selectedRole.Name).Result; } } } else { var userRole = _dbContext.UserRoles.FirstOrDefault(ur => ur.UserId == model.Id); if (userRole != null) { var role = _dbContext.Roles.First(r => r.Id == userRole.RoleId); var r = _userManager.RemoveFromRoleAsync(user, role.Name).Result; } } _dbContext.SaveChanges(); } return(RedirectToAction("AllUsers")); }