コード例 #1
0
        public string List_ExportImplementation(DatasourceRequest datasourceRequest, ExportHelper.ExportOptions exportOptions, List <AggregatorInfo <zAppDev.DotNet.Framework.Identity.Model.ApplicationOperation> > aggregatorsInfo)
        {
            if (exportOptions.Range == ExportHelper.Range.TOP100)
            {
                datasourceRequest.StartRow = 0;
                datasourceRequest.PageSize = 100;
            }
            else if (exportOptions.Range == ExportHelper.Range.ALL)
            {
                datasourceRequest.StartRow = 0;
                datasourceRequest.PageSize = int.MaxValue;
            }
            if (string.IsNullOrWhiteSpace(exportOptions.Filename))
            {
                exportOptions.Filename = "List";
            }
            if (exportOptions.ColumnOptions == null)
            {
                exportOptions.ColumnOptions = new List <ExportHelper.ColumnOptions>
                {
                    new ExportHelper.ColumnOptions {
                        Column = "ParentControllerName", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "Name", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "IsAvailableToAllAuthorizedUsers", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "IsAvailableToAnonymous", IsVisible = true
                    },
                };
            }
            var queryable   = Get_List_DatasourceQueryable(datasourceRequest);
            var totalRows   = DatasourceRetriever.ApplyDynamicFilterToQueryable(datasourceRequest, queryable).Count();
            var items       = DatasourceRetriever.Retrieve(datasourceRequest, queryable);;
            var dto         = items.Select(i => new List1DataSet_ApplicationOperationDTO(i));
            var formattings = new Dictionary <string, string>();
            var aggregators = RuntimePredicateBuilder.BuildAggregatorPredicates(aggregatorsInfo);

            foreach (var a in aggregators)
            {
                var formatting = formattings.ContainsKey(a.Column) ? formattings[a.Column] : null;
                a.Calculate(queryable, formatting);
            }
            var exportDataDTO = new List <ExportHelper.ExportRecordDTO>();

            foreach (var record in dto)
            {
                var recordDTO = new ExportHelper.ExportRecordDTO();
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = nameof(record.ParentControllerName),
                    Value          = record?.ParentControllerName,
                    ColumnDataType = "string",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("OperationsList", "RES_LIST_List_COLUMN_ParentControllerName")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = nameof(record.Name),
                    Value          = record?.Name,
                    ColumnDataType = "string",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("OperationsList", "RES_LIST_List_COLUMN_Name")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = nameof(record.IsAvailableToAllAuthorizedUsers),
                    Value          = record?.IsAvailableToAllAuthorizedUsers,
                    ColumnDataType = "bool",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("OperationsList", "RES_LIST_List_COLUMN_IsAvailableToAllAuthorizedUsers")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = nameof(record.IsAvailableToAnonymous),
                    Value          = record?.IsAvailableToAnonymous,
                    ColumnDataType = "bool",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("OperationsList", "RES_LIST_List_COLUMN_IsAvailableToAnonymous")
                });
                exportDataDTO.Add(recordDTO);
            }
            if (aggregators.Count > 0)
            {
                foreach (AggregatorType aggregatorType in Enum.GetValues(typeof(AggregatorType)))
                {
                    var emptyAggregatorRow = true;
                    var recordDTO          = new ExportHelper.ExportRecordDTO();
                    foreach (var columnOption in exportOptions.ColumnOptions)
                    {
                        var aggregatorValue = "";
                        switch (aggregatorType)
                        {
                        case AggregatorType.COUNT:
                            if (columnOption.CountIsVisible)
                            {
                                var averageAggregator = aggregators.SingleOrDefault(agg => agg.Column == columnOption.Column && agg.Type == AggregatorType.COUNT);
                                aggregatorValue    = $"{BaseViewPage<object>.GetResourceValue("GlobalResources", "RES_DATALIST_AGGREGATORS_GrandCount")} {averageAggregator?.ValueFormatted}";
                                emptyAggregatorRow = false;
                            }
                            break;

                        case AggregatorType.SUM:
                            if (columnOption.SumIsVisible)
                            {
                                var averageAggregator = aggregators.SingleOrDefault(agg => agg.Column == columnOption.Column && agg.Type == AggregatorType.SUM);
                                aggregatorValue    = $"{BaseViewPage<object>.GetResourceValue("GlobalResources", "RES_DATALIST_AGGREGATORS_GrandTotal")} {averageAggregator?.ValueFormatted}";
                                emptyAggregatorRow = false;
                            }
                            break;

                        case AggregatorType.AVERAGE:
                            if (columnOption.AverageIsVisible)
                            {
                                var averageAggregator = aggregators.SingleOrDefault(agg => agg.Column == columnOption.Column && agg.Type == AggregatorType.AVERAGE);
                                aggregatorValue   += $"{BaseViewPage<object>.GetResourceValue("GlobalResources", "RES_DATALIST_AGGREGATORS_GrandAverage")} {averageAggregator?.ValueFormatted}";
                                emptyAggregatorRow = false;
                            }
                            break;
                        }
                        recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                        {
                            ColumnName     = columnOption.Column,
                            Value          = aggregatorValue,
                            ColumnDataType = "string",
                            Format         = ""
                        });
                    }
                    if (!emptyAggregatorRow)
                    {
                        exportDataDTO.Add(recordDTO);
                    }
                }
            }
            var path     = ExportHelper.ExportList(exportDataDTO, exportOptions, totalRows);
            var content  = System.IO.File.ReadAllBytes(Path.Combine(Path.GetTempPath(), path));
            var fileName = Path.GetFileName(path);

            return(FileHelper.PendingDownloadInstance.Add("OperationsList", content, fileName));
        }
        public string SupplierListNoDT_ExportImplementation(DatasourceRequest datasourceRequest, ExportHelper.ExportOptions exportOptions, List <AggregatorInfo <DSS5_SupplyChainFinancialsOptimisation.BO.Supplier> > aggregatorsInfo)
        {
            if (exportOptions.Range == ExportHelper.Range.TOP100)
            {
                datasourceRequest.StartRow = 0;
                datasourceRequest.PageSize = 100;
            }
            else if (exportOptions.Range == ExportHelper.Range.ALL)
            {
                datasourceRequest.StartRow = 0;
                datasourceRequest.PageSize = int.MaxValue;
            }
            if (string.IsNullOrWhiteSpace(exportOptions.Filename))
            {
                exportOptions.Filename = "SupplierListNoDT";
            }
            if (exportOptions.ColumnOptions == null)
            {
                exportOptions.ColumnOptions = new List <ExportHelper.ColumnOptions>
                {
                    new ExportHelper.ColumnOptions {
                        Column = "UserName", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "Company", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "Business", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "PercentageOfCreditNotes", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "AcceptedPolicyTerms", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "SupplierStatus", IsVisible = true
                    },
                };
            }
            var queryable   = Get_SupplierListNoDT_DatasourceQueryable(datasourceRequest);
            var totalRows   = DatasourceRetriever.ApplyDynamicFilterToQueryable(datasourceRequest, queryable).Count();
            var items       = DatasourceRetriever.Retrieve(datasourceRequest, queryable);;
            var dto         = items.Select(i => new SupplierDataSet_SupplierDTO(i));
            var formattings = new Dictionary <string, string>();
            var aggregators = RuntimePredicateBuilder.BuildAggregatorPredicates(aggregatorsInfo);

            foreach (var a in aggregators)
            {
                var formatting = formattings.ContainsKey(a.Column) ? formattings[a.Column] : null;
                a.Calculate(queryable, formatting);
            }
            var exportDataDTO = new List <ExportHelper.ExportRecordDTO>();

            foreach (var record in dto)
            {
                var recordDTO = new ExportHelper.ExportRecordDTO();
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = nameof(record.UserName),
                    Value          = record?.UserName,
                    ColumnDataType = "string",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("PendingRegisteredSuppliersList", "RES_LIST_SupplierListNoDT_COLUMN_UserName")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = nameof(record.Company),
                    Value          = record?.Company,
                    ColumnDataType = "string",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("PendingRegisteredSuppliersList", "RES_LIST_SupplierListNoDT_COLUMN_Company")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = nameof(record.Business),
                    Value          = record?.Business,
                    ColumnDataType = "string",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("PendingRegisteredSuppliersList", "RES_LIST_SupplierListNoDT_COLUMN_Business")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = nameof(record.PercentageOfCreditNotes),
                    Value          = record?.PercentageOfCreditNotes,
                    ColumnDataType = "string",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("PendingRegisteredSuppliersList", "RES_LIST_SupplierListNoDT_COLUMN_PercentageOfCreditNotes")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = nameof(record.AcceptedPolicyTerms),
                    Value          = record?.AcceptedPolicyTerms,
                    ColumnDataType = "bool",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("PendingRegisteredSuppliersList", "RES_LIST_SupplierListNoDT_COLUMN_AcceptedPolicyTerms")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = nameof(record.SupplierStatus),
                    Value          = record?.SupplierStatus,
                    ColumnDataType = "string",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("PendingRegisteredSuppliersList", "RES_LIST_SupplierListNoDT_COLUMN_SupplierStatus")
                });
                exportDataDTO.Add(recordDTO);
            }
            if (aggregators.Count > 0)
            {
                foreach (AggregatorType aggregatorType in Enum.GetValues(typeof(AggregatorType)))
                {
                    var emptyAggregatorRow = true;
                    var recordDTO          = new ExportHelper.ExportRecordDTO();
                    foreach (var columnOption in exportOptions.ColumnOptions)
                    {
                        var aggregatorValue = "";
                        switch (aggregatorType)
                        {
                        case AggregatorType.COUNT:
                            if (columnOption.CountIsVisible)
                            {
                                var averageAggregator = aggregators.SingleOrDefault(agg => agg.Column == columnOption.Column && agg.Type == AggregatorType.COUNT);
                                aggregatorValue    = $"{BaseViewPage<object>.GetResourceValue("GlobalResources", "RES_DATALIST_AGGREGATORS_GrandCount")} {averageAggregator?.ValueFormatted}";
                                emptyAggregatorRow = false;
                            }
                            break;

                        case AggregatorType.SUM:
                            if (columnOption.SumIsVisible)
                            {
                                var averageAggregator = aggregators.SingleOrDefault(agg => agg.Column == columnOption.Column && agg.Type == AggregatorType.SUM);
                                aggregatorValue    = $"{BaseViewPage<object>.GetResourceValue("GlobalResources", "RES_DATALIST_AGGREGATORS_GrandTotal")} {averageAggregator?.ValueFormatted}";
                                emptyAggregatorRow = false;
                            }
                            break;

                        case AggregatorType.AVERAGE:
                            if (columnOption.AverageIsVisible)
                            {
                                var averageAggregator = aggregators.SingleOrDefault(agg => agg.Column == columnOption.Column && agg.Type == AggregatorType.AVERAGE);
                                aggregatorValue   += $"{BaseViewPage<object>.GetResourceValue("GlobalResources", "RES_DATALIST_AGGREGATORS_GrandAverage")} {averageAggregator?.ValueFormatted}";
                                emptyAggregatorRow = false;
                            }
                            break;
                        }
                        recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                        {
                            ColumnName     = columnOption.Column,
                            Value          = aggregatorValue,
                            ColumnDataType = "string",
                            Format         = ""
                        });
                    }
                    if (!emptyAggregatorRow)
                    {
                        exportDataDTO.Add(recordDTO);
                    }
                }
            }
            var path     = ExportHelper.ExportList(exportDataDTO, exportOptions, totalRows);
            var content  = System.IO.File.ReadAllBytes(Path.Combine(Path.GetTempPath(), path));
            var fileName = Path.GetFileName(path);

            return(FileHelper.PendingDownloadInstance.Add("PendingRegisteredSuppliersList", content, fileName));
        }
        public string DeliveryNoteListNoDT_ExportImplementation(DatasourceRequest datasourceRequest, ExportHelper.ExportOptions exportOptions, List <AggregatorInfo <DSS5_SupplyChainFinancialsOptimisation.BO.DeliveryNote> > aggregatorsInfo)
        {
            if (exportOptions.Range == ExportHelper.Range.TOP100)
            {
                datasourceRequest.StartRow = 0;
                datasourceRequest.PageSize = 100;
            }
            else if (exportOptions.Range == ExportHelper.Range.ALL)
            {
                datasourceRequest.StartRow = 0;
                datasourceRequest.PageSize = int.MaxValue;
            }
            if (string.IsNullOrWhiteSpace(exportOptions.Filename))
            {
                exportOptions.Filename = "DeliveryNoteListNoDT";
            }
            if (exportOptions.ColumnOptions == null)
            {
                exportOptions.ColumnOptions = new List <ExportHelper.ColumnOptions>
                {
                    new ExportHelper.ColumnOptions {
                        Column = "Transaction.Id", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "DeliveryNoteNumber", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "Description", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "DateIssued", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "Amount", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "Transaction.Supplier.Company", IsVisible = true
                    },
                };
            }
            var queryable   = Get_DeliveryNoteListNoDT_DatasourceQueryable(datasourceRequest);
            var totalRows   = DatasourceRetriever.ApplyDynamicFilterToQueryable(datasourceRequest, queryable).Count();
            var items       = DatasourceRetriever.Retrieve(datasourceRequest, queryable);;
            var dto         = items.Select(i => new DeliveryNoteDataSet_DeliveryNoteDTO(i));
            var formattings = new Dictionary <string, string>();

            formattings.Add("DateIssued", "dd/MM/yyyy");
            formattings.Add("Amount", "#,0.00;'-'#,0.00;'0'");
            var aggregators = RuntimePredicateBuilder.BuildAggregatorPredicates(aggregatorsInfo);

            foreach (var a in aggregators)
            {
                var formatting = formattings.ContainsKey(a.Column) ? formattings[a.Column] : null;
                a.Calculate(queryable, formatting);
            }
            var exportDataDTO = new List <ExportHelper.ExportRecordDTO>();

            foreach (var record in dto)
            {
                var recordDTO = new ExportHelper.ExportRecordDTO();
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = "Transaction.Id",
                    Value          = record?.Transaction?.Id,
                    ColumnDataType = "int",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("AdminDeliveryNoteList", "RES_LIST_DeliveryNoteListNoDT_COLUMN_Transaction.Id")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = nameof(record.DeliveryNoteNumber),
                    Value          = record?.DeliveryNoteNumber,
                    ColumnDataType = "string",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("AdminDeliveryNoteList", "RES_LIST_DeliveryNoteListNoDT_COLUMN_DeliveryNoteNumber")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = nameof(record.Description),
                    Value          = record?.Description,
                    ColumnDataType = "string",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("AdminDeliveryNoteList", "RES_LIST_DeliveryNoteListNoDT_COLUMN_Description")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = nameof(record.DateIssued),
                    Value          = record?.DateIssued,
                    ColumnDataType = "DateTime",
                    Format         = "dd/MM/yyyy",
                    ExcelFormat    = @"dd/MM/yyyy",
                    Caption        = BaseViewPage <object> .GetResourceValue("AdminDeliveryNoteList", "RES_LIST_DeliveryNoteListNoDT_COLUMN_DateIssued")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = nameof(record.Amount),
                    Value          = record?.Amount,
                    ColumnDataType = "decimal",
                    Format         = "#,0.00;'-'#,0.00;'0'",
                    ExcelFormat    = @"#,##0.00;-#,##0.00;#,##0.00",
                    Caption        = BaseViewPage <object> .GetResourceValue("AdminDeliveryNoteList", "RES_LIST_DeliveryNoteListNoDT_COLUMN_Amount")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = "Transaction.Supplier.Company",
                    Value          = record?.Transaction?.Supplier?.Company,
                    ColumnDataType = "string",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("AdminDeliveryNoteList", "RES_LIST_DeliveryNoteListNoDT_COLUMN_Transaction.Supplier.Company")
                });
                exportDataDTO.Add(recordDTO);
            }
            if (aggregators.Count > 0)
            {
                foreach (AggregatorType aggregatorType in Enum.GetValues(typeof(AggregatorType)))
                {
                    var emptyAggregatorRow = true;
                    var recordDTO          = new ExportHelper.ExportRecordDTO();
                    foreach (var columnOption in exportOptions.ColumnOptions)
                    {
                        var aggregatorValue = "";
                        switch (aggregatorType)
                        {
                        case AggregatorType.COUNT:
                            if (columnOption.CountIsVisible)
                            {
                                var averageAggregator = aggregators.SingleOrDefault(agg => agg.Column == columnOption.Column && agg.Type == AggregatorType.COUNT);
                                aggregatorValue    = $"{BaseViewPage<object>.GetResourceValue("GlobalResources", "RES_DATALIST_AGGREGATORS_GrandCount")} {averageAggregator?.ValueFormatted}";
                                emptyAggregatorRow = false;
                            }
                            break;

                        case AggregatorType.SUM:
                            if (columnOption.SumIsVisible)
                            {
                                var averageAggregator = aggregators.SingleOrDefault(agg => agg.Column == columnOption.Column && agg.Type == AggregatorType.SUM);
                                aggregatorValue    = $"{BaseViewPage<object>.GetResourceValue("GlobalResources", "RES_DATALIST_AGGREGATORS_GrandTotal")} {averageAggregator?.ValueFormatted}";
                                emptyAggregatorRow = false;
                            }
                            break;

                        case AggregatorType.AVERAGE:
                            if (columnOption.AverageIsVisible)
                            {
                                var averageAggregator = aggregators.SingleOrDefault(agg => agg.Column == columnOption.Column && agg.Type == AggregatorType.AVERAGE);
                                aggregatorValue   += $"{BaseViewPage<object>.GetResourceValue("GlobalResources", "RES_DATALIST_AGGREGATORS_GrandAverage")} {averageAggregator?.ValueFormatted}";
                                emptyAggregatorRow = false;
                            }
                            break;
                        }
                        recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                        {
                            ColumnName     = columnOption.Column,
                            Value          = aggregatorValue,
                            ColumnDataType = "string",
                            Format         = ""
                        });
                    }
                    if (!emptyAggregatorRow)
                    {
                        exportDataDTO.Add(recordDTO);
                    }
                }
            }
            var path     = ExportHelper.ExportList(exportDataDTO, exportOptions, totalRows);
            var content  = System.IO.File.ReadAllBytes(Path.Combine(Path.GetTempPath(), path));
            var fileName = Path.GetFileName(path);

            return(FileHelper.PendingDownloadInstance.Add("AdminDeliveryNoteList", content, fileName));
        }
