public BudgetCalculatorEquation CreateCopy() { var copy = new BudgetCalculatorEquation { Id = this.Id, Name = this.Name, IsVisible = this.IsVisible, Position = this.Position, }; Items.ForEach(x => copy.Items.Add(x.CreateCopy())); return(copy); }
private BudgetEquationWizardVM() { _currentPageIndex = 0; _equation = new BudgetCalculatorEquation(); InnerEquationList = new List<BudgetCalculatorItem>(); }
public void Clear(BudgetCalculatorEquation equation = null) { _currentPageIndex = 0; InnerEquationList.Clear(); if (equation == null) { _equation = new BudgetCalculatorEquation(); } else { _equation = equation; InnerEquationList.AddRange(equation.Items); } RefreshCalculations(); CurrentItem = Items.FirstOrDefault(); Refresh(); }
public void AttachEvaluator(BudgetCalculatorEquation equation) { equation.Evaluator = () => Calculate(equation); equation.Items.ForEach(x => AttachEvaluator(x)); }
public void UpdateForeignDescriptions(BudgetCalculatorEquation equation) { foreach (var item in equation.Items) { switch (item.ValueType) { case CalculatorValueType.CalculatorEquationValue: var eq = CachedService.GetAllEquations().FirstOrDefault(x => x.Id == item.ForeignId); if (eq != null) { item.ForeignDescription = eq.Name; } break; case CalculatorValueType.BudgetExpensesValueOfType: var cf = CachedService.GetAllCashFlows().FirstOrDefault(x => x.Id == item.ForeignId); if (cf != null) { item.ForeignDescription = cf.Name; } break; } } }
public void Refresh(BudgetCalculatorEquation equation) { AttachEvaluator(equation); UpdateForeignDescriptions(equation); }
public decimal? Calculate(BudgetCalculatorEquation equation) { StringBuilder expressionBuilder = new StringBuilder(); foreach (var item in equation.Items) { switch (item.ValueType) { case CalculatorValueType.UserValue: expressionBuilder.Append(item.Value.GetValueOrDefault(0)); break; case CalculatorValueType.Operator: expressionBuilder.AppendFormat(" {0} ", item.OperatorType.ToMath()); break; default: if (item.Evaluator == null) { AttachEvaluator(item); } var value = item.CalculateValue(); if (value.HasValue) { expressionBuilder.Append(value.Value); } break; } } var expression = expressionBuilder.ToString().Replace(",", "."); try { var result = _calculator.Evaluate(expression); return result; } catch (SyntaxException) { return null; } }
public BudgetCalculatorEquation CreateCopy() { var copy = new BudgetCalculatorEquation { Id = this.Id, Name = this.Name, IsVisible = this.IsVisible, Position = this.Position, }; Items.ForEach(x => copy.Items.Add(x.CreateCopy())); return copy; }