public IActionResult Create(ProductForm model) { if (!ModelState.IsValid) { return new BadRequestObjectResult(ModelState); } var product = new Product { Name = model.Product.Name, SeoTitle = StringHelper.ToUrlFriendly(model.Product.Name), ShortDescription = model.Product.ShortDescription, Description = model.Product.Description, Specification = model.Product.Specification, Price = model.Product.Price, OldPrice = model.Product.OldPrice, IsPublished = model.Product.IsPublished, BrandId = model.Product.BrandId, HasOptions = model.Product.Variations.Any() ? true : false, IsVisibleIndividually = true }; foreach (var option in model.Product.Options) { foreach (var value in option.Values) { product.AddOptionValue(new ProductOptionValue { Value = value, OptionId = option.Id }); } } foreach (var attribute in model.Product.Attributes) { var attributeValue = new ProductAttributeValue { AttributeId = attribute.Id, Value = attribute.Value }; product.AddAttributeValue(attributeValue); } foreach (var categoryId in model.Product.CategoryIds) { var productCategory = new ProductCategory { CategoryId = categoryId }; product.AddCategory(productCategory); } SaveProductImages(model, product); MapProductVariationVmToProduct(model, product); productService.Create(product); return Ok(); }
public Product Clone() { var product = new Product(); product.Name = Name; product.MetaTitle = MetaTitle; product.MetaKeywords = MetaKeywords; product.MetaDescription = MetaDescription; product.ShortDescription = ShortDescription; product.Description = Description; product.Specification = Specification; product.IsPublished = true; product.PublishedOn = DateTime.Now; product.Price = Price; product.OldPrice = OldPrice; product.BrandId = BrandId; foreach(var attribute in AttributeValues) { product.AddAttributeValue(new ProductAttributeValue { AttributeId = attribute.AttributeId, Value = attribute.Value }); } foreach(var category in Categories) { product.AddCategory(new ProductCategory { CategoryId = category.CategoryId }); } return product; }
private void AddOrDeleteProductAttribute(ProductForm model, Product product) { foreach (var productAttributeVm in model.Product.Attributes) { var productAttrValue = product.AttributeValues.FirstOrDefault(x => x.AttributeId == productAttributeVm.Id); if (productAttrValue == null) { productAttrValue = new ProductAttributeValue { AttributeId = productAttributeVm.Id, Value = productAttributeVm.Value }; product.AddAttributeValue(productAttrValue); } else { productAttrValue.Value = productAttributeVm.Value; } } var deletedAttrValues = product.AttributeValues.Where(attrValue => model.Product.Attributes.All(x => x.Id != attrValue.AttributeId)) .ToList(); foreach (var deletedAttrValue in deletedAttrValues) { deletedAttrValue.Product = null; product.AttributeValues.Remove(deletedAttrValue); productAttributeValueRepository.Remove(deletedAttrValue); } }