in src/Modules/SimplCommerce.Module.Catalog/Areas/Catalog/Controllers/ProductApiController.cs [786:835]
private void AddOrDeleteProductLinks(ProductForm model, Product product)
{
foreach (var relatedProductVm in model.Product.RelatedProducts)
{
var productLink = product.ProductLinks.Where(x => x.LinkType == ProductLinkType.Related).FirstOrDefault(x => x.LinkedProductId == relatedProductVm.Id);
if (productLink == null)
{
productLink = new ProductLink
{
LinkType = ProductLinkType.Related,
Product = product,
LinkedProductId = relatedProductVm.Id,
};
_productLinkRepository.Add(productLink);
}
}
foreach (var productLink in product.ProductLinks.Where(x => x.LinkType == ProductLinkType.Related))
{
if (model.Product.RelatedProducts.All(x => x.Id != productLink.LinkedProductId))
{
_productLinkRepository.Remove(productLink);
}
}
foreach (var crossSellProductVm in model.Product.CrossSellProducts)
{
var productLink = product.ProductLinks.Where(x => x.LinkType == ProductLinkType.CrossSell).FirstOrDefault(x => x.LinkedProductId == crossSellProductVm.Id);
if (productLink == null)
{
productLink = new ProductLink
{
LinkType = ProductLinkType.CrossSell,
Product = product,
LinkedProductId = crossSellProductVm.Id,
};
_productLinkRepository.Add(productLink);
}
}
foreach (var productLink in product.ProductLinks.Where(x => x.LinkType == ProductLinkType.CrossSell))
{
if (model.Product.CrossSellProducts.All(x => x.Id != productLink.LinkedProductId))
{
_productLinkRepository.Remove(productLink);
}
}
}