public async Task <IActionResult> OnPostAsync()
        {
            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                return(NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."));
            }

            if (!ModelState.IsValid)
            {
                await LoadAsync(user);

                return(Page());
            }

            var phoneNumber = await _userManager.GetPhoneNumberAsync(user);

            if (Input.PhoneNumber != phoneNumber)
            {
                var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, Input.PhoneNumber);

                if (!setPhoneResult.Succeeded)
                {
                    var userId = await _userManager.GetUserIdAsync(user);

                    throw new InvalidOperationException($"Unexpected error occurred setting phone number for user with ID '{userId}'.");
                }
            }
            string currentUserId = await _userManager.GetUserIdAsync(user);

            // TODO Find a better way to implement this.
            if (user.ModelInformation == null)
            {
                await _modelService.InsertModelInformation(currentUserId);
            }

            if (Input.FirstName != user.FirstName)
            {
                await _modelService.ChangeUserFirstName(user, Input.FirstName);
            }

            if (Input.LastName != user.LastName)
            {
                await _modelService.ChangeUserLastName(user, Input.LastName);
            }

            var modelInformation = await _modelService.GetModelById <ChangeUserInformationInputModel>(currentUserId);

            if (Input.Age != user.ModelInformation.Age)
            {
                await _modelService.ChangeUserAge(user, Input.Age);
            }

            if (Input.Gender != user.ModelInformation.Gender)
            {
                await _modelService.ChangeUserGender(user, Input.Gender);
            }

            if (Input.Ethnicity != user.ModelInformation.Ethnicity)
            {
                await _modelService.ChangeUserEthnicity(user, Input.Ethnicity);
            }

            if (Input.Height != user.ModelInformation.Height)
            {
                await _modelService.ChangeUserValues(user, Input.Height, "height");
            }

            if (Input.Height != user.ModelInformation.Waist)
            {
                await _modelService.ChangeUserValues(user, Input.Waist, "waist");
            }

            if (Input.Height != user.ModelInformation.Bust)
            {
                await _modelService.ChangeUserValues(user, Input.Bust, "bust");
            }

            if (Input.Height != user.ModelInformation.Hips)
            {
                await _modelService.ChangeUserValues(user, Input.Hips, "hips");
            }

            if (Input.ModelType != user.ModelInformation.ModelType)
            {
                await _modelService.ChangeUserStringValues(user, Input.ModelType, "modelType");
            }

            //int val = int.TryParse(Input.Country, out var tempVal) ? tempVal : (int) 0;

            //var countryToString = ((Country)tempVal).ToString();
            if (Input.Country != user.ModelInformation.Country)
            {
                await _modelService.ChangeUserStringValues(user, Input.Country, "country");
            }

            if (Input.City != user.ModelInformation.City)
            {
                await _modelService.ChangeUserStringValues(user, Input.City, "city");
            }

            if (Input.Nationality != user.ModelInformation.Nationality)
            {
                await _modelService.ChangeUserStringValues(user, Input.Nationality, "nationality");
            }

            if (Input.InstagramUrl != user.ModelInformation.InstagramUrl)
            {
                await _modelService.ChangeUserStringValues(user, Input.InstagramUrl, "instagramUrl");
            }

            if (Input.FacebookUrl != user.ModelInformation.FacebookUrl)
            {
                await _modelService.ChangeUserStringValues(user, Input.FacebookUrl, "facebookUrl");
            }

            await _signInManager.RefreshSignInAsync(user);

            this.StatusMessage = "Your profile has been updated";
            return(RedirectToPage());
        }