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(); }
private void AddOrDeleteProductOption(ProductForm model, Product product) { foreach (var optionVm in model.Product.Options) { foreach (var value in optionVm.Values) { if (!product.OptionValues.Any(x => x.OptionId == optionVm.Id && x.Value == value)) { product.AddOptionValue(new ProductOptionValue { Value = value, OptionId = optionVm.Id }); } } } var deletedProductOptionValues = new List<ProductOptionValue>(); foreach (var productOptionValue in product.OptionValues) { var isExist = false; foreach (var optionVm in model.Product.Options) { foreach (var value in optionVm.Values) { if (productOptionValue.OptionId == optionVm.Id && productOptionValue.Value == value) { isExist = true; break; } } if (isExist) { break; } } if (!isExist) { deletedProductOptionValues.Add(productOptionValue); } } foreach (var productOptionValue in deletedProductOptionValues) { product.OptionValues.Remove(productOptionValue); productOptionValueRepository.Remove(productOptionValue); } }