public async Task <ActionResult> Edit(ProfileUpdateVM model)
        {
            if (ModelState.IsValid)
            {
                var userData = await _userManager.FindByNameAsync(User.Identity.Name);

                if (!model.EMail.Equals(userData.Email))
                {
                    //var emailChangeToken = await _userManager.GenerateChangeEmailTokenAsync(userData, model.EMail);
                    //var emailChangeResult = await _userManager.ChangeEmailAsync(userData, model.EMail, emailChangeToken);

                    //if (!emailChangeResult.Succeeded)
                    //{
                    //    ModelState.AddModelError("GeneralError", "We couldn't change the EMail, please check your input");
                    //    return View(model);
                    //}
                }

                if (model.NewPassword != null && model.NewPassword != String.Empty)
                {
                    var hashedOldPassword = PasswordHasher.HashPassword(model.OldPassword);
                    var hashedNewPassword = PasswordHasher.HashPassword(model.NewPassword);
                    if (!hashedOldPassword.Equals(hashedNewPassword))
                    {
                        var passwordChangeResult = await _userManager.ChangePasswordAsync(userData, model.OldPassword, model.NewPassword);

                        if (!passwordChangeResult.Succeeded)
                        {
                            ModelState.AddModelError("GeneralError", "We couldn't change the Password, please check your input");
                            return(View(model));
                        }
                    }
                }

                if (((model.PictureUrl.IsNullOrEmpty() && !userData.PictureUrl.IsNullOrEmpty()) ||
                     (!model.PictureUrl.IsNullOrEmpty() && userData.PictureUrl.IsNullOrEmpty()) ||
                     (!model.PictureUrl.IsNullOrEmpty() && !userData.PictureUrl.IsNullOrEmpty() &&
                      !model.PictureUrl.Equals(userData.PictureUrl))) ||
                    !model.EMail.Equals(userData.Email))
                {
                    userData.UserName   = !model.EMail.Equals(userData.Email) ? model.EMail : userData.Email;
                    userData.Email      = userData.UserName;
                    userData.PictureUrl = !model.PictureUrl.IsNullOrEmpty() ? model.PictureUrl : "";
                    var pictureUpdateResult = await _userManager.UpdateAsync(userData);

                    if (!pictureUpdateResult.Succeeded)
                    {
                        ModelState.AddModelError("GeneralError", "We couldn't update your data, please check your the form values");
                        return(View(model));
                    }
                }
            }
            else
            {
                return(View(model));
            }

            return(RedirectToAction("Logout", "Authentication"));
        }
        public async Task <ActionResult <RegisterVM> > Edit()
        {
            var user = await _userManager.FindByNameAsync(User.Identity.Name);

            ProfileUpdateVM vm = new ProfileUpdateVM();

            vm.EMail      = user.Email;
            vm.PictureUrl = user.PictureUrl;

            return(View(vm));
        }