public override double CalcDiscount(PurchaseBasket basket) { if (PreCondition.preCondNumber == CommonStr.DiscountPreConditions.BasketProductPriceAboveEqX) { double reduction = 0; foreach (int pid in basket.Products.Keys) { if (PreCondition.IsFulfilledProductPriceAboveEqXDiscount(basket, pid, MinProductPrice)) { int amount = basket.products[pid]; reduction += (Discount / 100) * basket.Store.GetProductDetails(pid).Item1.Price *amount; } } return(reduction); } else if (PreCondition.PreConditionNumber == CommonStr.DiscountPreConditions.NoDiscount) { return(0); } else if (PreCondition.PreConditionNumber == CommonStr.DiscountPreConditions.BasketPriceAboveX) { if (PreCondition.IsFulfilledMinBasketPriceDiscount(basket, MinBasketPrice)) { return((Discount / 100) * basket.GetBasketOrigPrice()); } else { return(0); } } else if (PreCondition.preCondNumber == CommonStr.DiscountPreConditions.NumUnitsInBasketAboveEqX) { if (PreCondition.IsFulfilledMinUnitsAtBasketDiscount(basket, MinUnitsAtBasket)) { return((Discount / 100) * basket.GetBasketOrigPrice()); } else { return(0); } } else { return(0); } }
public bool IsFulfilledMinBasketPriceDiscount(PurchaseBasket basket, double minPrice) { return(basket.GetBasketOrigPrice() >= minPrice); }