コード例 #4
0
        public string OrderProposalList_ExportImplementation(DatasourceRequest datasourceRequest, ExportHelper.ExportOptions exportOptions, List <AggregatorInfo <DSS1_RetailerDriverStockOptimisation.BO.OrderForecastDetails> > aggregatorsInfo)
        {
            if (exportOptions.Range == ExportHelper.Range.TOP100)
            {
                datasourceRequest.StartRow = 0;
                datasourceRequest.PageSize = 100;
            }
            else if (exportOptions.Range == ExportHelper.Range.ALL)
            {
                datasourceRequest.StartRow = 0;
                datasourceRequest.PageSize = int.MaxValue;
            }
            if (string.IsNullOrWhiteSpace(exportOptions.Filename))
            {
                exportOptions.Filename = "OrderProposalList";
            }
            if (exportOptions.ColumnOptions == null)
            {
                exportOptions.ColumnOptions = new List <ExportHelper.ColumnOptions>
                {
                    new ExportHelper.ColumnOptions {
                        Column = "Item.SKU", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "Item.Description", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "Warehouse.Description", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "Quantity", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "RecommendedOrderDate", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "SalesForecastDate", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "SupplierCanDeliver", IsVisible = true
                    },
                    new ExportHelper.ColumnOptions {
                        Column = "SupplierMaxQuantity", IsVisible = true
                    },
                };
            }
            var queryable   = Get_OrderProposalList_DatasourceQueryable(datasourceRequest);
            var totalRows   = DatasourceRetriever.ApplyDynamicFilterToQueryable(datasourceRequest, queryable).Count();
            var items       = DatasourceRetriever.Retrieve(datasourceRequest, queryable);;
            var dto         = items.Select(i => new OrderProposalDataSet_OrderForecastDetailsDTO(i));
            var formattings = new Dictionary <string, string>();

            formattings.Add("RecommendedOrderDate", "dd/MM/yyyy");
            formattings.Add("SalesForecastDate", "dd/MM/yyyy");
            var aggregators = RuntimePredicateBuilder.BuildAggregatorPredicates(aggregatorsInfo);

            foreach (var a in aggregators)
            {
                var formatting = formattings.ContainsKey(a.Column) ? formattings[a.Column] : null;
                a.Calculate(queryable, formatting);
            }
            var exportDataDTO = new List <ExportHelper.ExportRecordDTO>();

            foreach (var record in dto)
            {
                var recordDTO = new ExportHelper.ExportRecordDTO();
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = "Item.SKU",
                    Value          = record?.Item?.SKU,
                    ColumnDataType = "string",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("SupplierOrderForecast", "RES_LIST_OrderProposalList_COLUMN_Item.SKU")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = "Item.Description",
                    Value          = record?.Item?.Description,
                    ColumnDataType = "string",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("SupplierOrderForecast", "RES_LIST_OrderProposalList_COLUMN_Item.Description")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = "Warehouse.Description",
                    Value          = record?.Warehouse?.Description,
                    ColumnDataType = "string",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("SupplierOrderForecast", "RES_LIST_OrderProposalList_COLUMN_Warehouse.Description")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = nameof(record.Quantity),
                    Value          = record?.Quantity,
                    ColumnDataType = "decimal",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("SupplierOrderForecast", "RES_LIST_OrderProposalList_COLUMN_Quantity")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = nameof(record.RecommendedOrderDate),
                    Value          = record?.RecommendedOrderDate,
                    ColumnDataType = "DateTime",
                    Format         = "dd/MM/yyyy",
                    ExcelFormat    = @"dd/MM/yyyy",
                    Caption        = BaseViewPage <object> .GetResourceValue("SupplierOrderForecast", "RES_LIST_OrderProposalList_COLUMN_RecommendedOrderDate")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = nameof(record.SalesForecastDate),
                    Value          = record?.SalesForecastDate,
                    ColumnDataType = "DateTime",
                    Format         = "dd/MM/yyyy",
                    ExcelFormat    = @"dd/MM/yyyy",
                    Caption        = BaseViewPage <object> .GetResourceValue("SupplierOrderForecast", "RES_LIST_OrderProposalList_COLUMN_SalesForecastDate")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = nameof(record.SupplierCanDeliver),
                    Value          = record?.SupplierCanDeliver,
                    ColumnDataType = "bool",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("SupplierOrderForecast", "RES_LIST_OrderProposalList_COLUMN_SupplierCanDeliver")
                });
                recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                {
                    ColumnName     = nameof(record.SupplierMaxQuantity),
                    Value          = record?.SupplierMaxQuantity,
                    ColumnDataType = "decimal",
                    Format         = "",
                    ExcelFormat    = @"",
                    Caption        = BaseViewPage <object> .GetResourceValue("SupplierOrderForecast", "RES_LIST_OrderProposalList_COLUMN_SupplierMaxQuantity")
                });
                exportDataDTO.Add(recordDTO);
            }
            if (aggregators.Count > 0)
            {
                foreach (AggregatorType aggregatorType in Enum.GetValues(typeof(AggregatorType)))
                {
                    var emptyAggregatorRow = true;
                    var recordDTO          = new ExportHelper.ExportRecordDTO();
                    foreach (var columnOption in exportOptions.ColumnOptions)
                    {
                        var aggregatorValue = "";
                        switch (aggregatorType)
                        {
                        case AggregatorType.COUNT:
                            if (columnOption.CountIsVisible)
                            {
                                var averageAggregator = aggregators.SingleOrDefault(agg => agg.Column == columnOption.Column && agg.Type == AggregatorType.COUNT);
                                aggregatorValue    = $"{BaseViewPage<object>.GetResourceValue("GlobalResources", "RES_DATALIST_AGGREGATORS_GrandCount")} {averageAggregator?.ValueFormatted}";
                                emptyAggregatorRow = false;
                            }
                            break;

                        case AggregatorType.SUM:
                            if (columnOption.SumIsVisible)
                            {
                                var averageAggregator = aggregators.SingleOrDefault(agg => agg.Column == columnOption.Column && agg.Type == AggregatorType.SUM);
                                aggregatorValue    = $"{BaseViewPage<object>.GetResourceValue("GlobalResources", "RES_DATALIST_AGGREGATORS_GrandTotal")} {averageAggregator?.ValueFormatted}";
                                emptyAggregatorRow = false;
                            }
                            break;

                        case AggregatorType.AVERAGE:
                            if (columnOption.AverageIsVisible)
                            {
                                var averageAggregator = aggregators.SingleOrDefault(agg => agg.Column == columnOption.Column && agg.Type == AggregatorType.AVERAGE);
                                aggregatorValue   += $"{BaseViewPage<object>.GetResourceValue("GlobalResources", "RES_DATALIST_AGGREGATORS_GrandAverage")} {averageAggregator?.ValueFormatted}";
                                emptyAggregatorRow = false;
                            }
                            break;
                        }
                        recordDTO.Columns.Add(new ExportHelper.ExportColumnDTO
                        {
                            ColumnName     = columnOption.Column,
                            Value          = aggregatorValue,
                            ColumnDataType = "string",
                            Format         = ""
                        });
                    }
                    if (!emptyAggregatorRow)
                    {
                        exportDataDTO.Add(recordDTO);
                    }
                }
            }
            var path     = ExportHelper.ExportList(exportDataDTO, exportOptions, totalRows);
            var content  = System.IO.File.ReadAllBytes(Path.Combine(Path.GetTempPath(), path));
            var fileName = Path.GetFileName(path);

            return(FileHelper.PendingDownloadInstance.Add("SupplierOrderForecast", content, fileName));
        }