public IActionResult ChangePassword(ChangePasswordViewModel vm) { if (vm.NewPassword != vm.ConfirmedPassword) { ErrorHandler(nameof(RegisterPersonViewModel.ConfirmedPassword), "Passwords don't match."); } if (!ModelState.IsValid) { return(View(vm)); } var request = vm.ToRequest(CurrentUserId); var presenter = _presenterFactory.ChangePassword(MessageHandler, ErrorHandler); try { var uc = _useCaseFactory.ChangePassword; var response = uc.Execute(request); return(RedirectToAction(nameof(Index), new { id = presenter.Present(response) })); } catch (InvalidRequestException ire) { presenter.PresentErrors(ire.Message, ire.Errors); return(View(vm)); } catch (Exception e) { presenter.PresentMessage(MessageType.Error, e.Message); return(View(vm)); } }