예제 #1
0
        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}'.");
                }
            }
        }
예제 #2
0
        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"));
        }