Ejemplo n.º 1
0
        private static DataTableResponseDataModel <T> ApplyOutputRules <T>(DataTableResponseDataModel <T> responseData, ResponseOptionModel <T> responseOption) where T : class, new()
        {
            responseOption = responseOption
                             ?? new ResponseOptionModel <T>
            {
                ArrayOutputType = ArrayOutputType.BiDimensionalArray
            };

            DataTableResponseDataModel <T> outputData = responseData;

            switch (responseOption.ArrayOutputType)
            {
            case ArrayOutputType.ArrayOfObjects:
            {
                // Nothing is needed
                break;
            }

            default:
                outputData = responseData.Transform <Dictionary <string, object>, object[]>(d => d.Values.ToArray());
                break;
            }

            return(outputData);
        }
Ejemplo n.º 2
0
        public static DataTableResponseDataModel <T> GetDataTableResponse <T>(this IQueryable <T> data, DataTableParamModel dataTableParamModel) where T : class, new()
        {
            var totalRecords = data.Count(); // annoying this, as it causes an extra evaluation..

            var filters = new DataTableFiltering();

            var outputProperties = DataTableTypeInfo <T> .Properties;

            var filteredData = filters.ApplyFiltersAndSort(dataTableParamModel, data, outputProperties);

            var totalDisplayRecords = filteredData.Count();

            var skipped = filteredData.Skip(dataTableParamModel.DisplayStart);

            var page = (dataTableParamModel.DisplayLength <= 0 ? skipped : skipped.Take(dataTableParamModel.DisplayLength)).ToArray();

            var result = new DataTableResponseDataModel <T>
            {
                TotalRecord        = totalRecords,
                TotalDisplayRecord = totalDisplayRecords,
                Echo = dataTableParamModel.Echo,
                Data = page.Cast <object>().ToArray()
            };

            return(result);
        }
Ejemplo n.º 3
0
        public static DataTableActionResult <T> Create <T>(DataTableResponseDataModel <T> responseData, ResponseOptionModel <T> responseOption = null) where T : class, new()
        {
            var result = new DataTableActionResult <T>(responseData);

            var dictionaryTransform = DataTableTypeInfo <T> .ToDictionary(responseOption);

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

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

            return(result);
        }
Ejemplo n.º 4
0
        /// <typeparam name="T"></typeparam>
        /// <param name="responseData">
        ///     The properties of this can be marked up with [DataTablesAttribute] to control sorting/searchability/visibility
        /// </param>
        /// <param name="transform">
        ///     // a transform for custom column rendering e.g. to do a custom date row =&gt; new {
        ///     CreatedDate = row.CreatedDate.ToString("dd MM yy") }
        /// </param>
        /// <param name="responseOption"></param>
        /// <returns></returns>
        public static DataTableActionResult <T> Create <T>(DataTableResponseDataModel <T> responseData, Func <T, object> transform, ResponseOptionModel <T> responseOption = null) where T : class, new()
        {
            transform = transform ?? (s => s);

            var result = new DataTableActionResult <T>(responseData);

            result.Data =
                result
                .Data
                .Transform <T, Dictionary <string, object> >
                (
                    row => TransformTypeInfoHelper.MergeTransformValuesIntoDictionary(transform, row)
                )
                .Transform <Dictionary <string, object>, Dictionary <string, object> >(StringTransformers.StringifyValues);

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

            return(result);
        }
Ejemplo n.º 5
0
 public static DataTableActionResult <T> GetDataTableActionResult <T>(this DataTableResponseDataModel <T> responseData, ResponseOptionModel <T> responseOption = null) where T : class, new()
 {
     return(DataTableActionResult.Create(responseData, responseOption));
 }