public async Task <IActionResult> EditUser(string id, EditUtilizadorViewModel model) { if (ModelState.IsValid) { Utilizador user = await userManager.FindByIdAsync(id); if (user != null) { user.Name = model.Name; user.Email = model.Email; string existingRole = userManager.GetRolesAsync(user).Result.Single(); string existingRoleId = roleManager.Roles.Single(r => r.Name == existingRole).Id; IdentityResult result = await userManager.UpdateAsync(user); if (result.Succeeded) { if (existingRoleId != model.ApplicationRoleId) { IdentityResult roleResult = await userManager.RemoveFromRoleAsync(user, existingRole); if (roleResult.Succeeded) { ApplicationRole applicationRole = await roleManager.FindByIdAsync(model.ApplicationRoleId); if (applicationRole != null) { IdentityResult newRoleResult = await userManager.AddToRoleAsync(user, applicationRole.Name); if (newRoleResult.Succeeded) { return(RedirectToAction("Index")); } } } } } } } return(PartialView("_EditUser", model)); }
public async Task <IActionResult> EditUser(string id) { EditUtilizadorViewModel model = new EditUtilizadorViewModel(); model.ApplicationRoles = roleManager.Roles.Select(r => new SelectListItem { Text = r.Name, Value = r.Id }).ToList(); if (!String.IsNullOrEmpty(id)) { Utilizador user = await userManager.FindByIdAsync(id); if (user != null) { model.Name = user.Name; model.Email = user.Email; model.ApplicationRoleId = roleManager.Roles.Single(r => r.Name == userManager.GetRolesAsync(user).Result.Single()).Id; } } return(PartialView("_EditUser", model)); }