public async Task <IActionResult> Edit(string userId)
        {
            var user = await _userManager.FindByIdAsync(userId);

            if (user == null)
            {
                return(NotFound());
            }


            var ViewModel = new ProfileFromViewModel
            {
                Id       = userId,
                UserName = user.UserName,
                Email    = user.Email,
            };

            return(View(ViewModel));
        }
        public async Task <IActionResult> Edit(ProfileFromViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var user = await _userManager.FindByIdAsync(model.Id);

            if (user == null)
            {
                return(NotFound());
            }

            var userWithSameEmail = await _userManager.FindByEmailAsync(model.Email);

            if (userWithSameEmail != null && userWithSameEmail.Id != model.Id)
            {
                ModelState.AddModelError("Email", "This email is already assiged to anther user");
                return(View(model));
            }

            var userWithSameUserName = await _userManager.FindByNameAsync(model.UserName);

            if (userWithSameUserName != null && userWithSameUserName.Id != model.Id)
            {
                ModelState.AddModelError("UserName", "This userName is already assiged to anther user");
                return(View(model));
            }
            user.FirstName = model.FirstName;
            user.LastName  = model.LastName;
            user.UserName  = model.UserName;
            user.Email     = model.Email;

            await _userManager.UpdateAsync(user);

            return(RedirectToAction(nameof(Index)));
        }