public Calculation ApplyDiscountMarkupRuleCalculation(DiscountMarkupRule discountMarkupRule, Calculation calculation) { calculation.Covers.ToList().ForEach(keyValuePair => { var priceAfterMarkup = Round(keyValuePair.Value.Price * discountMarkupRule.ParamValue, 2); calculation.Covers[keyValuePair.Key] = SetPrice(keyValuePair.Value, priceAfterMarkup); }); return(calculation); }
public bool AppliesDiscountMarkupRuleCalculationParams(DiscountMarkupRule discountMarkupRule, Calculation calculation) { if (IsNullOrEmpty(discountMarkupRule.ApplyIfFormula)) { return(true); } var(paramDefinitions, values) = DomainAdapter.CalculationToCalculationParams(calculation); return((bool)new Interpreter() .Parse(discountMarkupRule.ApplyIfFormula, paramDefinitions.ToArray()) .Invoke(values.ToArray())); }