public interface IBoatTraderInventoryLineItemPropertyBuildingStrategy
string BuildProperty(IEnumerable<ProductInstanceVersionLineItem> lineItems);
public sealed class BoatTraderInventoryLineItemColorPropertyBuildingStrategy : IBoatTraderInventoryLineItemPropertyBuildingStrategy
private static readonly List<int> ColorCategoryIds = new List<int>
1,2, 3, 4, 5, 6, 7,8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,32,53,54,66,67
public string BuildProperty(IEnumerable<ProductInstanceVersionLineItem> lineItems)
var colorLineItems = lineItems.Where(x => ColorCategoryIds.Contains(x.ManufacturerInvoiceLineItemCategoryId));
if (colorLineItems == null || colorLineItems.Count() == 0)
var colors = new List<string>();
foreach (var colorLineItem in colorLineItems)
colors.Add(HttpUtility.HtmlEncode(
colorLineItem.ManufacturerInvoiceLineItemCategory.Name + ":" + colorLineItem.Description));
return string.Join(", ", colors);
public sealed class BoatTraderInventoryLineItemPropertyBuilder
public string GetPropertyValue(string propertyName, IEnumerable<ProductInstanceVersionLineItem> lineItems) =>
nameof(BoatTrader.inventoryItem.color_options) => new BoatTraderInventoryLineItemColorPropertyBuildingStrategy().BuildProperty(lineItems),
_ => throw new NotImplementedException(),
color_options = new BoatTraderInventoryLineItemPropertyBuilder().GetPropertyValue(nameof(BoatTrader.inventoryItem.color_options), lineItems),