public async Task <IActionResult> UpdateUser(AdminUpdateUserVM model) { if (ModelState.IsValid) { var user = await _userManager.FindByIdAsync(model.Id); string fileName = null; if (model.ProfileImage != null) { var folder = Path.Combine(_hostingEnvironment.WebRootPath, "img"); fileName = $"{Guid.NewGuid().ToString()}_{model.ProfileImage.FileName}"; var path = Path.Combine(folder, fileName); model.ProfileImage.CopyTo(new FileStream(path, FileMode.Create)); user.ProfilePicturePath = fileName; } user.FirstName = model.FirstName; user.LastName = model.LastName; user.Email = model.Email; foreach (var role in model.Roles) { if (role.IsChecked) { await _userManager.AddToRoleAsync(user, role.RoleName); } else { await _userManager.RemoveFromRoleAsync(user, role.RoleName); } } var result = await _userManager.UpdateAsync(user); if (result.Succeeded) { TempData["UserUpdated"] = $"User {model.Email} has been updated."; return(RedirectToAction("AccountsOverview")); } TempData["UserUpdated"] = $"User {model.Email} could not be updated."; return(RedirectToAction("AccountsOverview")); } ViewBag.Title = "Edit account"; return(View(model)); }
public async Task <IActionResult> UpdateUser(string id) { var user = await _userManager.FindByIdAsync(id); if (user == null) { TempData["UserDoesNotExist"] = $"An user with Id {id} does not exist."; return(RedirectToAction("AccountsOverview", "Admin")); } var rolesVM = new List <AdminUserRoleVM>(); foreach (var role in _roleManager.Roles) { rolesVM.Add(new AdminUserRoleVM() { RoleId = role.Id, RoleName = role.Name, UserId = user.Id, UserName = user.UserName, IsChecked = await _userManager.IsInRoleAsync(user, role.Name) }); } var model = new AdminUpdateUserVM() { Id = user.Id, FirstName = user.FirstName, LastName = user.LastName, Email = user.Email, ProfilePicturePath = user.ProfilePicturePath, Roles = rolesVM }; return(View(model)); }