public async Task <IActionResult> UpdateCustomerProfile()
        {
            var loggedUser = await _userManager.FindByNameAsync(User.Identity.Name);

            CustomerProfile         loggedProfile = _customerProfileRepo.GetSingle(p => p.UserId == loggedUser.Id);
            UpdateCustomerProfileVM vm            = new UpdateCustomerProfileVM();

            vm.Email = loggedUser.Email;
            if (loggedProfile != null)
            {
                vm.FirstName = loggedProfile.FirstName;
                vm.LastName  = loggedProfile.LastName;
                vm.Email     = loggedProfile.Email;
                vm.Phone     = loggedProfile.PhoneNumber;
            }

            return(View(vm));
        }
        public async Task <IActionResult> UpdateCustomerProfile(UpdateCustomerProfileVM vm)
        {
            if (ModelState.IsValid)
            {
                //who logged in
                var loggedUser = await _userManager.FindByNameAsync(User.Identity.Name);

                //check if there is a profile already
                CustomerProfile loggedProfile = _customerProfileRepo.GetSingle(p => p.UserId == loggedUser.Id);
                //create or update
                if (loggedProfile != null)
                {
                    //update the loggedProfile
                    loggedProfile.FirstName = vm.FirstName;
                    loggedProfile.LastName  = vm.LastName;
                    loggedUser.Email        = vm.Email;
                    loggedUser.PhoneNumber  = vm.Phone;
                    //save the update to the database
                    _customerProfileRepo.Update(loggedProfile);
                    await _userManager.SetEmailAsync(loggedUser, vm.Email);
                }
                else
                {
                    //create new profile
                    loggedProfile = new CustomerProfile
                    {
                        UserId      = loggedUser.Id,
                        FirstName   = vm.FirstName,
                        LastName    = vm.LastName,
                        Email       = vm.Email,
                        PhoneNumber = loggedUser.PhoneNumber
                    };
                    //save the new profile to database
                    _customerProfileRepo.Create(loggedProfile);
                    await _userManager.SetEmailAsync(loggedUser, vm.Email);
                }
                return(RedirectToAction("Index", "Home"));
            }

            return(View(vm));
        }