//Expects input string in a format of "Condition:IdOfNextNode"
        //Condition can be a state check logical condition
        public static Func <StateModel, int?> GetDecisions(string inputEquation)
        {
            var cleanInput = inputEquation.Replace(" ", ""); // no spaces

            var iputParts = cleanInput.Split(":");

            var conditionInput = iputParts[0];
            var nextIdInput    = iputParts[1];

            return((StateModel state) =>
            {
                int nextId;
                if (ParseCondition(conditionInput)(state) &&
                    int.TryParse(nextIdInput, out nextId))
                {
                    return nextId;
                }

                return null;
            });
        }
Exemplo n.º 2
0
        public static Expression <Func <Tidings, bool> > BuildExpression(TidingsCondition condition)
        {
            Type targetType = typeof(Tidings);
            ParseCondition <Tidings> parse = new ParseCondition <Tidings>(targetType);

            if (!string.IsNullOrEmpty(condition.Account))
            {
                parse.BuildExpression("ReviceUser", condition.Account, ConditionOperation.Equal);
            }
            if (condition.IsRead.HasValue)
            {
                parse.BuildExpression("IsRead", condition.IsRead.Value.ToString(), ConditionOperation.Equal);
            }
            return(parse.BuildWhereExpression());;
        }