public async Task<ActionResult> UserProfile(int userId, string activeSection)
 {
     User user = await UserManager.FindByIdAsync(userId);
     if (userId > 0 && user != null)
     {
         var viewModel = new UserProfileViewModel
         {
             Id = user.Id,
             UserName = user.UserName,
             FirstName = user.FirstName,
             LastName = user.LastName,
             AboutMe = user.AboutMe,
             Email = user.Email,
             PasswordHash = user.PasswordHash,
             Address1 = user.Address1,
             Address2 = user.Address2,
             City = user.City,
             State = user.State,
             Country = user.Country,
             ZipCode = user.ZipCode,
             ImageData = user.ImageData,
             ImageMimeType = user.ImageMimeType
         };
         using (var db = new EfdbContext())
         {
             viewModel.Recipes = new List<Recipe>();
             viewModel.Recipes = db.Recipes.Where(r => r.UserId == userId).ToList();
         }
         ViewBag.ActiveSection = activeSection;
         return View(viewModel);
     }
     
     return View("Error", new[] {"No user was found!"});
 }
        public async Task<ActionResult> EditProfile(UserProfileViewModel userViewModel, HttpPostedFileBase image = null)
        {
            if (ModelState.IsValid)
            {
                User user = await UserManager.FindByIdAsync(userViewModel.Id);

                if (user != null)
                {
                    user.Id = userViewModel.Id;
                    user.UserName = userViewModel.UserName;
                    user.Email = userViewModel.Email;
                    user.PasswordHash = userViewModel.PasswordHash;
                    user.FirstName = userViewModel.FirstName;
                    user.LastName = userViewModel.LastName;
                    user.AboutMe = userViewModel.AboutMe;
                    user.Address1 = userViewModel.Address1;
                    user.Address2 = userViewModel.Address2;
                    user.City = userViewModel.City;
                    user.State = userViewModel.State;
                    user.Country = userViewModel.Country;
                    user.ZipCode = userViewModel.ZipCode;
                    user.ImageData = userViewModel.ImageData;
                    user.ImageMimeType = userViewModel.ImageMimeType;

                    if (image != null)
                    {
                        user.ImageMimeType = image.ContentType;
                        user.ImageData = new byte[image.ContentLength];
                        image.InputStream.Read(user.ImageData, 0, image.ContentLength);
                    }

                    using (var db = new EfdbContext())
                    {
                        userViewModel.Recipes = new List<Recipe>();
                        userViewModel.Recipes = db.Recipes.Where(r => r.UserId == userViewModel.Id).ToList();
                    }

                    IdentityResult validationResult = await UserManager.UserValidator.ValidateAsync(user);
                    if (validationResult.Succeeded)
                    {
                        IdentityResult updateResult = await UserManager.UpdateAsync(user);
                        if (updateResult.Succeeded)
                        {
                            ViewBag.ActiveSection = "Profile";
                            return View("UserProfile", userViewModel);
                        }
                        foreach (var error in updateResult.Errors)
                        {
                            ModelState.AddModelError("", error);
                        }
                    }
                    foreach (var error in validationResult.Errors)
                    {
                        ModelState.AddModelError("", error);
                    }
                }
                ModelState.AddModelError("", "There was an error accessing user data. Please try again later!");
            }
            ViewBag.ActiveSection = "EditProfile";
            return View("UserProfile", userViewModel);
        }