Exemplo n.º 1
0
        public static DataTablesResult <TSource> Create <TSource>(IQueryable <TSource> q, DataTablesParam dataTableParam,
                                                                  ResponseOptions <TSource> responseOptions = null)
        {
            var result = new DataTablesResult <TSource>(q, dataTableParam);

            var dictionaryTransform = DataTablesTypeInfo <TSource> .ToDictionary(responseOptions);

            result.Data = result.Data
                          .Transform <TSource, Dictionary <string, object> >(dictionaryTransform)
                          .Transform <Dictionary <string, object>, Dictionary <string, object> >(StringTransformers.StringifyValues);

            result.Data = ApplyOutputRules(result.Data, responseOptions);

            return(result);
        }
Exemplo n.º 2
0
        public static DataTablesResponse GetDataTableResultNoLock <T>(this IQueryable <T> query, DataTablesModel param)
        {
            var dataTablesResponseData = param.ToDataTablesParam().GetDataTablesResponseNoLock(query);

            dataTablesResponseData.iTotalDisplayRecords = dataTablesResponseData.iTotalRecords;
            var responseOptions = new ResponseOptions <T>()
            {
                ArrayOutputType = null
            };
            var dictionaryTransform = DataTablesTypeInfo <T> .ToDictionary(responseOptions);

            dataTablesResponseData = dataTablesResponseData.Transform <T, Dictionary <string, object> >(dictionaryTransform)
                                     .Transform <Dictionary <string, object>, Dictionary <string, object> >(StringTransformers.StringifyValues);
            dataTablesResponseData = ApplyOutputRules(dataTablesResponseData, responseOptions);
            return(dataTablesResponseData.ToDataTablesResponse());
        }
Exemplo n.º 3
0
        public static Dictionary <string, object> MergeTransformValuesIntoDictionary <TInput, TTransform>(Func <TInput, TTransform> transformInput, TInput tInput)
        {
            //get the the properties from the input as a dictionary
            var dict = DataTablesTypeInfo <TInput> .ToDictionary(tInput);

            //get the transform object
            var transform = transformInput(tInput);

            if (transform != null)
            {
                foreach (var propertyInfo in transform.GetType().GetTypeInfo().GetProperties())
                {
                    dict[propertyInfo.Name] = propertyInfo.GetValue(transform, null);
                }
            }
            return(dict);
        }
Exemplo n.º 4
0
        public static ColDef[] ColDefs(this Type t)
        {
            var propInfos  = DataTablesTypeInfo.Properties(t);
            var columnList = new List <ColDef>();

            foreach (var dtpi in propInfos)
            {
                var colDef = new ColDef(dtpi.PropertyInfo.Name, dtpi.PropertyInfo.PropertyType);
                foreach (var att in dtpi.Attributes)
                {
                    att.ApplyTo(colDef, dtpi.PropertyInfo);
                }

                columnList.Add(colDef);
            }
            return(columnList.ToArray());
        }
Exemplo n.º 5
0
        public static async Task <DataTablesResponse> GetDataTableResultAsync <T>(this IQueryable <T> query,
                                                                                  DataTablesModel param, bool disablePaging = false)
        {
            var dataTablesResponseData =
                await param.ToDataTablesParam().GetDataTablesResponseAsync(query, disablePaging).ConfigureAwait(false);

            dataTablesResponseData.iTotalDisplayRecords = dataTablesResponseData.iTotalRecords;
            var responseOptions = new ResponseOptions <T>()
            {
                ArrayOutputType = null
            };
            var dictionaryTransform = DataTablesTypeInfo <T> .ToDictionary(responseOptions);

            dataTablesResponseData = dataTablesResponseData.Transform <T, Dictionary <string, object> >(dictionaryTransform)
                                     .Transform <Dictionary <string, object>, Dictionary <string, object> >(StringTransformers.StringifyValues);
            dataTablesResponseData = ApplyOutputRules(dataTablesResponseData, responseOptions);
            return(dataTablesResponseData.ToDataTablesResponse());
        }
Exemplo n.º 6
0
        public static async Task <DataTablesResponseData> GetDataTableResponseAsync <TSource>(this IQueryable <TSource> data, DataTablesParam param, Action <TSource> postQueryTransform, bool disablePaging = false)
        {
            var filters          = new DataTablesFiltering();
            var outputProperties = DataTablesTypeInfo <TSource> .Properties;

            List <TSource> queryResult;
            var            totalDisplayRecords = 0;
            var            filteredData        = filters.ApplyFiltersAndSort(param, data, outputProperties);

            if (!disablePaging)
            {
                totalDisplayRecords = await filteredData.CountAsync();

                var skipped = filteredData.Skip(param.iDisplayStart);
                queryResult = await(param.iDisplayLength <= 0 ? skipped : skipped.Take(param.iDisplayLength)).ToListAsync();
            }
            else
            {
                queryResult = await filteredData.ToListAsync();

                totalDisplayRecords = queryResult.Count();
            }

            queryResult.ForEach(postQueryTransform);

            var result = new DataTablesResponseData()
            {
                iTotalRecords        = totalDisplayRecords,
                iTotalDisplayRecords = totalDisplayRecords,
                sEcho  = param.sEcho,
                aaData = queryResult.Cast <object>().ToArray(),
            };

            var responseOptions = new ResponseOptions <TSource> {
                ArrayOutputType = null
            };
            var dictionaryTransform = DataTablesTypeInfo <TSource> .ToDictionary(responseOptions);

            result = result.Transform(dictionaryTransform).Transform <Dictionary <string, object>, Dictionary <string, object> >(StringTransformers.StringifyValues);
            result = ApplyOutputRules(result, responseOptions);
            return(result);
        }