diff options
Diffstat (limited to 'ExamTemplate/Web/Controllers/UserController.cs')
| -rw-r--r-- | ExamTemplate/Web/Controllers/UserController.cs | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/ExamTemplate/Web/Controllers/UserController.cs b/ExamTemplate/Web/Controllers/UserController.cs index 4a9cf31..2e5978b 100644 --- a/ExamTemplate/Web/Controllers/UserController.cs +++ b/ExamTemplate/Web/Controllers/UserController.cs @@ -81,13 +81,47 @@ namespace ExamTemplate.Web.Controllers UserServiceModel userServiceModel = await this._userService.GetUserByUsernameAsync(username); if (userServiceModel == default(UserServiceModel)) - { return RedirectToAction("Login"); - } UserViewModel userViewModel = this._autoMapper.Map<UserViewModel>(userServiceModel); return View(userViewModel); } + + [HttpGet] + [Route("/EditProfile")] + public async Task<IActionResult> EditProfile() + { + UserServiceModel userServiceModel = await this._userService.GetUserByClaimsAsync(this.HttpContext.User); + + if (userServiceModel == default(UserServiceModel)) + return RedirectToAction("Login"); + + EditUserViewModel editUserViewModel = this._autoMapper.Map<EditUserViewModel>(userServiceModel); + + return View(editUserViewModel); + } + + [HttpPost] + [Route("/EditProfile")] + public async Task<IActionResult> EditProfile(EditUserViewModel editUserViewModel) + { + if (!this._userService.IsSignedIn(HttpContext.User)) + return RedirectToAction("Login"); + + EditUserServiceModel editUserServiceModel = this._autoMapper.Map<EditUserServiceModel>(editUserViewModel); + bool result = await this._userService.EditUserAsync(HttpContext.User, editUserServiceModel); + + if (result) + { + await this._userService.LogoutAsync(); + return RedirectToAction("Profile", new { username = editUserViewModel.Username }); + } + else + { + UserServiceModel userServiceModel = await this._userService.GetUserByClaimsAsync(HttpContext.User); + return RedirectToAction("Profile", new { username = userServiceModel.Username }); + } + } } } |
