private async Task <IConditionNode> CreateConditionNodeRecursive(Guid tenantId, CreateConditionNodeBase createConditionNodeBase)
        {
            switch (createConditionNodeBase)
            {
            case CreateComposedConditionNode cccn:
                LogicalOperatorCodes logicalOperatorCode = (LogicalOperatorCodes)cccn.LogicalOperatorCode;

                List <IConditionNode> conditionNodes = new List <IConditionNode>();
                foreach (CreateConditionNodeBase ccnb in cccn.ChildNodes)
                {
                    IConditionNode conditionNode = await this.CreateConditionNodeRecursive(tenantId, ccnb);

                    conditionNodes.Add(conditionNode);
                }

                return(this.conditionNodeAbstractFactory.CreateComposedConditionNode(logicalOperatorCode, conditionNodes));

            case CreateValueConditionNode cvcn:
                ConditionTypeKey conditionTypeKey = ConditionTypeKey.New(tenantId, cvcn.ConditionTypeCode);
                ConditionType    conditionType    = await this.conditionTypeRepository.GetById(conditionTypeKey);

                DataTypeCodes dataTypeCode = (DataTypeCodes)cvcn.DataTypeCode;
                OperatorCodes operatorCode = (OperatorCodes)cvcn.OperatorCode;

                return(this.conditionNodeAbstractFactory.CreateValueConditionNode(conditionType, dataTypeCode, operatorCode, cvcn.RightHandOperand));

            default:
                throw new NotSupportedException("Unsupported condition node creation.");
            }
        }
Ejemplo n.º 2
0
        protected override string ValidateCurrent(CreateComposedConditionNode createComposedConditionNode)
        {
            LogicalOperatorCodes logicalOperatorCode = (LogicalOperatorCodes)createComposedConditionNode.LogicalOperatorCode;

            if (!ValidLogicalOperatorForComposedConditionNodeCreateRuleInvariant.allowedLogicalOperatorCodes.Contains(logicalOperatorCode))
            {
                return(string.Format(InvariantResources.R005, logicalOperatorCode));
            }

            return(null);
        }
        public IComposedConditionNode CreateComposedConditionNode(LogicalOperatorCodes logicalOperatorCode, IEnumerable <IConditionNode> childConditions)
        {
            if (!supportedLogicalOperatorCodes.Contains(logicalOperatorCode))
            {
                throw new ArgumentException(
                          "The specified logical operator is invalid for composed condition nodes.",
                          nameof(logicalOperatorCode));
            }

            if (!childConditions.Any())
            {
                throw new ArgumentException(
                          "Provided invalid collection of child condition nodes: must have at least one child condition and provided collection has none.",
                          nameof(childConditions));
            }

            return(new ComposedConditionNode(logicalOperatorCode)
            {
                ChildNodes = childConditions
            });
        }
Ejemplo n.º 4
0
 public ComposedConditionNode(LogicalOperatorCodes logicalOperatorCode)
 {
     this.logicalOperatorCode = logicalOperatorCode;
 }
 public IConditionNode CreateComposedConditionNode(LogicalOperatorCodes logicalOperatorCode, IEnumerable<IConditionNode> childConditions)
 {
     return this.composedConditionNodeFactory.CreateComposedConditionNode(logicalOperatorCode, childConditions);
 }