public ActionResult Edit(ProductManageEditViewModel model) { if (ModelState.IsValid) { //save cover img string newCoverImgUrl; if(model.CoverImg!=null) { var uploadedFile = new UploadedFile(model.CoverImg); var coverImgName = uploadedFile.SaveAsWithGuid(Server.MapPath("~/ImgRepository/ProductImgs/" + model.Id)); var pathRel = Url.Content("~/ImgRepository/ProductImgs/" + model.Id+"/"+coverImgName); newCoverImgUrl = pathRel; } else { newCoverImgUrl = db.Products.Find(model.Id).CoverImgUrl; } //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/" + model.Id), (new FileInfo(productImg.Url)).Name)); var newPathRel = Url.Content("~/ImgRepository/ProductImgs/" + model.Id + "/" + imgName); productImg.Url = newPathRel; productImg.ProductId = model.Id; db.SaveChanges(); } } } if(!string.IsNullOrEmpty(model.DeletedImgsFileNameString)) { var deletedImgsFileNameArray = model.DeletedImgsFileNameString.Split(','); foreach(var item in deletedImgsFileNameArray) { if(!string.IsNullOrEmpty(item)) { var deletedImgList=db.ProductImages.Where(pImage => pImage.Name == item && pImage.ProductId == model.Id).ToList(); foreach(var deletedImg in deletedImgList) { db.ProductImages.Remove(deletedImg); db.SaveChanges(); } } } } //find properties in db var productPropertis = db.ProductProperties.Where(p => model.ProductPropertyForProduct.Contains(p.Id)).ToList(); var product = db.Products.Find(model.Id); product.Name = model.Name; product.ShortDescription = model.ShortDescription; product.Description = model.Description; product.Remark = model.Remark; product.CoverImgUrl = newCoverImgUrl; product.Price = model.Price; product.CurrentDiscount = model.CurrentDiscount; product.DiscountStartTime = model.DiscountStartTime; product.DiscountEndTime = model.DiscountEndTime; product.PublishTime = product.PublishTime; product.IsSeasonalProduct = model.IsSeasonalProduct; product.SaleStartTime = model.SaleStartTime; product.SaleEndTime = product.SaleEndTime; product.CategoryId = model.ProductCategoryForProduct; //many to many relationship solution product.Properties.Clear(); product.Properties = productPropertis; db.Entry(product).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } model.ProductCategories = db.ProductCategories.ToList(); model.ProductProperties = db.ProductProperties.ToList(); return View(model); }
// GET: ProductManage/Edit/5 public ActionResult Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Product product = db.Products.Find(id); if (product == null) { return HttpNotFound(); } //ViewBag.CategoryId = new SelectList(db.ProductCategories, "Id", "Name", product.CategoryId); var productCategories = db.ProductCategories.ToList(); var productProperies = db.ProductProperties.ToList(); var productPropertyIdList = new List<int>(); foreach(var item in product.Properties) { productPropertyIdList.Add(item.Id); } var vm = new ProductManageEditViewModel { Id = product.Id, Name = product.Name, ShortDescription=product.ShortDescription, Description=product.Description, Remark=product.Remark, CoverImgUrl=product.CoverImgUrl, Price=product.Price, CurrentDiscount=product.CurrentDiscount, DiscountStartTime=product.DiscountStartTime, DiscountEndTime=product.DiscountEndTime, PublishTime=product.PublishTime, IsSeasonalProduct=product.IsSeasonalProduct, SaleStartTime=product.SaleStartTime, SaleEndTime=product.SaleEndTime, ProductCategoryForProduct = product.Category.Id, ProductCategories=productCategories, ProductPropertyForProduct=productPropertyIdList, ProductProperties=productProperies }; return View(vm); }