예제 #1
0
        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);
        }
예제 #2
0
        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);
        }