public async Task <IActionResult> EditarAluno(EditarAlunoViewModel editarAlunoViewModel) { var idDoUsuario = TempData["idDoUsuario"] as string; editarAlunoViewModel.IdDoAluno = TempData["idDoAluno"] as int?; editarAlunoViewModel.Role = TempData["Role"] as string; editarAlunoViewModel.IdDoCurso = (int)TempData["CursoCoordenador"]; editarAlunoViewModel.IdDaPessoa = (int)TempData["IdDaPessoa"]; var cpfDaPessoa = TempData["CpfDaPessoa"] as string; var emailDaPessoa = TempData["EmailDaPessoa"] as string; TempData.Keep(); if (ModelState.IsValid) { if (await _pessoaAppService.PessoaExisteCpfAsync(cpfDaPessoa, editarAlunoViewModel.Pessoa.CpfDaPessoa)) { ModelState.AddModelError("Pessoa.CpfDaPessoa", "Cpf já esta em uso"); return(View(editarAlunoViewModel)); } if (await _pessoaAppService.PessoaExisteEmailAsync(emailDaPessoa, editarAlunoViewModel.Pessoa.EmailDaPessoa)) { ModelState.AddModelError("Pessoa.EmailDaPessoa", "E-Mail já esta em uso"); return(View(editarAlunoViewModel)); } editarAlunoViewModel.Pessoa.IdDaPessoa = editarAlunoViewModel.IdDaPessoa; var pessoa = _mapper.Map <PessoaViewModel, Pessoa>(editarAlunoViewModel.Pessoa); _pessoaAppService.AtualizarAsync(pessoa); var usuario = await _userManager.FindByIdAsync(idDoUsuario); if (usuario != null) { var userChangePassword = await _userManager.ChangePasswordAsync(usuario, usuario.UserName, editarAlunoViewModel.Pessoa.CpfDaPessoa); if (userChangePassword.Succeeded) { usuario.UserName = editarAlunoViewModel.Pessoa.CpfDaPessoa; usuario.Email = editarAlunoViewModel.Pessoa.EmailDaPessoa; var resultadoDaAtualizacaoDoUsuario = await _userManager.UpdateAsync(usuario); if (resultadoDaAtualizacaoDoUsuario.Succeeded) { var aluno = _mapper.Map <EditarAlunoViewModel, Aluno>(editarAlunoViewModel); _alunoAppService.AtualizarAsync(aluno); return(Redirect( $"VisualizarAluno?IdDoAluno={editarAlunoViewModel.IdDoAluno}&IdDoCurso={editarAlunoViewModel.IdDoCurso}")); } } } } return(View(editarAlunoViewModel)); }