private static CartItemDTO ApplyPromotion(IList <Stocks> stockItems, ActivePromotionDTO activeDiscount, CartItemDTO cartItems) { foreach (Discount discount in activeDiscount.cummilativeDiscount) { foreach (CartItems cItem in cartItems.Items) { if (cItem.Item == discount.Item && cItem.Unit >= 3) { cItem.DiscountAmount = computePrice(cItem.Unit, cItem.UnitPrice, cItem.DiscountAmount, discount.DiscountPrice, discount.Unit); cItem.IsPromoApplied = true; } } } IEnumerable <CartItems> cartitemAfterPomo = new List <CartItems>(); foreach (CombinedPromo combinedPromo in activeDiscount.Combined) { IEnumerable <CartItems> validItems = cartItems.Items.Where(cItem => combinedPromo.Product.Any(item => cItem.Item == item.Name && !cItem.IsPromoApplied)); cartitemAfterPomo = computeCombinedDis(validItems, combinedPromo); } cartitemAfterPomo.ToList().ForEach(item => { cartItems.Items.Where(x => x.Item == item.Item).Select(w => w.DiscountAmount = item.DiscountAmount); }); return(cartItems); }
static void Main(string[] args) { IList <Stocks> stockItems = InitiateStock(); ActivePromotionDTO activeDiscount = InitiateActivePromotion(); CartItemDTO cartItems = GetCartItems(); logMylogic(stockItems, activeDiscount, ApplyPromotion(stockItems, activeDiscount, cartItems)); }
private static void logMylogic(IList <Stocks> stocks, ActivePromotionDTO promotions, CartItemDTO cartItems) { Console.WriteLine("Total Combined Promotion: " + promotions.Combined.Count()); Console.WriteLine("Total Individual Discount Promotion: " + promotions.cummilativeDiscount.Count()); foreach (CartItems item in cartItems.Items) { Console.WriteLine(); Console.WriteLine("-------------------------------------------------------"); Console.WriteLine("Item: " + item.Item); Console.WriteLine("UnitPrice: " + item.UnitPrice); Console.WriteLine("Unit: " + item.Unit); Console.WriteLine("IsPromoApplied: " + item.IsPromoApplied); Console.WriteLine("DiscountAmount: " + item.DiscountAmount); Console.WriteLine("TotalAmount: " + item.TotalAmount); } }