/// <summary> /// Method Adds Sub conditions to <see cref="TreeItemConditionRelation"/> root object. /// </summary> /// <param name="multiFieldArray"> /// Array of multi Field /// </param> /// <param name="rootCondition"> /// <see cref="TreeItemConditionRelation"/> root object. /// </param> /// <param name="fieldValueArray"> /// Array of field Values /// </param> /// <param name="emptyFieldValue"> /// is FieldValue empty /// </param> /// <param name="compare"> /// comparison string /// </param> private void AddTreeItemSubConditions( int[] multiFieldArray, TreeItemConditionRelation rootCondition, List <object> fieldValueArray, bool emptyFieldValue, string compare) { if (multiFieldArray != null) { foreach (var fieldIndex in multiFieldArray) { if (emptyFieldValue) { rootCondition.AddSubCondition(new TreeItemConditionFieldValue((FieldIdType)fieldIndex, string.Empty, compare)); } else { foreach (string fieldValue in fieldValueArray) { rootCondition.AddSubCondition(new TreeItemConditionFieldValue((FieldIdType)fieldIndex, fieldValue, compare)); } } } } else { foreach (string fieldValue in fieldValueArray) { rootCondition.AddSubCondition(new TreeItemConditionFieldValue((FieldIdType)FieldIndex, fieldValue, compare)); } } }
/// <summary> /// Creates the query condition options. /// </summary> /// <param name="crmDatabase"> /// The CRM database. /// </param> /// <param name="options"> /// The options. /// </param> /// <returns> /// The <see cref="TreeItemConditionRelation"/>. /// </returns> public override TreeItemCondition CreateQueryConditionOptions(CRMDatabase crmDatabase, int options) { var condition = new TreeItemConditionRelation(this.relation); foreach (var subCondition in this.conditions) { condition.AddSubCondition(subCondition.CreateQueryConditionOptions(crmDatabase, options)); } return(condition); }
/// <summary> /// Creates the query condition options. /// </summary> /// <param name="crmDatabase">The CRM database.</param> /// <param name="options">The options.</param> /// <returns><see cref="TreeItemCondition"/></returns> public override TreeItemCondition CreateQueryConditionOptions(CRMDatabase crmDatabase, int options) { var fieldInfo = (FieldInfo)null; var multiFieldArray = PopulateMultiFieldArray(crmDatabase, fieldInfo); var multiFieldCount = multiFieldArray?.Length; var fieldValueArray = SetFieldValueArray(options, out var emptyFieldValue); var rootCondition = (TreeItemConditionRelation)null; var compare = string.Empty; if (multiFieldArray != null || fieldValueArray?.Count > 1) { if (fieldInfo != null && fieldInfo.FieldType == Constants.FieldInfoFieldTypeK && fieldValueArray?.Count == 1 && fieldValueArray[0].Equals("0")) { emptyFieldValue = true; } if (CompareOperator == Constants.InequalOperation) { rootCondition = new TreeItemConditionRelation(emptyFieldValue ? Constants.OrOperation : Constants.AndOperation); compare = Constants.InequalOperation; } else { rootCondition = new TreeItemConditionRelation(emptyFieldValue ? Constants.AndOperation : Constants.OrOperation); compare = Constants.EqualOperation; } } else { compare = !string.IsNullOrWhiteSpace(CompareOperator) ? CompareOperator : Constants.EqualOperation; return(emptyFieldValue ? new TreeItemConditionFieldValue((FieldIdType)FieldIndex, string.Empty, compare) : new TreeItemConditionFieldValue((FieldIdType)FieldIndex, fieldValueArray[0].ToString(), compare)); } AddTreeItemSubConditions(multiFieldArray, rootCondition, fieldValueArray, emptyFieldValue, compare); return(rootCondition); }