private Product DoSave(ProductEditorModel model) { Product product = null; if (model.Id == 0) { product = new Product { ProductType = _productTypeService.Find(model.ProductTypeId) }; UpdateProduct(product, model); _productService.Create(product); } else { product = _productService.Find(model.Id); UpdateProduct(product, model); _productService.Update(product); } if (model.IsPublished) { _productService.Publish(product); } else { _productService.Unpublish(product); } return(product); }
public ActionResult Save(ProductEditorModel model) { var product = DoSave(model); return(JsonNet(new { Id = product.Id }).UsingClientConvention()); }
private void UpdateProduct(Product product, ProductEditorModel model) { product.Name = model.Name; product.Brand = model.Brand == null ? null : _brandService.Find(model.Brand.Id); product.Categories.Clear(); foreach (var category in model.Categories) { product.Categories.Add(_categoryService.Find(category.Id)); } product.SetCustomFields(model.CustomFields); product.SetImages(model.Images); foreach (var variant in product.Variants.ToList()) { if (!model.Variants.Any(v => v.Id == variant.Id)) { product.Variants.Remove(variant); } } foreach (var variantModel in model.Variants) { ProductVariant variant; if (variantModel.Id > 0) { variant = product.Variants.FirstOrDefault(v => v.Id == variantModel.Id); } else { variant = new ProductVariant(); product.Variants.Add(variant); } variant.Sku = variantModel.Sku; variant.Price = variantModel.Price; variant.SetVariantFields(variantModel.VariantFields); } }