protected virtual void SaveProductTags(Product product, string[] productTags) { if (product == null) throw new ArgumentNullException("product"); //product tags var existingProductTags = product.ProductTags.ToList(); var productTagsToRemove = new List<ProductTag>(); foreach (var existingProductTag in existingProductTags) { bool found = false; foreach (string newProductTag in productTags) { if (existingProductTag.Name.Equals(newProductTag, StringComparison.InvariantCultureIgnoreCase)) { found = true; break; } } if (!found) { productTagsToRemove.Add(existingProductTag); } } foreach (var productTag in productTagsToRemove) { product.ProductTags.Remove(productTag); _productService.UpdateProduct(product); } foreach (string productTagName in productTags) { ProductTag productTag; var productTag2 = _productTagService.GetProductTagByName(productTagName); if (productTag2 == null) { //add new product tag productTag = new ProductTag { Name = productTagName }; _productTagService.InsertProductTag(productTag); } else { productTag = productTag2; } if (!product.ProductTagExists(productTag.Id)) { product.ProductTags.Add(productTag); _productService.UpdateProduct(product); } } }
private void SaveProductTags(Product product, string[] productTags) { if (product == null) throw new ArgumentNullException("product"); //product tags var existingProductTags = product.ProductTags.OrderByDescending(pt => pt.ProductCount).ToList(); var productTagsToRemove = new List<ProductTag>(); foreach (var existingProductTag in existingProductTags) { bool found = false; foreach (string newProductTag in productTags) { if (existingProductTag.Name.Equals(newProductTag, StringComparison.InvariantCultureIgnoreCase)) { found = true; break; } } if (!found) { productTagsToRemove.Add(existingProductTag); } } foreach (var productTag in productTagsToRemove) { product.ProductTags.Remove(productTag); //ensure product is saved before updating totals _productService.UpdateProduct(product); _productTagService.UpdateProductTagTotals(productTag); } foreach (string productTagName in productTags) { ProductTag productTag = null; var productTag2 = _productTagService.GetProductTagByName(productTagName); if (productTag2 == null) { //add new product tag productTag = new ProductTag() { Name = productTagName, ProductCount = 0 }; _productTagService.InsertProductTag(productTag); } else { productTag = productTag2; } if (!product.ProductTagExists(productTag.Id)) { product.ProductTags.Add(productTag); //ensure product is saved before updating totals _productService.UpdateProduct(product); } //update product tag totals _productTagService.UpdateProductTagTotals(productTag); } }