public async Task UpdatePersonalDetails(User user, PersonalDetailsBindingModel model) { user.FirstName = model.FirstName; user.LastName = model.LastName; user.BillingAddress = model.BillingAddress; user.BillingAddressLine2 = model.BillingAddressLine2; user.Country = model.Country; user.City = model.City; user.PostalCode = model.PostalCode; await _db.SaveChangesAsync(); var phoneNumber = await _userManager.GetPhoneNumberAsync(user); if (model.PhoneNumber != phoneNumber) { var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, model.PhoneNumber); if (!setPhoneResult.Succeeded) { var userId = await _userManager.GetUserIdAsync(user); throw new InvalidOperationException($"Unexpected error occurred setting phone number for user with ID '{userId}'."); } } var email = await _userManager.GetEmailAsync(user); if (model.Email != email) { var setEmailResult = await _userManager.SetEmailAsync(user, model.Email); if (!setEmailResult.Succeeded) { var userId = await _userManager.GetUserIdAsync(user); throw new InvalidOperationException($"Unexpected error occurred setting email for user with ID '{userId}'."); } var setUserNameResult = await _userManager.SetUserNameAsync(user, model.Email); if (!setUserNameResult.Succeeded) { var userId = await _userManager.GetUserIdAsync(user); throw new InvalidOperationException($"Unexpected error occurred setting name for user with ID '{userId}'."); } } }
public async Task <IActionResult> PersonalDetails(PersonalDetailsBindingModel model) { if (!ModelState.IsValid) { return(View()); } var user = await _userManager.GetUserAsync(HttpContext.User); if (user == null) { return(NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.")); } await _accountService.UpdatePersonalDetails(user, model); await _signInManager.RefreshSignInAsync(user); TempData.Add("Success", "Your profile has been updated"); return(RedirectToAction("MyAccount")); }