public string EvaluateExpression(string expression, ConfiguredModel model) { CheckBraces(expression); var splitted = expression.Split(_expressionTerms.ExprOpen, _expressionTerms.ExprClose); var evaluated = splitted.Select((str, i) => i % 2 == 0 ? str : model.GetStrValueByPath(str)); return(string.Join("", evaluated)); }
private List <string> GetDescriptionParts(ConfiguredModel model) { var metalConfigs = model.Configs .Select(c => c.SelectedItem) .OfType <OptionsSelectedItem>() .Where(oi => oi.OptionsSource == OptionsSource.Metal) .Select(m => m.ValueNameKey); var gemConfigs = model.Configs .Select(c => c.SelectedItem) .OfType <OptionsSelectedItem>() .Where(oi => oi.OptionsSource == OptionsSource.Gemstone) .Select(m => m.ValueNameKey); return(metalConfigs.Concat(gemConfigs).ToList()); }
private List <string> GetNameParts(ConfiguredModel model) { var nameParts = new List <string> { model.NameKey }; var ornamentConfig = model.Configs .Where(c => c.Identifier.ToLower().Contains(OrnamentKey)) .Select(c => c.SelectedItem) .OfType <OptionsSelectedItem>() .Where(oi => oi.OptionsSource == OptionsSource.Custom) .FirstOrDefault(); if (ornamentConfig != null) { nameParts.Add(ornamentConfig.ValueNameKey); } return(nameParts); }
public async Task <decimal> CalculateExpression(string expression, ConfiguredModel model) { var evaluatedExpression = _variablesEvaluator.EvaluateExpression(expression, model); return(await GetResultFromExpression(evaluatedExpression)); }