private static bool IsFilterRightExressionsEmpty(EntitySchemaQueryFilter filter) { EntitySchemaQueryExpressionCollection rightExpressions = filter.RightExpressions; bool isEmpty = (rightExpressions.Count == 0 && filter.ComparisonType != FilterComparisonType.IsNull && filter.ComparisonType != FilterComparisonType.IsNotNull); if (!isEmpty && rightExpressions.Count == 1) { EntitySchemaQueryExpression rightExpression = rightExpressions[0]; DataValueType expressionType = rightExpression.ParameterValueForcedType; isEmpty = (expressionType is TextDataValueType || expressionType is DateTimeDataValueType) && (rightExpression.ParameterValue == null) && (rightExpression.ExpressionType == EntitySchemaQueryExpressionType.Parameter); } return(isEmpty); }
/// <summary> /// Returns entity values by column name. /// </summary> /// <param name="entityId">Entity id.</param> /// <param name="entityName">Entity name.</param> /// <param name="captions">Collection of captions.</param> /// <param name="templateId">Template id.</param> /// <returns>Object.</returns> private Dictionary <string, DataValue> GetEntityValuesByColumnName(UserConnection userConnection, Guid entityId, string entityName, Collection <string> captions, Guid templateId) { Dictionary <string, string> dicEsq = new Dictionary <string, string>(); Dictionary <string, DataValue> fillDic = new Dictionary <string, DataValue>(); if (captions.Count == 0) { return(fillDic); } var expressionConverterHelper = new ExpressionConverterHelper(); Dictionary <string, ColumnMacros> dicMacros = new Dictionary <string, ColumnMacros>(); var entitySchemaManager = userConnection.EntitySchemaManager; var entitySchema = entitySchemaManager.GetInstanceByName(entityName); var esq = new EntitySchemaQuery(entitySchemaManager, entitySchema.Name); string macroslist = GetMacrosListByTemplateId(userConnection, templateId); if (string.IsNullOrEmpty(macroslist)) { return(fillDic); } var macrosList = Json.Deserialize(macroslist) as JArray; foreach (string item in captions) { var fullColumnName = item.Trim(); var currentMacrosList = expressionConverterHelper.MacrosList(fullColumnName); var columnName = expressionConverterHelper.GetColumnName(fullColumnName); if (currentMacrosList.Count > 0 && !dicMacros.ContainsKey(fullColumnName)) { dicMacros.Add(fullColumnName, new ColumnMacros { Name = fullColumnName, ColumnName = columnName, MacrosList = currentMacrosList }); } if (!dicEsq.ContainsKey(columnName)) { AddColumnToEntitySchemaQuery(userConnection, esq, columnName, macrosList, dicEsq); } } EntitySchemaQueryExpressionCollection selectingQueryExpressions = esq.Columns.GetSelectingExpressions(); if (selectingQueryExpressions.Count == 0) { return(fillDic); } esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "Id", entityId)); EntityCollection entityCollection = esq.GetEntityCollection(userConnection); if (entityCollection.Count > 0) { AdditionalMacrosUtility additionalMacrosUtility = new AdditionalMacrosUtility(userConnection); foreach (KeyValuePair <string, string> item in dicEsq) { Entity entity = entityCollection[0]; EntitySchemaColumn entityColumnName = entity.Schema.Columns.GetByName(item.Value); object value = additionalMacrosUtility.GetReportColumnValue(entity, entityColumnName); fillDic.Add(item.Key, new DataValue(entityColumnName.DataValueType, value)); if (dicMacros.Count(d => d.Value.ColumnName == item.Key) > 0) { foreach (var macrosItem in dicMacros.Where(d => d.Value.ColumnName == item.Key)) { ColumnMacros macros = macrosItem.Value; ExpressionConverterValue macrosValue = expressionConverterHelper.GetValue(macros.MacrosList, value); fillDic.Add(macrosItem.Key, new DataValue(macrosValue.ValueType, macrosValue.Data)); } } } } return(fillDic); }