private StringBuilder AddCondition(StateMachineCondition condition, StateMachineInput[] inputs)
        {
            StringBuilder s = new StringBuilder();

            if ((condition.ConditionType == ConditionType.Input) && inputs != null)
            {
                Guid conditionGuid      = condition.SourceInputId.Value;
                StateMachineInput input = inputs.FirstOrDefault(i => i.Id == conditionGuid);

                if (input != null)
                {
                    if (!_conditionGuids.Contains(conditionGuid))
                    {
                        _conditionGuids.Add(conditionGuid);
                    }

                    s.Append($" {input.Name}");
                }
            }
            else if ((condition.ConditionType == ConditionType.Not) && inputs != null)
            {
                s.Append("!");
                s.Append(AddCondition(condition.Conditions.First(), inputs));
            }
            else if (condition.ConditionType == ConditionType.And || condition.ConditionType == ConditionType.Or)
            {
                s.Append(" ( ");
                string operation = condition.ConditionType == ConditionType.And ? " AND " : " OR ";

                for (int i = 0; i < condition.Conditions.Count; i++)
                {
                    var item = condition.Conditions[i];

                    if (i > 0)
                    {
                        s.Append(operation);
                    }

                    s.Append(AddCondition(item, inputs));
                }

                s.Append(" ) ");
            }

            return(s);
        }
Exemple #2
0
 public StateMachineInputViewModel(StateMachineInput model, StateMachineViewModel parent)
 {
     _model  = model ?? throw new ArgumentNullException(nameof(model));
     _parent = parent ?? throw new ArgumentNullException(nameof(parent));
 }
 public InputViewModel(StateMachineInput model)
 {
     _model = model;
 }