Exemplo n.º 1
0
        private static DataSourceRequest GetDataSourceRequest(DatatableRequest request)
        {
            DataSourceRequest dataSourceRequest = new DataSourceRequest()
            {
                Take = request.length,
                Skip = request.start
            };

            if (request.order != null)
            {
                List <Sort> sorts = new List <Sort>();
                foreach (var item in request.order)
                {
                    sorts.Add(new Sort
                    {
                        Field = request.columns[item.column].data,
                        Dir   = item.dir
                    });
                }
                dataSourceRequest.Sort = sorts;
            }

            if (request.columns != null)
            {
                List <Filter> filters = new List <Filter>();
                foreach (var column in request.columns)
                {
                    if (column.search == null || string.IsNullOrEmpty(column.search.value))
                    {
                        continue;
                    }
                    filters.Add(new Filter
                    {
                        Field    = !string.IsNullOrEmpty(column.search.field) ? column.search.field : column.name,
                        Operator = column.search.Operator,
                        Value    = column.search.value
                    });
                }
                if (filters.Count > 0)
                {
                    dataSourceRequest.Filter = new Filter()
                    {
                        Logic   = "and",
                        Filters = filters
                    };
                }
            }

            return(dataSourceRequest);
        }
Exemplo n.º 2
0
        public static DatatableResult <T> ToDatatableResult <T>(this IQueryable <T> queryable, DatatableRequest request)
        {
            DataSourceRequest dataSourceRequest = GetDataSourceRequest(request);
            var result = queryable.ToDataSourceResult(dataSourceRequest.Take, dataSourceRequest.Skip, dataSourceRequest.Sort, dataSourceRequest.Filter, null);

            return(new DatatableResult <T>
            {
                data = result.data,
                recordsFiltered = result.total,
                recordsTotal = result.total,
                draw = request.draw
            });
        }