Example #1
0
        private void AddDateTimeColumnsByFormat(string dateTimeFormat)
        {
            SortedDictionary <int, string> dateTimeFormats = GetSortedDateTimeFormats(dateTimeFormat);
            int index = 0;

            foreach (int key in dateTimeFormats.Keys)
            {
                var    format = dateTimeFormats[key];
                string alias  = "DatePart" + index;
                EntitySchemaDatePartQueryFunctionInterval interval = DashboardDataUtils.GetDatePartInterval(format);
                EntitySchemaQueryExpression columnExpression       =
                    EntitySchemaQuery.CreateSchemaColumnExpression(Esq.RootSchema, ColumnPath);
                columnExpression.UId = Guid.NewGuid();
                var queryFunction = new EntitySchemaDatePartQueryFunction(Esq, interval, columnExpression);
                queryFunction.SpecifyQueryAlias(alias);
                columnExpression.ParentQuery = queryFunction.ParentQuery;
                var esqExpression = new EntitySchemaQueryExpression(queryFunction)
                {
                    UId = Guid.NewGuid()
                };
                EntitySchemaQueryColumn column = Esq.AddColumn(esqExpression.Function);
                var map = new Dictionary <string, object>();
                map["format"]           = format;
                map["valueAlias"]       = alias;
                entityColumnsMap[alias] = map;
                if (OrderByGroupField)
                {
                    ApplyColumnOrder(column);
                }
                index++;
            }
        }
Example #2
0
        private SortedDictionary <int, string> GetSortedDateTimeFormats(string dateTimeFormat)
        {
            var priorityDict = new SortedDictionary <int, string>();

            string[] dateTimeFormats = dateTimeFormat.Split(';');
            foreach (var format in dateTimeFormats)
            {
                EntitySchemaDatePartQueryFunctionInterval interval = DashboardDataUtils.GetDatePartInterval(format);
                priorityDict.Add(GetOrderPriority(interval), format);
            }
            return(priorityDict);
        }
Example #3
0
        /// <summary>
        /// Adds filter(s) for column date part(s).
        /// </summary>
        /// <param name="filterColumn">Column for filtration</param>
        /// <param name="filterValue">Stringified JSON object with values</param>
        /// <param name="dateTimeFormat">Date parts separated by ';'</param>
        public void AddDatePartFilter(string filterColumn, string filterValue, string dateTimeFormat)
        {
            string[] dateTimeFormats = dateTimeFormat.Split(';');
            var      filterValueObj  = (JObject)Json.Deserialize(filterValue);
            EntitySchemaQueryExpression columnExpression = Esq.CreateSchemaColumnExpression(filterColumn);

            foreach (var format in dateTimeFormats)
            {
                var datePartValue = filterValueObj.Value <int>(format);
                EntitySchemaDatePartQueryFunctionInterval interval = DashboardDataUtils.GetDatePartInterval(format);
                var filter = GetDatePartFilter(columnExpression, datePartValue, interval);
                Esq.Filters.Add(filter);
            }
        }
Example #4
0
        private int GetOrderPriority(EntitySchemaDatePartQueryFunctionInterval interval)
        {
            int priority;

            switch (interval)
            {
            case EntitySchemaDatePartQueryFunctionInterval.Month:
                priority = 1;
                break;

            case EntitySchemaDatePartQueryFunctionInterval.Week:
                priority = 2;
                break;

            case EntitySchemaDatePartQueryFunctionInterval.Weekday:
                priority = 3;
                break;

            case EntitySchemaDatePartQueryFunctionInterval.Day:
                priority = 4;
                break;

            case EntitySchemaDatePartQueryFunctionInterval.Hour:
                priority = 5;
                break;

            case EntitySchemaDatePartQueryFunctionInterval.HourMinute:
                priority = 6;
                break;

            default:
                priority = 0;
                break;
            }
            return(priority);
        }
Example #5
0
        private EntitySchemaQueryFilter GetDatePartFilter(EntitySchemaQueryExpression columnExpression, int datePartValue, EntitySchemaDatePartQueryFunctionInterval interval)
        {
            var queryFunction = new EntitySchemaDatePartQueryFunction(Esq, interval, columnExpression);
            var filter        = new EntitySchemaQueryFilter(FilterComparisonType.Equal)
            {
                LeftExpression = new EntitySchemaQueryExpression(queryFunction)
            };
            EntitySchemaQueryExpression rightExpression = EntitySchemaQuery.CreateParameterExpression(datePartValue);

            filter.RightExpressions.Add(rightExpression);
            return(filter);
        }