public async Task <IActionResult> EditUser(EditUserViewModel model, List <string> roles) { if (ModelState.IsValid) { Worker worker = await _userManager.FindByIdAsync(model.Id); if (worker != null) { worker.Family = model.Family; worker.Name = model.Name; worker.Otch = model.Otch; worker.Post = model.Post; worker.SectorId = model.Sector; var result = await _userManager.UpdateAsync(worker); if (result.Succeeded) { var userRoles = await _userManager.GetRolesAsync(worker); var addedRoles = roles.Except(userRoles); var removedRoles = userRoles.Except(roles); await _userManager.AddToRolesAsync(worker, addedRoles); await _userManager.RemoveFromRolesAsync(worker, removedRoles); return(RedirectToAction("Index")); } else { foreach (var error in result.Errors) { ModelState.AddModelError("", error.Description); } model.FillLists(db); model.AllRoles = _roleManager.Roles.ToList(); model.UserRoles = await _userManager.GetRolesAsync(worker); } } else { return(NotFound()); } } return(View(model)); }