private void AddOrDeleteProductVariation(ProductForm model, Product product) { foreach (var productVariationVm in model.Product.Variations) { var productLink = product.ProductLinks.Where(x => x.LinkType == ProductLinkType.Super).FirstOrDefault(x => x.LinkedProduct.Name == productVariationVm.Name); if (productLink == null) { productLink = productLink = new ProductLink { LinkType = ProductLinkType.Super, Product = product, LinkedProduct = product.Clone() }; productLink.LinkedProduct.Name = productVariationVm.Name; productLink.LinkedProduct.SeoTitle = StringHelper.ToUrlFriendly(productVariationVm.Name); productLink.LinkedProduct.Price = productVariationVm.Price; productLink.LinkedProduct.NormalizedName = productVariationVm.NormalizedName; productLink.LinkedProduct.HasOptions = false; productLink.LinkedProduct.IsVisibleIndividually = false; foreach (var combinationVm in productVariationVm.OptionCombinations) { productLink.LinkedProduct.AddOptionCombination(new ProductOptionCombination { OptionId = combinationVm.OptionId, Value = combinationVm.Value }); } product.AddProductLinks(productLink); } else { productLink.LinkedProduct.Price = productVariationVm.Price; productLink.LinkedProduct.IsDeleted = false; } } foreach (var productLink in product.ProductLinks.Where(x => x.LinkType == ProductLinkType.Super)) { if (model.Product.Variations.All(x => x.Name != productLink.LinkedProduct.Name)) { productLinkRepository.Remove(productLink); productLink.LinkedProduct.IsDeleted = true; } } }
private static void MapProductVariationVmToProduct(ProductForm model, Product product) { foreach (var variationVm in model.Product.Variations) { var productLink = new ProductLink { LinkType = ProductLinkType.Super, Product = product, LinkedProduct = product.Clone() }; productLink.LinkedProduct.Name = variationVm.Name; productLink.LinkedProduct.SeoTitle = StringHelper.ToUrlFriendly(variationVm.Name); productLink.LinkedProduct.Price = variationVm.Price; productLink.LinkedProduct.NormalizedName = variationVm.NormalizedName; productLink.LinkedProduct.HasOptions = false; productLink.LinkedProduct.IsVisibleIndividually = false; foreach (var combinationVm in variationVm.OptionCombinations) { productLink.LinkedProduct.AddOptionCombination(new ProductOptionCombination { OptionId = combinationVm.OptionId, Value = combinationVm.Value }); } productLink.LinkedProduct.ThumbnailImage = product.ThumbnailImage; product.AddProductLinks(productLink); } }