Exemple #1
0
        public ReportResult GetReportResult(BaseItem[] items, ReportViewType reportRowType, BaseReportRequest request)
        {
            List <HeaderMetadata> headersMetadata = this.GetFilteredReportHeaderMetadata(reportRowType, request);

            var headers = GetReportHeaders(reportRowType, headersMetadata);
            var rows    = GetReportRows(items, headersMetadata);

            ReportResult result = new ReportResult {
                Headers = headers
            };
            HeaderMetadata groupBy = ReportHelper.GetHeaderMetadataType(request.GroupBy);
            int            i       = headers.FindIndex(x => x.FieldName == groupBy);

            if (groupBy != HeaderMetadata.None && i > 0)
            {
                var rowsGroup = rows.SelectMany(x => x.Columns[i].Name.Split(';'), (x, g) => new { Genre = g.Trim(), Rows = x })
                                .GroupBy(x => x.Genre)
                                .OrderBy(x => x.Key)
                                .Select(x => new ReportGroup {
                    Name = x.Key, Rows = x.Select(r => r.Rows).ToList()
                });

                result.Groups    = rowsGroup.ToList();
                result.IsGrouped = true;
            }
            else
            {
                result.Rows      = rows;
                result.IsGrouped = false;
            }

            return(result);
        }
Exemple #2
0
 public List <HeaderMetadata> GetFilteredReportHeaderMetadata(ReportViewType reportRowType, BaseReportRequest request)
 {
     if (request != null && !string.IsNullOrEmpty(request.ReportColumns))
     {
         var s = request.ReportColumns.Split('|').Select(x => ReportHelper.GetHeaderMetadataType(x)).Where(x => x != HeaderMetadata.None);
         return(s.ToList());
     }
     else
     {
         return(this.GetDefaultReportHeaderMetadata(reportRowType));
     }
 }
 /// <summary> Gets filtered report header metadata. </summary>
 /// <param name="reportColumns"> The report columns. </param>
 /// <param name="defaultReturnValue"> The default return value. </param>
 /// <returns> The filtered report header metadata. </returns>
 public static List <HeaderMetadata> GetFilteredReportHeaderMetadata(string reportColumns, Func <List <HeaderMetadata> > defaultReturnValue = null)
 {
     if (!string.IsNullOrEmpty(reportColumns))
     {
         var s = reportColumns.Split('|').Select(x => ReportHelper.GetHeaderMetadataType(x)).Where(x => x != HeaderMetadata.None);
         return(s.ToList());
     }
     else
     if (defaultReturnValue != null)
     {
         return(defaultReturnValue());
     }
     else
     {
         return(new List <HeaderMetadata>());
     }
 }
Exemple #4
0
        /// <summary> Gets report result. </summary>
        /// <param name="items"> The items. </param>
        /// <param name="request"> The request. </param>
        /// <returns> The report result. </returns>
        public ReportResult GetResult(BaseItem[] items, IReportsQuery request)
        {
            ReportIncludeItemTypes reportRowType = ReportHelper.GetRowType(request.IncludeItemTypes);
            ReportDisplayType      displayType   = ReportHelper.GetReportDisplayType(request.DisplayType);

            List <ReportOptions <BaseItem> > options = this.GetReportOptions <BaseItem>(request,
                                                                                        () => this.GetDefaultHeaderMetadata(reportRowType),
                                                                                        (hm) => this.GetOption(hm)).Where(x => this.DisplayTypeVisible(x.Header.DisplayType, displayType)).ToList();

            var headers = GetHeaders <BaseItem>(options);
            var rows    = GetReportRows(items, options);

            ReportResult result = new ReportResult {
                Headers = headers
            };
            HeaderMetadata groupBy = ReportHelper.GetHeaderMetadataType(request.GroupBy);
            int            i       = headers.FindIndex(x => x.FieldName == groupBy);

            if (groupBy != HeaderMetadata.None && i >= 0)
            {
                var rowsGroup = rows.SelectMany(x => x.Columns[i].Name.Split(';'), (x, g) => new { Group = g.Trim(), Rows = x })
                                .GroupBy(x => x.Group)
                                .OrderBy(x => x.Key)
                                .Select(x => new ReportGroup {
                    Name = x.Key, Rows = x.Select(r => r.Rows).ToList()
                });

                result.Groups    = rowsGroup.ToList();
                result.IsGrouped = true;
            }
            else
            {
                result.Rows      = rows;
                result.IsGrouped = false;
            }

            return(result);
        }