Esempio n. 1
0
        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;
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
 public ActionResult Save(ProductEditorModel model)
 {
     var product = DoSave(model);
     return JsonNet(new
     {
         Id = product.Id
     }).UsingClientConvention();
 }