public async Task<ActionResult> EditLoginDetails(AccountEditViewModel.LoginDetailsViewModel input) { if(!ModelState.IsValid) return await FullEditView(model => model.LoginDetails = input.WithValidationSummary()); var userId = User.Identity.GetUserId(); using(var transaction = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { await mUserService.UpdateUserEmail(userId, input.CurrentPassword, input.Email, new ValidationErrorNotifierAdapter(ModelState)); if(!ModelState.IsValid) return await FullEditView(model => model.LoginDetails = input.WithValidationSummary()); if(!String.IsNullOrWhiteSpace(input.NewPassword)) { await mUserService.UpdateUserPassword(userId, input.CurrentPassword, input.NewPassword, new ValidationErrorNotifierAdapter(ModelState)); if(!ModelState.IsValid) return await FullEditView(model => model.LoginDetails = input.WithValidationSummary()); } transaction.Complete(); } return RedirectToAction("AccountDetailsUpdated"); }
public async Task<ActionResult> EditPersonalInfo(AccountEditViewModel.PersonalInfoViewModel input) { if(!ModelState.IsValid) return await FullEditView(model => model.PersonalInfo = input.WithValidationSummary()); var user = await mUserService.GetUserById(User.Identity.GetUserId()); user.FirstName = input.FirstName; user.LastName = input.LastName; user.Address = input.Address; await mUserService.UpdateUser(user); return RedirectToAction("AccountDetailsUpdated"); }