// Calculate amount on the basis of quantity
        public int GetTotalPrice(List <SkuProductCart> skuProductCarts)
        {
            int amount = 0;
            Dictionary <string, int> rulesDict = ActiveRules.GetRulesDict();

            foreach (var item in skuProductCarts)
            {
                switch (item.SkuProduct.SkuType)
                {
                case "A": amount = amount + (item.Quantity / 3) * rulesDict["3A"] + (item.Quantity % 3) * item.SkuProduct.Price; break;

                case "B": amount = amount + (item.Quantity / 2) * rulesDict["2B"] + (item.Quantity % 2) * item.SkuProduct.Price; break;
                }
            }

            return(amount);
        }
        //Case For calculating amount id both Cand D type is present
        public int GetTotalPrice(List <SkuProductCart> skuProductCarts)
        {
            int amount = 0;

            var productCountByType = skuProductCarts.Where(x => x.SkuProduct.SkuType == "C" || x.SkuProduct.SkuType == "D").GroupBy(xy => xy.SkuProduct.SkuType)
                                     .SelectMany(x => x.ToList()).ToList();

            switch (productCountByType.Count())
            {
            case 2:
                var minQuantity = skuProductCarts.Where(x => x.SkuProduct.SkuType == "C" || x.SkuProduct.SkuType == "D").Min(x => x.Quantity);
                var maxType     = skuProductCarts.OrderByDescending(x => x.Quantity).FirstOrDefault();
                amount = ActiveRules.GetRulesDict()["CD"] * minQuantity + (maxType.Quantity - minQuantity) * maxType.SkuProduct.Price;
                break;

            case 1:
                foreach (var item in skuProductCarts)
                {
                    amount = amount + GetTotalPriceForIndividualUnit(item.SkuProduct, item.Quantity, ActiveRules.GetRulesDict());
                }
                break;
            }
            return(amount);
        }
Esempio n. 3
0
 public QualityProfile AddRule(SonarRule rule)
 {
     ActiveRules.Add(rule);
     return(this);
 }