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); }
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()); }
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); }
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()); }
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); }