public override Result CalculateTotalDiscount(decimal orderAmount, BaseDiscount discount, Result result) { var couponValue = 10m; // can be retrieved from a CRM, database etc for a specific discount name or customer result.FinalAmount = orderAmount - couponValue; result.TextResultAnalysis += $"{discount.name} : -{couponValue}\u20AC"; return(result); }
public override Result CalculateTotalDiscount(decimal orderAmount, BaseDiscount discount, Result result) { var promotionAmount = 0.1m; // can be retrieved from a CRM, database etc for a specific discount name or customer var promotionValue = orderAmount * promotionAmount; promotionValue = decimal.Round(promotionValue, 2, MidpointRounding.AwayFromZero); result.FinalAmount = orderAmount - promotionValue; result.TextResultAnalysis += $"{discount.name}: -{promotionValue}\u20AC ({(int)(promotionAmount * 100)}%) \n\n"; return(result); }
public override Result CalculateTotalDiscount(decimal orderAmount, BaseDiscount discount, Result result) { if (orderAmount <= 0) { throw new Exception("Invalid amount"); } _discounts = _discounts.OrderBy(x => x.priority).ToList(); foreach (var disc in _discounts) { result = disc.CalculateTotalDiscount(orderAmount, disc, result); result.FinalAmount = decimal.Round(result.FinalAmount, 2, MidpointRounding.AwayFromZero); orderAmount = result.FinalAmount; } return(result); }
public void Remove(BaseDiscount discount) { _discounts.Remove(discount); }
public void Add(BaseDiscount discount) { _discounts.Add(discount); }