// GET: ProductManage/Create
 public ActionResult Create()
 {
     var vm = new ProductManageCreateViewModel
     {
         PublishTime=DateTime.Now,
         ProductCategories = db.ProductCategories.ToList(),
         ProductProperties = db.ProductProperties.ToList()
     };
     return View(vm);
 }
        public ActionResult Create(ProductManageCreateViewModel model)
        {
            if (ModelState.IsValid)
            {
                //find properties in db
                var productPropertis = db.ProductProperties.Where(p => model.ProductPropertyForProduct.Contains(p.Id)).ToList();

                var product = new Product
                {
                    Name = model.Name,
                    ShortDescription = model.ShortDescription,
                    Remark = model.Remark,

                    Price = model.Price,
                    CurrentDiscount = model.CurrentDiscount,
                    DiscountStartTime = model.DiscountStartTime,
                    DiscountEndTime = model.DiscountEndTime,

                    PublishTime = model.PublishTime,

                    IsSeasonalProduct = model.IsSeasonalProduct,
                    SaleStartTime = model.SaleStartTime,
                    SaleEndTime = model.SaleEndTime,

                    CategoryId = model.ProductCategoryForProduct,
                    Properties = productPropertis
                };

                //store in db and get the id
                db.Products.Add(product);
                db.SaveChanges();

                if (model.CoverImg != null)
                {
                    var uploadedFile = new UploadedFile(model.CoverImg);
                    var coverImgName=uploadedFile.SaveAsWithGuid(Server.MapPath("~/ImgRepository/ProductImgs/" + product.Id));

                    var pathRel = Url.Content("~/ImgRepository/ProductImgs/" + product.Id + "/" + coverImgName);
                    product.CoverImgUrl = pathRel;

                    db.Entry(product).State = EntityState.Modified;
                    db.SaveChanges();
                }

                //update ProductId for each uploaded ProductImg
                if (!string.IsNullOrEmpty(model.UploadImgsIdString))
                {
                    var uploadedImgsIdArray = model.UploadImgsIdString.Split(',');
                    foreach (var item in uploadedImgsIdArray)
                    {
                        if (!string.IsNullOrEmpty(item))
                        {
                            var productImg = db.ProductImages.Where(pImage => pImage.Id.ToString() == item).Single();
                            //move to product's folder
                            var imgName = UploadedFile.UploadedFileMoveTo(productImg.Url, Path.Combine(Server.MapPath("~/ImgRepository/ProductImgs/" + product.Id), (new FileInfo(productImg.Url)).Name));

                            var newPathRel= Url.Content("~/ImgRepository/ProductImgs/" + product.Id + "/" + imgName);
                            productImg.Url = newPathRel;
                            productImg.ProductId = product.Id;

                            db.SaveChanges();
                        }
                    }
                }
                return RedirectToAction("Index");
            }

            model.ProductCategories = db.ProductCategories.ToList();
            model.ProductProperties = db.ProductProperties.ToList();
            return View(model);
        }