/// <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));
         }
     }
 }
Ejemplo n.º 2
0
        /// <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);
        }