/// <summary>
        /// Remove a image from list images of product
        /// </summary>
        /// <param name="Id">product Id</param>
        /// <returns>updated view of Cart</returns>
        public ActionResult DeleteImage(int productId, int imageId)
        {
            product_Products product_Products = db.product_Products
               .Include(i => i.product_Categories)
               .Include(i => i.share_Images)
               .Where(i => i.ID == productId)
               .SingleOrDefault();
            if (product_Products != null && product_Products.share_Images.Count() > 0)
            {
                share_Images image = product_Products.share_Images.Where(i => i.ID == imageId).SingleOrDefault();
                if (image != null)
                {
                    try
                    {
                        product_Products.share_Images.Remove(image);
                        var deleteImage = db.share_Images.First(i => i.ID == image.ID);
                        var path = deleteImage.ImagePath;
                        db.share_Images.Remove(deleteImage);
                        db.SaveChanges();
                        DeleteImageInFolder(path);
                    }
                    catch (RetryLimitExceededException)
                    {

                    }
                }
            }

            LoadListImageProductPartialViewModels listImageViewModels = new LoadListImageProductPartialViewModels()
            {
                ProductId = product_Products.ID,
                Images = product_Products.share_Images
            };
            return PartialView("LoadListImageProduct", listImageViewModels);
        }
        public ActionResult UploadImage(IEnumerable<HttpPostedFileBase> files, int? IdProduct)
        {

            if (IdProduct == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            product_Products product_Products = db.product_Products
               .Include(i => i.product_Categories)
               .Include(i => i.share_Images)
               .Where(i => i.ID == IdProduct)
               .Single();
            if (files != null)
            {
                foreach (var file in files)
                {

                    if (file.ContentLength > 0)
                    {
                        // width + height will force size, care for distortion
                        //Exmaple: ImageUpload imageUpload = new ImageUpload { Width = 800, Height = 700 };

                        // height will increase the width proportionally
                        //Example: ImageUpload imageUpload = new ImageUpload { Height= 600 };

                        // width will increase the height proportionally
                        ImageUpload imageUpload = new ImageUpload { Width = 600 };

                        // rename, resize, and upload
                        //return object that contains {bool Success,string ErrorMessage,string ImageName}
                        ImageResult imageResult = imageUpload.RenameUploadFile(file);
                        if (imageResult.Success)
                        {
                            //TODO: write the filename to the db
                            var photo = new share_Images
                            {
                                ImageName = imageResult.ImageName,
                                ImagePath = Path.Combine(ImageUpload.LoadPath, imageResult.ImageName)
                            };
                            if (product_Products.share_Images == null)
                            {
                                product_Products.share_Images = new List<share_Images>();
                            }
                            product_Products.share_Images.Add(photo);
                            if (product_Products.share_Images.Count() > 0)
                            {
                                product_Products.CoverImageID = product_Products.share_Images.ElementAt(0).ID;
                            }

                        }
                        else
                        {
                            // use imageResult.ErrorMessage to show the error
                            ViewBag.Error = imageResult.ErrorMessage;
                        }
                    }

                }
                db.SaveChanges();
            }
            LoadListImageProductPartialViewModels listImageViewModels = new LoadListImageProductPartialViewModels()
            {
                ProductId = product_Products.ID,
                Images = product_Products.share_Images
            };
            return PartialView("LoadListImageProduct", listImageViewModels);
        }