public async Task <IActionResult> Edit(string UtilizadorId, [Bind("UtilizadorId,NomeUtilizador,Email,AntigaPassword,NovaPassword,ConfirmarPassword,Perfil")] GestaoPerfisEditarViewModel gestaoPerfisEditarViewModel) { if (UtilizadorId != gestaoPerfisEditarViewModel.UtilizadorId) { return(NotFound()); } if (ModelState.IsValid) { try { var user = await _context.Users.SingleOrDefaultAsync(u => u.Id == UtilizadorId); var current_role = await _userManager.GetRolesAsync(user); var result_passwd = await _userManager.ChangePasswordAsync(user, gestaoPerfisEditarViewModel.AntigaPassword, gestaoPerfisEditarViewModel.NovaPassword); if (result_passwd.Succeeded) { user.UserName = gestaoPerfisEditarViewModel.NomeUtilizador; user.Email = gestaoPerfisEditarViewModel.Email; var result = await _userManager.UpdateAsync(user); if (result.Succeeded) { await _userManager.RemoveFromRoleAsync(user, current_role.First()); await _userManager.AddToRoleAsync(user, Enum.GetName(typeof(PerfilEnum), gestaoPerfisEditarViewModel.Perfil)); } } } catch (DbUpdateConcurrencyException) { if (!UtilizadorExists(gestaoPerfisEditarViewModel.UtilizadorId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(gestaoPerfisEditarViewModel)); }
// GET: GestaoPerfis/Edit/5 public async Task <IActionResult> Edit(string NomeUtilizador) { if (NomeUtilizador == null) { return(NotFound()); } var utilizador = await _context.Users.SingleOrDefaultAsync(m => m.UserName == NomeUtilizador); if (utilizador == null) { return(NotFound()); } var role = await _userManager.GetRolesAsync(utilizador); GestaoPerfisEditarViewModel gestaoPerfisEditarVM = new GestaoPerfisEditarViewModel { UtilizadorId = utilizador.Id, NomeUtilizador = utilizador.UserName, Email = utilizador.Email, Perfil = (PerfilEnum)Enum.Parse(typeof(PerfilEnum), role.First()) }; return(View(gestaoPerfisEditarVM)); }