public IDictionary <Chain, double> GetCartPrice(ICollection <ItemKey> selectedProducts) { var pricesCartByChains = new Dictionary <Chain, double>(); foreach (var chain in ChainsArchive) { pricesCartByChains[chain] = 0; } _productsCartByChain = GetProductsCartByChains(selectedProducts); if (selectedProducts == null || !selectedProducts.Any()) { return(pricesCartByChains); } foreach (var itemKey in selectedProducts) { foreach (var product in ProductsArchive[itemKey]) { var selectedChain = ChainsArchive.Single(chain => chain.ChainId == product.CaindId); if (!pricesCartByChains.ContainsKey(selectedChain)) { pricesCartByChains[selectedChain] = 0; } pricesCartByChains[selectedChain] += product.ItemPrice * itemKey.Quantity; } } return(pricesCartByChains); }
private IDictionary <Chain, ICollection <Product> > GetProductsCartByChains(IEnumerable <ItemKey> selectedProducts) { var productsInChainDictionary = new Dictionary <Chain, ICollection <Product> >(); var allSelectedProducts = selectedProducts.SelectMany(itemKey => ProductsArchive[itemKey]); foreach (var product in allSelectedProducts) { var chainModel = ChainsArchive.Single(x => x.ChainId == product.CaindId); if (!productsInChainDictionary.ContainsKey(chainModel)) { productsInChainDictionary[chainModel] = new List <Product>(); } productsInChainDictionary[chainModel].Add(product); } return(productsInChainDictionary); }