private EntitySchemaQueryColumn AddQueryColumn(JObject columnItem, string columnPath) { columnPath = DashboardDataUtils.ClearColumnPathSuffix(columnPath); string filterData = columnItem.Value <string>("serializedFilter"); string aggregationType = columnItem.Value <string>("aggregationType"); AggregationType columnAggregationType = AggregationType.None; if (!string.IsNullOrEmpty(aggregationType)) { columnAggregationType = (AggregationType)Enum.Parse(typeof(AggregationType), aggregationType); } EntitySchemaQueryColumn column; if (columnAggregationType != AggregationType.None && !string.IsNullOrEmpty(filterData)) { EntitySchemaQuery subQuery; column = Esq.AddColumn(columnPath, columnAggregationType.ToStrict(), out subQuery); var dashboardData = new BaseDashboardItemSelectBuilder(UserConnection, subQuery); dashboardData.AddFilterByJson(filterData); } else { column = Esq.AddColumn(columnPath); if (!string.IsNullOrEmpty(aggregationType)) { column.SummaryType = columnAggregationType; } } SetColumnOrder(columnItem, column); return(column); }
private void SetReferenceSchemaNames(string rootSchemaName, JArray gridColumns) { EntitySchema entitySchema = null; foreach (JObject columnItem in gridColumns) { if (columnItem.Value <int>("dataValueType") == (int)Terrasoft.Nui.ServiceModel.DataContract.DataValueType.Lookup && string.IsNullOrEmpty(columnItem.Value <string>("referenceSchemaName"))) { string columnPath = DashboardDataUtils.GetColumnPath(columnItem); columnPath = DashboardDataUtils.ClearColumnPathSuffix(columnPath); if (entitySchema == null) { entitySchema = UserConnection.EntitySchemaManager.GetInstanceByName(rootSchemaName); } EntitySchemaColumn column = entitySchema.FindSchemaColumnByPath(columnPath); if (column.ReferenceSchema != null) { columnItem["referenceSchemaName"] = column.ReferenceSchema.Name; } } } }