private ICommodityPrice[] GetCommodityPriceData(CommodityIdentity[] commodityIdentities)
{
// Get pricing data for the products
// adapter for database access
Product product = new Product();
List<string> nonEmptyLocalIds = new List<string>();
foreach (CommodityIdentity prodId in commodityIdentities)
{
if (!prodId.IsEmpty())
nonEmptyLocalIds.Add(prodId.CommodityId);
}
// database request
ProductPriceDocument[] dataDocuments = product.GetProductPrices(nonEmptyLocalIds.ToArray(), _config);
// create collection of commodity prices
List<ICommodityPrice> commodityPrices = new List<ICommodityPrice>();
foreach (CommodityIdentity identity in commodityIdentities)
{
if (identity.IsEmpty())
commodityPrices.Add(CommodityPriceData.Empty);
else
{
// get the corresponding db document and add a new CommodityPriceData to list
bool priceFound = false;
foreach (ProductPriceDocument data in dataDocuments)
{
if (data.ProductId.ToString() == identity.CommodityId)
{
commodityPrices.Add(new CommodityPriceData(identity, data));
priceFound = true;
break;
}
}
if (!priceFound)
commodityPrices.Add(CommodityPriceData.Empty);
}
}
return commodityPrices.ToArray();
}