Beispiel #1
0
        public IActionResult WeatherForecasts([FromQuery] FlexGridQueryDto queryParams)
        {
            var items = staticRepositoryCollections.Forecasts.Values.AsQueryable();

            if (!string.IsNullOrEmpty(queryParams.GroupExpression))
            {
                var groupedItems = items.GroupBy(queryParams.GroupExpression, "it")
                                   .Select <GroupItem <WeatherForecast> >(ParsingConfig.Default, "new (it.Key as Key, it as Items)");

                return(Ok(new
                {
                    Items = groupedItems.ToDictionary(g => g.Key, g => g.Items),
                    TotalCount = groupedItems.Count()
                }));
            }

            var sortExp = queryParams?.SortExpression;

            if (!string.IsNullOrEmpty(sortExp))
            {
                if (queryParams.SortDescending)
                {
                    sortExp += " descending";
                }
                items = items.OrderBy(sortExp);
            }

            var result = items.Skip(queryParams.PageSize * queryParams.PageNumber).Take(queryParams.PageSize).ToList();

            return(Ok(new
            {
                Items = result,
                TotalCount = staticRepositoryCollections.Forecasts.Count
            }));
        }
Beispiel #2
0
        public IActionResult WeatherForecasts(FlexGridQueryDto queryParams, [FromBody] IEnumerable <FilterDefinition> filters)
        {
            var items = staticRepositoryCollections.Forecasts.Values.AsQueryable();

            var sortExp = queryParams.SortExpression;

            if (!string.IsNullOrEmpty(sortExp))
            {
                if (queryParams.SortDescending)
                {
                    sortExp += " descending";
                }
                items = items.OrderBy(sortExp);
            }

            return(Ok(new
            {
                Items = items.Skip(queryParams.PageSize * queryParams.PageNumber).Take(queryParams.PageSize).ToList(),
                TotalCount = staticRepositoryCollections.Forecasts.Count
            }));
        }