Example #1
0
        private double getAvailableCampaignDiscountByProduct(Dictionary <string, double> calculatedDiscounts, Tuple <Campaign, double> campaignWithDiscount, Product product)
        {
            double productDiscount = 0.0;

            if (campaignWithDiscount.Item1 == null)
            {
                return(productDiscount);
            }
            if (campaignWithDiscount.Item1.Category != product.Category)
            {
                return(productDiscount);
            }
            if (calculatedDiscounts != null)
            {
                if (calculatedDiscounts.TryGetValue(product.Category.Title, out double discount))
                {
                    return(discount);
                }
            }

            var selectedShoppingCartItemsByCategory = ShoppingCartItems.Where(it => it.Key.Category == campaignWithDiscount.Item1.Category).ToDictionary(it => it.Key, it => it.Value);

            if (selectedShoppingCartItemsByCategory.Count > 0)
            {
                productDiscount = campaignWithDiscount.Item2 / selectedShoppingCartItemsByCategory.Count;
                calculatedDiscounts.Add(product.Category.Title, productDiscount);
            }
            return(productDiscount);
        }
Example #2
0
        private double calculateCampaignDiscount(Campaign campaign)
        {
            if (campaign == null)
            {
                throw new ArgumentNullException("campaign is Null");
            }

            double totalAmount          = 0;
            int    totalNumberOfProduct = 0;
            double campaignDiscount     = 0;
            var    selectedShoppingCartItemsByCategory = ShoppingCartItems.Where(it => it.Key.Category == campaign.Category).ToDictionary(it => it.Key, it => it.Value);

            foreach (var item in selectedShoppingCartItemsByCategory)
            {
                totalNumberOfProduct += item.Value;
                totalAmount          += (item.Value * item.Key.Price);
            }
            if (totalNumberOfProduct <= campaign.MinimumAmount)
            {
                return(campaignDiscount);
            }

            if (campaign.DiscountType == DiscountType.Rate)
            {
                campaignDiscount = totalAmount * (campaign.DiscountAmount / 100);
            }
            else
            {
                campaignDiscount = campaign.DiscountAmount;
            }
            return(campaignDiscount);
        }
Example #3
0
        public void RemoveFromCart(Product product)
        {
            var productInItem = ShoppingCartItems.Where(x => x.Product.Equals(product)).FirstOrDefault();

            if (productInItem != null)
            {
                ShoppingCartItems.Remove(productInItem);
            }
        }