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."); } }
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 }); }
public ComposedConditionNode(LogicalOperatorCodes logicalOperatorCode) { this.logicalOperatorCode = logicalOperatorCode; }
public IConditionNode CreateComposedConditionNode(LogicalOperatorCodes logicalOperatorCode, IEnumerable<IConditionNode> childConditions) { return this.composedConditionNodeFactory.CreateComposedConditionNode(logicalOperatorCode, childConditions); }