예제 #1
0
        public string BuildReport(ReportViewType viewType, int templateID)
        {
            //prepare filter
            if (templateID != 0 && !Filter.FromDate.Equals(DateTime.MinValue))
            {
                var interval = Filter.ToDate.DayOfYear - Filter.FromDate.DayOfYear;

                switch (ExtendedReportType.GetReportType())
                {
                case ReportType.TasksByUsers:
                case ReportType.TasksByProjects:
                {
                    Filter.FromDate = TenantUtil.DateTimeNow().Date.AddDays(-interval);
                    Filter.ToDate   = TenantUtil.DateTimeNow().Date;
                }
                break;

                case ReportType.MilestonesNearest:
                {
                    Filter.FromDate = TenantUtil.DateTimeNow().Date;
                    Filter.ToDate   = TenantUtil.DateTimeNow().Date.AddDays(interval);
                }
                break;
                }
            }

            //exec

            var data = ExtendedReportType.BuildReport(Filter).ToList();

            return(!data.Any()
                       ? CreateNewReport(ReportType.EmptyReport, Filter).Transform(new List <object[]>(), viewType, templateID)
                       : this.Transform(data.ToList(), viewType, templateID));
        }
예제 #2
0
        private static XsltArgumentList GetXslParameters(ReportType reportType, ReportViewType view)
        {
            var parameters = new XsltArgumentList();

            if (view == ReportViewType.EMail)
            {
                parameters.AddParam("p0", string.Empty, CommonLinkUtility.GetFullAbsolutePath("~/products/projects/templates.aspx"));
                parameters.AddParam("p1", string.Empty, ReportResource.ChangeSettings);
            }
            else if (view == ReportViewType.Csv)
            {
                var csvColumns = ReportHelper.GetCsvColumnsName(reportType);
                for (int i = 0; i < csvColumns.Length; i++)
                {
                    parameters.AddParam("p" + i, string.Empty, csvColumns[i]);
                }
            }
            else
            {
                var columns = ReportHelper.GetReportInfo(reportType).Columns;
                for (int i = 0; i < columns.Length; i++)
                {
                    parameters.AddParam("p" + i, string.Empty, columns[i]);
                }
            }
            return(parameters);
        }
예제 #3
0
        private static string ToString(object value, ReportViewType view)
        {
            if (value == null)
            {
                return(null);
            }
            if (value is Enum)
            {
                return(((Enum)value).ToString("d"));
            }
            if (value is DateTime)
            {
                return(((DateTime)value).ToString("o"));
            }
            if (value is float)
            {
                return(((float)value).ToString(CultureInfo.InvariantCulture));
            }

            value = value.ToString()
                    .Replace("&", "&amp;")
                    .Replace("<", "&lt;")
                    .Replace(">", "&gt;")
                    .Replace("\"", "&quot;");
            if (view == ReportViewType.Csv && (value as string).Contains(","))
            {
                value = string.Format("&quot;{0}&quot;", value);
            }

            return(value.ToString());
        }
예제 #4
0
        /// <summary> Gets the given request. </summary>
        /// <param name="request"> The request. </param>
        /// <returns> A Task&lt;object&gt; </returns>
        public async Task <object> Get(GetReportHeaders request)
        {
            if (string.IsNullOrEmpty(request.IncludeItemTypes))
            {
                return(null);
            }

            request.DisplayType = "Screen";
            ReportViewType reportViewType = ReportHelper.GetReportViewType(request.ReportView);

            List <ReportHeader> result = new List <ReportHeader>();

            switch (reportViewType)
            {
            case ReportViewType.ReportData:
                ReportBuilder dataBuilder = new ReportBuilder(_libraryManager);
                result = dataBuilder.GetHeaders(request);
                break;

            case ReportViewType.ReportActivities:
                ReportActivitiesBuilder activityBuilder = new ReportActivitiesBuilder(_libraryManager, _userManager);
                result = activityBuilder.GetHeaders(request);
                break;
            }

            return(ToOptimizedResult(result));
        }
예제 #5
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);
        }
예제 #6
0
        public static string BuildReport(ReportType reportType, TaskFilter filter, ReportViewType viewType, int templateID)
        {
            //prepare filter
            if (templateID != 0 && !filter.FromDate.Equals(DateTime.MinValue))
            {
                var interval = filter.ToDate.DayOfYear - filter.FromDate.DayOfYear;

                switch (reportType)
                {
                    case ReportType.TasksByUsers:
                    case ReportType.TasksByProjects:
                        {
                            filter.FromDate = TenantUtil.DateTimeNow().Date.AddDays(-interval);
                            filter.ToDate = TenantUtil.DateTimeNow().Date;
                        }
                        break;
                    case ReportType.MilestonesNearest:
                        {
                            filter.FromDate = TenantUtil.DateTimeNow().Date;
                            filter.ToDate = TenantUtil.DateTimeNow().Date.AddDays(interval);
                        }
                        break;
                }
            }

            //exec

            var report = Report.CreateNewReport(reportType, filter);
            var data = report.BuildReport().ToList();

            if (!data.Any())
                report = Report.CreateNewReport(ReportType.EmptyReport, filter);

            return ReportTransformer.Transform(data.ToList(), report, filter.ViewType, viewType, templateID);
        }
예제 #7
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;
		}
        public static string Transform(this Report report, IList<object[]> reportData, ReportViewType view, int templateID)
        {
            var xml = new StringBuilder();

            if (reportData.Count != 0)
            {
                xml = xml.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
                   .Append("<reportResult>");
                foreach (var row in reportData)
                {
                    xml.Append("<r ");
                    for (var i = 0; i < row.Length; i++)
                    {
                        xml.AppendFormat("c{0}=\"{1}\" ", i, ToString(row[i], view));
                    }
                    xml.Append("/>");
                }
                xml.Append("</reportResult>");
            }
            else
            {
                xml = xml.Append(string.Format("<div class='noContentBlock'>{0}</div>", ProjectsCommonResource.NoData));
            }

            return report.Transform(xml.ToString(), view, templateID);
        }
예제 #9
0
        public static string Transform(this Report report, string xml, ReportViewType view, int templateID)
        {
            if (view == ReportViewType.Xml)
            {
                return(Encoding.UTF8.GetString(Encoding.Convert(Encoding.Unicode, Encoding.UTF8, Encoding.Unicode.GetBytes(xml))));
            }
            if (view == ReportViewType.EMail)
            {
                xml = report.Transform(xml, ReportViewType.Html, templateID);
            }

            var xslt = report.GetXslTransform(view);

            if (xslt == null)
            {
                throw new InvalidOperationException("Xslt not found for type " + report.ReportType + " and view " + view);
            }

            using (var reader = XmlReader.Create(new StringReader(xml)))
                using (var writer = new StringWriter())
                    using (XmlWriter.Create(writer, new XmlWriterSettings {
                        Encoding = Encoding.UTF8
                    }))
                    {
                        xslt.Transform(reader, GetXslParameters(report, view, templateID), writer);
                        return(writer.ToString());
                    }
        }
예제 #10
0
        private static XslCompiledTransform GetXslTransform(this Report report, ReportViewType viewType)
        {
            var viewTypeStr = viewType.ToString().ToLower();

            return(GetXslTransform(string.Format("{0}_{1}.{2}.xsl", report.ReportType, report.Filter.ViewType, viewTypeStr)) ??
                   GetXslTransform(string.Format("{0}.{1}.xsl", report.ReportType, viewTypeStr)) ??
                   GetXslTransform(string.Format("{0}.xsl", viewTypeStr)));
        }
예제 #11
0
        /// <summary> Gets report statistic. </summary>
        /// <param name="request"> The request. </param>
        /// <returns> The report statistic. </returns>
        private async Task <ReportStatResult> GetReportStatistic(GetReportStatistics request)
        {
            ReportViewType         reportRowType = ReportHelper.GetRowType(request.IncludeItemTypes);
            QueryResult <BaseItem> queryResult   = await GetQueryResult(request).ConfigureAwait(false);

            ReportStatBuilder reportBuilder = new ReportStatBuilder(_libraryManager);
            ReportStatResult  reportResult  = reportBuilder.GetReportStatResult(queryResult.Items, ReportHelper.GetRowType(request.IncludeItemTypes), request.TopItems ?? 5);

            reportResult.TotalRecordCount = reportResult.Groups.Count();
            return(reportResult);
        }
예제 #12
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));
     }
 }
예제 #13
0
        /// <summary> Gets the given request. </summary>
        /// <param name="request"> The request. </param>
        /// <returns> A Task&lt;object&gt; </returns>
        public async Task <object> Get(GetReportDownload request)
        {
            if (string.IsNullOrEmpty(request.IncludeItemTypes))
            {
                return(null);
            }

            var    headers       = new Dictionary <string, string>();
            string fileExtension = "csv";
            string contentType   = "text/plain;charset='utf-8'";

            switch (request.ExportType)
            {
            case ReportExportType.CSV:
                break;

            case ReportExportType.Excel:
                contentType   = "application/vnd.ms-excel";
                fileExtension = "xls";
                break;
            }

            var filename = "ReportExport." + fileExtension;

            headers["Content-Disposition"] = string.Format("attachment; filename=\"{0}\"", filename);
            headers["Content-Encoding"]    = "UTF-8";

            ReportViewType         reportRowType = ReportHelper.GetRowType(request.IncludeItemTypes);
            ReportBuilder          reportBuilder = new ReportBuilder(_libraryManager);
            QueryResult <BaseItem> queryResult   = await GetQueryResult(request).ConfigureAwait(false);

            ReportResult reportResult = reportBuilder.GetReportResult(queryResult.Items, reportRowType, request);

            reportResult.TotalRecordCount = queryResult.TotalRecordCount;

            string result = string.Empty;

            switch (request.ExportType)
            {
            case ReportExportType.CSV:
                result = new ReportExport().ExportToCsv(reportResult);
                break;

            case ReportExportType.Excel:
                result = new ReportExport().ExportToExcel(reportResult);
                break;
            }

            object ro = ResultFactory.GetResult(result, contentType, headers);

            return(ro);
        }
예제 #14
0
        /// <summary> Gets the given request. </summary>
        /// <param name="request"> The request. </param>
        /// <returns> A Task&lt;object&gt; </returns>
        public async Task <object> Get(GetReportHeaders request)
        {
            if (string.IsNullOrEmpty(request.IncludeItemTypes))
            {
                return(null);
            }

            ReportViewType reportRowType = ReportHelper.GetRowType(request.IncludeItemTypes);
            ReportBuilder  reportBuilder = new ReportBuilder(_libraryManager);
            var            reportResult  = reportBuilder.GetReportHeaders(reportRowType, request);

            return(ToOptimizedResult(reportResult));
        }
예제 #15
0
        private void OutputData(string result, string reportName, Report report, ReportViewType outputFormat)
        {
            switch (outputFormat)
            {
            case ReportViewType.Html:
                reportResult.Text = result;

                var sb = new StringBuilder();
                sb.Append("<div class='report-name'>");
                sb.Append(reportName);
                sb.Append("<span class='generation-date'> (");
                sb.Append(TenantUtil.DateTimeNow().ToString(DateTimeExtension.ShortDatePattern));
                sb.Append(")</span>");
                sb.Append("</div>");
                reportFilter.Text = sb.ToString();
                break;

            case ReportViewType.Xml:
            case ReportViewType.EMail:
                if (result != null)
                {
                    var ext = outputFormat.ToString().ToLower();
                    Response.Clear();
                    Response.ContentType     = "text/" + ext + "; charset=utf-8";
                    Response.ContentEncoding = Encoding.UTF8;
                    Response.Charset         = Encoding.UTF8.WebName;
                    Response.AppendHeader("Content-Disposition", string.Format("attachment; filename={0}.{1}", report.FileName, ext));
                    Response.Write(result);
                    Response.End();
                }
                break;

            case ReportViewType.Csv:
                string fileURL;

                using (var memStream = new MemoryStream(Encoding.UTF8.GetBytes(result)))
                {
                    var file = FileUploader.Exec(Files.Classes.Global.FolderMy.ToString(), report.FileName + ".csv", result.Length, memStream, true);

                    fileURL  = CommonLinkUtility.GetFileWebEditorUrl((int)file.ID);
                    fileURL += string.Format("&options={{\"delimiter\":{0},\"codePage\":{1}}}",
                                             (int)Global.ReportCsvDelimiter.Key,
                                             Encoding.UTF8.CodePage);
                }

                Response.Redirect(fileURL);

                break;
            }
        }
예제 #16
0
        public String Transform(XDocument reportData, ReportType reportType, ReportViewType reportView)
        {
            var xsltTransformResult = new XDocument();

            using (var writer = xsltTransformResult.CreateWriter())
            {
                var xslt = new XslCompiledTransform();

                xslt.Load(XmlReader.Create(new StringReader(GetXSLTMarking(reportType, reportView))), null, new ReportXmlUrlResolver());

                xslt.Transform(reportData.CreateReader(), GetXsltArgumentList(reportType, reportView), writer);
            }

            return(xsltTransformResult.ToString());
        }
예제 #17
0
        private static XsltArgumentList GetXslParameters(Report report, ReportViewType view, int templateID)
        {
            var    parameters = new XsltArgumentList();
            var    columns    = report.GetColumns(view, templateID);
            string logo       = string.IsNullOrEmpty(SetupInfo.MainLogoMailTmplURL) ? "http://cdn.teamlab.com/media/newsletters/images/00.jpg" : SetupInfo.MainLogoMailTmplURL;

            for (var i = 0; i < columns.Count; i++)
            {
                parameters.AddParam("p" + i, string.Empty, columns[i]);
            }

            parameters.AddParam("p" + columns.Count, string.Empty, Global.ReportCsvDelimiter.Value);
            parameters.AddParam("logo", string.Empty, logo);

            return(parameters);
        }
        private static XsltArgumentList GetXslParameters(this Report report, ReportViewType view, int templateID)
        {
            var parameters = new XsltArgumentList();
            var columns    = report.GetColumns(view, templateID);
            var logo       = string.IsNullOrEmpty(SetupInfo.MainLogoMailTmplURL) ? CommonLinkUtility.GetFullAbsolutePath(TenantLogoManager.GetLogoLight(true)) : SetupInfo.MainLogoMailTmplURL;

            for (var i = 0; i < columns.Count; i++)
            {
                parameters.AddParam("p" + i, string.Empty, columns[i]);
            }

            parameters.AddParam("p" + columns.Count, string.Empty, Global.ReportCsvDelimiter.Value);
            parameters.AddParam("logo", string.Empty, logo);

            return(parameters);
        }
예제 #19
0
        public static string Transform(IList<object[]> report, ReportType type, int subType, ReportViewType view)
        {
            var xml = new StringBuilder()
                .Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
                .Append("<reportResult>");
            foreach (var row in report)
            {
                xml.Append("<r ");
                for (int i = 0; i < row.Length; i++)
                {
                    xml.AppendFormat("c{0}=\"{1}\" ", i, ToString(row[i]));
                }
                xml.Append("/>");
            }
            xml.Append("</reportResult>");

            return Transform(xml.ToString(), type, subType, view);
        }
예제 #20
0
        public List <ReportHeader> GetReportHeaders(ReportViewType reportRowType, BaseReportRequest request)
        {
            List <ReportHeader> headersMetadata = this.GetReportHeaders(reportRowType);

            if (request != null && !string.IsNullOrEmpty(request.ReportColumns))
            {
                List <HeaderMetadata> headersMetadataFiltered = this.GetFilteredReportHeaderMetadata(reportRowType, request);
                foreach (ReportHeader reportHeader in headersMetadata)
                {
                    if (!headersMetadataFiltered.Contains(reportHeader.FieldName))
                    {
                        reportHeader.Visible = false;
                    }
                }
            }

            return(headersMetadata);
        }
예제 #21
0
		public List<ReportHeader> GetReportHeaders(ReportViewType reportRowType, BaseReportRequest request)
		{
			List<ReportHeader> headersMetadata = this.GetReportHeaders(reportRowType);
			if (request != null && !string.IsNullOrEmpty(request.ReportColumns))
			{
				List<HeaderMetadata> headersMetadataFiltered = this.GetFilteredReportHeaderMetadata(reportRowType, request);
				foreach (ReportHeader reportHeader in headersMetadata)
				{
					if (!headersMetadataFiltered.Contains(reportHeader.FieldName))
					{
						reportHeader.Visible = false;
					}
				}


			}

			return headersMetadata;
		}
예제 #22
0
		public List<ReportHeader> GetReportHeaders(ReportViewType reportRowType, List<HeaderMetadata> headersMetadata = null)
		{
			if (headersMetadata == null)
				headersMetadata = this.GetDefaultReportHeaderMetadata(reportRowType);

			List<ReportOptions<BaseItem>> options = new List<ReportOptions<BaseItem>>();
			foreach (HeaderMetadata header in headersMetadata)
			{
				options.Add(GetReportOption(header));
			}


			List<ReportHeader> headers = new List<ReportHeader>();
			foreach (ReportOptions<BaseItem> option in options)
			{
				headers.Add(option.Header);
			}
			return headers;
		}
예제 #23
0
        private XsltArgumentList GetXsltArgumentList(ReportType reportType, ReportViewType reportView)
        {
            var xsltArgumentList = new XsltArgumentList();

            switch (reportView)
            {
            case ReportViewType.Html:
                xsltArgumentList.AddParam("decimalFormat", "", "### ###.00");
                xsltArgumentList.AddParam("csvExportUrl", "", String.Format("reports.aspx?reportType={0}&View={1}",
                                                                            reportType.ToString(),
                                                                            "csv").ToLower());

                break;

            default:
                break;
            }

            return(xsltArgumentList);
        }
예제 #24
0
        /// <summary> Gets report stat result. </summary>
        /// <param name="items"> The items. </param>
        /// <param name="reportRowType"> Type of the report row. </param>
        /// <param name="topItem"> The top item. </param>
        /// <returns> The report stat result. </returns>
        public ReportStatResult GetReportStatResult(BaseItem[] items, ReportViewType reportRowType, int topItem = 5)
        {
            ReportStatResult result = new ReportStatResult();

            result = this.GetResultGenres(result, items, topItem);
            result = this.GetResultStudios(result, items, topItem);
            result = this.GetResultPersons(result, items, topItem);
            result = this.GetResultProductionYears(result, items, topItem);
            result = this.GetResulProductionLocations(result, items, topItem);
            result = this.GetResultCommunityRatings(result, items, topItem);
            result = this.GetResultParentalRatings(result, items, topItem);

            switch (reportRowType)
            {
            case ReportViewType.Season:
            case ReportViewType.Series:
            case ReportViewType.MusicAlbum:
            case ReportViewType.MusicArtist:
            case ReportViewType.Game:
                break;

            case ReportViewType.Movie:
            case ReportViewType.BoxSet:

                break;

            case ReportViewType.Book:
            case ReportViewType.Episode:
            case ReportViewType.Video:
            case ReportViewType.MusicVideo:
            case ReportViewType.Trailer:
            case ReportViewType.Audio:
            case ReportViewType.BaseItem:
            default:
                break;
            }

            result.Groups = result.Groups.OrderByDescending(n => n.Items.Count()).ToList();

            return(result);
        }
예제 #25
0
        public List <string> GetColumns(ReportViewType viewType, int templateID)
        {
            var parameters = new List <string>();

            if (viewType == ReportViewType.EMail)
            {
                parameters.Add(CommonLinkUtility.GetFullAbsolutePath(string.Format("~/products/projects/reports.aspx?reportType={0}&tmplId={1}", ReportType, templateID)));
                parameters.Add(ReportResource.ChangeSettings);
            }
            else
            {
                parameters = viewType == ReportViewType.Csv ? ExtendedReportType.GetCsvColumnsName().ToList() : ReportInfo.Columns.ToList();

                if (ReportType == ReportType.TimeSpend)
                {
                    parameters.Add(Filter.PaymentStatuses.Count != 0 ? ((int)Filter.PaymentStatuses[0]).ToString(CultureInfo.InvariantCulture) : "-1");
                }
            }

            return(parameters);
        }
예제 #26
0
        private String GetXSLTMarking(ReportType reportType, ReportViewType reportView)
        {
            var folderPath = HttpContext.Current.Server.MapPath(@"~\products\crm\reports\");

            var filePath = String.Empty;

            switch (reportType)
            {
                case ReportType.SalesByStage:
                    filePath = String.Format("{0}/{1}.{2}.xsl", folderPath, reportType.ToString().ToLower(),
                                         reportView.ToString());
                    break;
                default:
                    filePath = String.Format("{0}/{1}.{2}.xsl", folderPath, "sales",
                                             reportView.ToString());
                    break;
            }


            return File.ReadAllText(filePath);
        }
        public static string Transform(this Report report, string xml, ReportViewType view, int templateID)
        {
            if (view == ReportViewType.Xml)
            {
                return Encoding.UTF8.GetString(Encoding.Convert(Encoding.Unicode, Encoding.UTF8, Encoding.Unicode.GetBytes(xml)));
            }
            if (view == ReportViewType.EMail)
            {
                xml = report.Transform(xml, ReportViewType.Html, templateID);
            }

            var xslt = report.GetXslTransform(view);
            if (xslt == null) throw new InvalidOperationException("Xslt not found for type " + report.ReportType + " and view " + view);

            using (var reader = XmlReader.Create(new StringReader(xml)))
            using (var writer = new StringWriter())
            using (XmlWriter.Create(writer, new XmlWriterSettings { Encoding = Encoding.UTF8 }))
            {
                xslt.Transform(reader, GetXslParameters(report, view, templateID), writer);
                return writer.ToString();
            }
        }
예제 #28
0
		/// <summary> Gets report stat result. </summary>
		/// <param name="items"> The items. </param>
		/// <param name="reportRowType"> Type of the report row. </param>
		/// <param name="topItem"> The top item. </param>
		/// <returns> The report stat result. </returns>
		public ReportStatResult GetReportStatResult(BaseItem[] items, ReportViewType reportRowType, int topItem = 5)
		{
			ReportStatResult result = new ReportStatResult();
			result = this.GetResultGenres(result, items, topItem);
			result = this.GetResultStudios(result, items, topItem);
			result = this.GetResultPersons(result, items, topItem);
			result = this.GetResultProductionYears(result, items, topItem);
			result = this.GetResulProductionLocations(result, items, topItem);
			result = this.GetResultCommunityRatings(result, items, topItem);
			result = this.GetResultParentalRatings(result, items, topItem);

			switch (reportRowType)
			{
				case ReportViewType.Season:
				case ReportViewType.Series:
				case ReportViewType.MusicAlbum:
				case ReportViewType.MusicArtist:
				case ReportViewType.Game:
					break;
				case ReportViewType.Movie:
				case ReportViewType.BoxSet:

					break;
				case ReportViewType.Book:
				case ReportViewType.Episode:
				case ReportViewType.Video:
				case ReportViewType.MusicVideo:
				case ReportViewType.Trailer:
				case ReportViewType.Audio:
				case ReportViewType.BaseItem:
				default:
					break;
			}

			result.Groups = result.Groups.OrderByDescending(n => n.Items.Count()).ToList();

			return result;
		}
예제 #29
0
        public static string BuildReport(ReportType reportType, TaskFilter filter, ReportViewType viewType, int templateID)
        {
            //prepare filter
            if (templateID != 0 && !filter.FromDate.Equals(DateTime.MinValue))
            {
                var interval = filter.ToDate.DayOfYear - filter.FromDate.DayOfYear;

                switch (reportType)
                {
                case ReportType.TasksByUsers:
                case ReportType.TasksByProjects:
                {
                    filter.FromDate = TenantUtil.DateTimeNow().Date.AddDays(-interval);
                    filter.ToDate   = TenantUtil.DateTimeNow().Date;
                }
                break;

                case ReportType.MilestonesNearest:
                {
                    filter.FromDate = TenantUtil.DateTimeNow().Date;
                    filter.ToDate   = TenantUtil.DateTimeNow().Date.AddDays(interval);
                }
                break;
                }
            }

            //exec

            var report = Report.CreateNewReport(reportType, filter);
            var data   = report.BuildReport().ToList();

            if (!data.Any())
            {
                report = Report.CreateNewReport(ReportType.EmptyReport, filter);
            }

            return(ReportTransformer.Transform(data.ToList(), report, filter.ViewType, viewType, templateID));
        }
예제 #30
0
        public List <ReportHeader> GetReportHeaders(ReportViewType reportRowType, List <HeaderMetadata> headersMetadata = null)
        {
            if (headersMetadata == null)
            {
                headersMetadata = this.GetDefaultReportHeaderMetadata(reportRowType);
            }

            List <ReportOptions <BaseItem> > options = new List <ReportOptions <BaseItem> >();

            foreach (HeaderMetadata header in headersMetadata)
            {
                options.Add(GetReportOption(header));
            }


            List <ReportHeader> headers = new List <ReportHeader>();

            foreach (ReportOptions <BaseItem> option in options)
            {
                headers.Add(option.Header);
            }
            return(headers);
        }
예제 #31
0
        /// <summary> Gets the given request. </summary>
        /// <param name="request"> The request. </param>
        /// <returns> A Task&lt;object&gt; </returns>
        public object Get(GetReportDownload request)
        {
            if (string.IsNullOrEmpty(request.IncludeItemTypes))
            {
                return(null);
            }

            request.DisplayType = "Export";
            ReportViewType reportViewType = ReportHelper.GetReportViewType(request.ReportView);
            var            headers        = new Dictionary <string, string>();
            string         fileExtension  = "csv";
            string         contentType    = "text/plain;charset='utf-8'";

            switch (request.ExportType)
            {
            case ReportExportType.CSV:
                break;

            case ReportExportType.Excel:
                contentType   = "application/vnd.ms-excel";
                fileExtension = "xls";
                break;
            }

            var filename = "ReportExport." + fileExtension;

            headers["Content-Disposition"] = string.Format("attachment; filename=\"{0}\"", filename);
            headers["Content-Encoding"]    = "UTF-8";

            var          user   = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null;
            ReportResult result = null;

            switch (reportViewType)
            {
            case ReportViewType.ReportData:
                ReportIncludeItemTypes reportRowType = ReportHelper.GetRowType(request.IncludeItemTypes);
                ReportBuilder          dataBuilder   = new ReportBuilder(_libraryManager);
                QueryResult <BaseItem> queryResult   = GetQueryResult(request, user);
                result = dataBuilder.GetResult(queryResult.Items, request);
                result.TotalRecordCount = queryResult.TotalRecordCount;
                break;

            case ReportViewType.ReportActivities:
                result = GetReportActivities(request);
                break;
            }

            string returnResult = string.Empty;

            switch (request.ExportType)
            {
            case ReportExportType.CSV:
                returnResult = new ReportExport().ExportToCsv(result);
                break;

            case ReportExportType.Excel:
                returnResult = new ReportExport().ExportToExcel(result);
                break;
            }

            return(_resultFactory.GetResult(returnResult, contentType, headers));
        }
예제 #32
0
 private static XslCompiledTransform GetXslTransform(ReportType reportType, int subType, ReportViewType viewType)
 {
     var viewTypeStr = viewType.ToString().ToLower();
     return GetXslTransform(string.Format("{0}_{1}.{2}.xsl", reportType, subType, viewTypeStr)) ??
         GetXslTransform(string.Format("{0}.{1}.xsl", reportType, viewTypeStr)) ??
         GetXslTransform(string.Format("{0}.xsl", viewTypeStr));
 }
예제 #33
0
        private XsltArgumentList GetXsltArgumentList(ReportType reportType, ReportViewType reportView)
        {
            var xsltArgumentList = new XsltArgumentList();

            switch (reportView)
            {
                case ReportViewType.Html:
                    xsltArgumentList.AddParam("decimalFormat", "", "### ###.00");
                    xsltArgumentList.AddParam("csvExportUrl", "", String.Format("reports.aspx?reportType={0}&View={1}",
                        reportType.ToString(),
                        "csv").ToLower());

                    break;
                default:
                    break;
            }

            return xsltArgumentList;

        }
예제 #34
0
        private bool Run(string clientId, string queryId, string reportName, ref string filterStr, ReportViewType reportViewType, string exportFileName)
        {
            try {
                var fileName = string.Format("{0}.rpt", reportName);
                var filePath = GetRptPath(fileName);
                if (string.IsNullOrEmpty(clientId) || string.IsNullOrEmpty(queryId) || string.IsNullOrEmpty(filePath) || !IsRptExisted(filePath))
                {
                    return(false);
                }
                var run = MESReportRun.Instance;
                run.ReportClientId = clientId;

                /*	var queryReport = run.ReportQueryManager.Get (clientId, fileName);
                 * if (queryReport != null) {
                 * if (queryReport.QueryID == queryId) {
                 * if (queryReport.IsCompleted == 0) {
                 * if (queryReport.ReportRuntime != null) {
                 *  filterStr = queryReport.ReportRuntime.FilterStr;
                 * }
                 * return true;
                 * }
                 * return true;
                 * }
                 * }*/
                var key         = clientId + queryId;
                var queryReport = run.ReportQueryManager.Get(key);
                if (queryReport != null)
                {
                    if (queryReport.IsCompleted == 0)
                    {
                        if (queryReport.ReportRuntime != null)
                        {
                            filterStr = queryReport.ReportRuntime.FilterStr;
                        }
                        return(true);
                    }
                }

                return(run.RunReportServer(filePath, fileName, queryId, true, ref filterStr, reportViewType, true, exportFileName));
            } catch (Exception ex) {
                Message.Info(string.Format("message:{0},StackTrace:{1}", ex.Message, ex.StackTrace));
                return(false);
            }
        }
예제 #35
0
 private bool Run(string clientId, string queryId, string reportName, string filterStr, ReportViewType reportViewType)
 {
     try {
         var fileName = string.Format("{0}.rpt", reportName);
         var filePath = GetRptBySearchPath(fileName);
         if (string.IsNullOrEmpty(clientId) || string.IsNullOrEmpty(queryId) || string.IsNullOrEmpty(filePath) || !IsRptExisted(filePath))
         {
             return(false);
         }
         var run = MESReportRun.Instance;
         run.ReportClientId = clientId;
         //var queryReport = run.ReportQueryManager.Get (clientId, fileName);
         var queryReport = run.ReportQueryManager.Get(queryId);
         if (queryReport != null)
         {
             //if (queryReport.QueryID == queryId) {
             return(true);
             //}
         }
         return(run.RunReportServer(filePath, fileName, queryId, true, ref filterStr, reportViewType, false, Path.GetFileName(reportName)));
     } catch (Exception ex) {
         Message.Info(string.Format("message:{0},StackTrace:{1}", ex.Message, ex.StackTrace));
         return(false);
     }
 }
예제 #36
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);

		}
        private static XsltArgumentList GetXslParameters(this Report report, ReportViewType view, int templateID)
        {
            var parameters = new XsltArgumentList();
            var columns = report.GetColumns(view, templateID);
            var logo = string.IsNullOrEmpty(SetupInfo.MainLogoMailTmplURL) ? "http://cdn.teamlab.com/media/newsletters/images/00.jpg" : SetupInfo.MainLogoMailTmplURL;

            for (var i = 0; i < columns.Count; i++)
            {
                parameters.AddParam("p" + i, string.Empty, columns[i]);
            }

            parameters.AddParam("p" + columns.Count, string.Empty, Global.ReportCsvDelimiter.Value);
            parameters.AddParam("logo", string.Empty, logo);

            return parameters;
        }
예제 #38
0
        public static string BuildReport(ReportType reportType, ReportFilter filter, ReportViewType viewType)
        {
            //prepare filter
            if (reportType == ReportType.MilestonesExpired)
            {
                filter.ToDate = TenantUtil.DateTimeNow();
            }
            if (reportType == ReportType.TasksExpired)
            {
                filter.ToDate = TenantUtil.DateTimeNow();
                filter.TaskStatuses.Add(TaskStatus.Open);
            }

            //exec
            IList<object[]> result = null;

            if (reportType == ReportType.UsersActivity)
            {
                result = BuildUserActivityReport(filter);
            }
            else
            {
                result = Global.EngineFactory.GetReportEngine().BuildReport(reportType, filter);
                if (reportType == ReportType.TasksExpired)
                {
                    var tmp = new List<object[]>();
                    foreach (var row in result)
                        if (row[10] != null)//task has due date
                            tmp.Add(row);
                    result = tmp;
                }
            }

            if (result == null || result.Count == 0)
            {
                return null;
            }

            //add user info
            switch (reportType)
            {
                case ReportType.UsersWithoutActiveTasks:
                case ReportType.UsersWorkload:
                case ReportType.TimeSpend:
                case ReportType.UsersActivity:
                    result = AddUserInfo(result, 0);
                    result = result
                        .OrderBy(r => CoreContext.UserManager.GetUsers((Guid)r[0]), UserInfoComparer.Default)
                        .ToList();
                    break;

                case ReportType.ProjectsWithoutActiveMilestones:
                case ReportType.ProjectsWithoutActiveTasks:
                case ReportType.ProjectsList:
                    result = AddUserInfo(result, 2);
                    result = result
                        .OrderBy(r => (string)r[1])
                        .ToList();
                    break;

                case ReportType.TasksByProjects:
                case ReportType.TasksByUsers:
                case ReportType.TasksExpired:
                    result = AddUserInfo(result, 8);
                    result = AddStatusCssClass(result);
                    break;
            }

            return ReportTransformer.Transform(result, reportType, filter.ViewType, viewType);
        }
예제 #39
0
        private static XslCompiledTransform GetXslTransform(ReportType reportType, int subType, ReportViewType viewType)
        {
            var viewTypeStr = viewType.ToString().ToLower();

            return(GetXslTransform(string.Format("{0}_{1}.{2}.xsl", reportType, subType, viewTypeStr)) ??
                   GetXslTransform(string.Format("{0}.{1}.xsl", reportType, viewTypeStr)) ??
                   GetXslTransform(string.Format("{0}.xsl", viewTypeStr)));
        }
예제 #40
0
 private static XsltArgumentList GetXslParameters(ReportType reportType, ReportViewType view)
 {
     var parameters = new XsltArgumentList();
     if (view == ReportViewType.EMail)
     {
         parameters.AddParam("p0", string.Empty, CommonLinkUtility.GetFullAbsolutePath("~/products/projects/templates.aspx"));
         parameters.AddParam("p1", string.Empty, ReportResource.ChangeSettings);
     }
     else if (view == ReportViewType.Csv)
     {
         var csvColumns = ReportHelper.GetCsvColumnsName(reportType);
         for (int i = 0; i < csvColumns.Length; i++)
         {
             parameters.AddParam("p" + i, string.Empty, csvColumns[i]);
         }
     }
     else
     {
         var columns = ReportHelper.GetReportInfo(reportType).Columns;
         for (int i = 0; i < columns.Length; i++)
         {
             parameters.AddParam("p" + i, string.Empty, columns[i]);
         }
     }
     return parameters;
 }
예제 #41
0
        public List<string> GetColumns(ReportViewType viewType, int templateID)
        {
            var parameters = new List<string>();

            if (viewType == ReportViewType.EMail)
            {
                parameters.Add(CommonLinkUtility.GetFullAbsolutePath(string.Format("~/products/projects/reports.aspx?reportType={0}&tmplId={1}", (int)ReportType, templateID)));
                parameters.Add(ReportResource.ChangeSettings);
            }
            else
            {
                parameters = viewType == ReportViewType.Csv ? ExtendedReportType.GetCsvColumnsName().ToList() : ReportInfo.Columns.ToList();

                if (ReportType == ReportType.TimeSpend)
                {
                    parameters.Add(Filter.PaymentStatuses.Count != 0 ? ((int)Filter.PaymentStatuses[0]).ToString(CultureInfo.InvariantCulture) : "-1");
                }
            }

            return parameters;
        }
예제 #42
0
        public string BuildReport(ReportViewType viewType, int templateID)
        {
            //prepare filter
            if (templateID != 0 && !Filter.FromDate.Equals(DateTime.MinValue))
            {
                var interval = Filter.ToDate.DayOfYear - Filter.FromDate.DayOfYear;

                switch (ExtendedReportType.GetReportType())
                {
                    case ReportType.TasksByUsers:
                    case ReportType.TasksByProjects:
                        {
                            Filter.FromDate = TenantUtil.DateTimeNow().Date.AddDays(-interval);
                            Filter.ToDate = TenantUtil.DateTimeNow().Date;
                        }
                        break;
                    case ReportType.MilestonesNearest:
                        {
                            Filter.FromDate = TenantUtil.DateTimeNow().Date;
                            Filter.ToDate = TenantUtil.DateTimeNow().Date.AddDays(interval);
                        }
                        break;
                }
            }

            //exec

            var data = ExtendedReportType.BuildReport(Filter).ToList();

            return !data.Any()
                       ? CreateNewReport(ReportType.EmptyReport, Filter).Transform(new List<object[]>(), viewType, templateID)
                       : this.Transform(data.ToList(), viewType, templateID);
        }
예제 #43
0
        public String Transform(XDocument reportData, ReportType reportType, ReportViewType reportView)
        {

            var xsltTransformResult = new XDocument();

            using (var writer = xsltTransformResult.CreateWriter())
            {
                var xslt = new XslCompiledTransform();

                xslt.Load(XmlReader.Create(new StringReader(GetXSLTMarking(reportType, reportView))), null, new ReportXmlUrlResolver());

                xslt.Transform(reportData.CreateReader(), GetXsltArgumentList(reportType, reportView), writer);
            }

            return xsltTransformResult.ToString();
        }
예제 #44
0
 private static bool Run(string clientId, string queryId, string reportName, string filterStr, ReportViewType reportViewType)
 {
     try {
         var fileName = reportName.EndsWith("rpt") ? reportName : string.Format("{0}.rpt", reportName);
         var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);
         if (string.IsNullOrEmpty(clientId) || string.IsNullOrEmpty(queryId) || string.IsNullOrEmpty(filePath) || !File.Exists(filePath))
         {
             return(false);
         }
         var run = MESReportRun.Instance;
         run.ReportClientId = clientId;
         return(run.RunReportServer(filePath, fileName, queryId, true, ref filterStr, reportViewType, false));
     } catch (Exception ex) {
         log.Info(string.Format("message:{0},StackTrace:{1}", ex.Message, ex.StackTrace));
         return(false);
     }
 }
 private static XslCompiledTransform GetXslTransform(this Report report, ReportViewType viewType)
 {
     var viewTypeStr = viewType.ToString().ToLower();
     return GetXslTransform(string.Format("{0}_{1}.{2}.xsl", report.ReportType, report.Filter.ViewType, viewTypeStr)) ??
         GetXslTransform(string.Format("{0}.{1}.xsl", report.ReportType, viewTypeStr)) ??
         GetXslTransform(string.Format("{0}.xsl", viewTypeStr));
 }
예제 #46
0
        private static XsltArgumentList GetXslParameters(this Report report, ReportViewType view, int templateID)
        {
            var parameters = new XsltArgumentList();
            var columns = report.GetColumns(view, templateID);
            var logo = string.IsNullOrEmpty(SetupInfo.MainLogoMailTmplURL) ? CommonLinkUtility.GetFullAbsolutePath(TenantLogoManager.GetLogoLight(true)) : SetupInfo.MainLogoMailTmplURL;

            for (var i = 0; i < columns.Count; i++)
            {
                parameters.AddParam("p" + i, string.Empty, columns[i]);
            }

            parameters.AddParam("p" + columns.Count, string.Empty, Global.ReportCsvDelimiter.Value);
            parameters.AddParam("logo", string.Empty, logo);

            return parameters;
        }
예제 #47
0
		public List<HeaderMetadata> GetDefaultReportHeaderMetadata(ReportViewType reportRowType)
		{
			switch (reportRowType)
			{
				case ReportViewType.Season:
					return new List<HeaderMetadata>
					{
						HeaderMetadata.StatusImage,
						HeaderMetadata.Series,
						HeaderMetadata.Season,
						HeaderMetadata.SeasonNumber,
						HeaderMetadata.DateAdded,
						HeaderMetadata.Year,
						HeaderMetadata.Genres
					};

				case ReportViewType.Series:
					return new List<HeaderMetadata>
					{
						HeaderMetadata.StatusImage,
						HeaderMetadata.Name,
						HeaderMetadata.Network,
						HeaderMetadata.DateAdded,
						HeaderMetadata.Year,
						HeaderMetadata.Genres,
						HeaderMetadata.ParentalRating,
						HeaderMetadata.CommunityRating,
						HeaderMetadata.Runtime,
						HeaderMetadata.Trailers,
						HeaderMetadata.Specials
					};

				case ReportViewType.MusicAlbum:
					return new List<HeaderMetadata>
					{
						HeaderMetadata.StatusImage,
						HeaderMetadata.Name,
						HeaderMetadata.AlbumArtist,
						HeaderMetadata.DateAdded,
						HeaderMetadata.ReleaseDate,
						HeaderMetadata.Tracks,
						HeaderMetadata.Year,
						HeaderMetadata.Genres
					};

				case ReportViewType.MusicArtist:
					return new List<HeaderMetadata>
					{
						HeaderMetadata.StatusImage,
						HeaderMetadata.MusicArtist,
						HeaderMetadata.Countries,
						HeaderMetadata.DateAdded,
						HeaderMetadata.Year,
						HeaderMetadata.Genres
					};

				case ReportViewType.Game:
					return new List<HeaderMetadata>
					{
						HeaderMetadata.StatusImage,
						HeaderMetadata.Name,
						HeaderMetadata.GameSystem,
						HeaderMetadata.DateAdded,
						HeaderMetadata.ReleaseDate,
						HeaderMetadata.ParentalRating,
						HeaderMetadata.CommunityRating,
						HeaderMetadata.Players,
						HeaderMetadata.Year,
						HeaderMetadata.Genres,
						HeaderMetadata.Trailers
					};

				case ReportViewType.Movie:
					return new List<HeaderMetadata>
					{
						HeaderMetadata.StatusImage,
						HeaderMetadata.Name,
						HeaderMetadata.DateAdded,
						HeaderMetadata.ReleaseDate,
						HeaderMetadata.Year,
						HeaderMetadata.Genres,
						HeaderMetadata.ParentalRating,
						HeaderMetadata.CommunityRating,
						HeaderMetadata.Runtime,
						HeaderMetadata.Video,
						HeaderMetadata.Resolution,
						HeaderMetadata.Audio,
						HeaderMetadata.Subtitles,
						HeaderMetadata.Trailers,
						HeaderMetadata.Specials
					};

				case ReportViewType.Book:
					return new List<HeaderMetadata>
					{
						HeaderMetadata.StatusImage,
						HeaderMetadata.Name,
						HeaderMetadata.DateAdded,
						HeaderMetadata.ReleaseDate,
						HeaderMetadata.Year,
						HeaderMetadata.Genres,
						HeaderMetadata.ParentalRating,
						HeaderMetadata.CommunityRating
					};

				case ReportViewType.BoxSet:
					return new List<HeaderMetadata>
					{
						HeaderMetadata.StatusImage,
						HeaderMetadata.Name,
						HeaderMetadata.DateAdded,
						HeaderMetadata.ReleaseDate,
						HeaderMetadata.Year,
						HeaderMetadata.Genres,
						HeaderMetadata.ParentalRating,
						HeaderMetadata.CommunityRating,
						HeaderMetadata.Trailers
					};

				case ReportViewType.Audio:
					return new List<HeaderMetadata>
					{
						HeaderMetadata.StatusImage,
						HeaderMetadata.Name,
						HeaderMetadata.AudioAlbumArtist,
						HeaderMetadata.AudioAlbum,
						HeaderMetadata.Disc,
						HeaderMetadata.Track,
						HeaderMetadata.DateAdded,
						HeaderMetadata.ReleaseDate,
						HeaderMetadata.Year,
						HeaderMetadata.Genres,
						HeaderMetadata.ParentalRating,
						HeaderMetadata.CommunityRating,
						HeaderMetadata.Runtime,
						HeaderMetadata.Audio
					};

				case ReportViewType.Episode:
					return new List<HeaderMetadata>
					{
						HeaderMetadata.StatusImage,
						HeaderMetadata.Name,
						HeaderMetadata.EpisodeSeries,
						HeaderMetadata.Season,
						HeaderMetadata.DateAdded,
						HeaderMetadata.ReleaseDate,
						HeaderMetadata.Year,
						HeaderMetadata.Genres,
						HeaderMetadata.ParentalRating,
						HeaderMetadata.CommunityRating,
						HeaderMetadata.Runtime,
						HeaderMetadata.Video,
						HeaderMetadata.Resolution,
						HeaderMetadata.Audio,
						HeaderMetadata.Subtitles,
						HeaderMetadata.Trailers,
						HeaderMetadata.Specials
					};

				case ReportViewType.Video:
				case ReportViewType.MusicVideo:
				case ReportViewType.Trailer:
				case ReportViewType.BaseItem:
				default:
					return new List<HeaderMetadata>
					{
						HeaderMetadata.StatusImage,
						HeaderMetadata.Name,
						HeaderMetadata.DateAdded,
						HeaderMetadata.ReleaseDate,
						HeaderMetadata.Year,
						HeaderMetadata.Genres,
						HeaderMetadata.ParentalRating,
						HeaderMetadata.CommunityRating,
						HeaderMetadata.Runtime,
						HeaderMetadata.Video,
						HeaderMetadata.Resolution,
						HeaderMetadata.Audio,
						HeaderMetadata.Subtitles,
						HeaderMetadata.Trailers,
						HeaderMetadata.Specials
					};

			}

		}
예제 #48
0
        public static string BuildReport(ReportType reportType, ReportFilter filter, ReportViewType viewType)
        {
            //prepare filter
            if (reportType == ReportType.MilestonesExpired)
            {
                filter.ToDate = TenantUtil.DateTimeNow();
            }
            if (reportType == ReportType.TasksExpired)
            {
                filter.ToDate = TenantUtil.DateTimeNow();
                filter.TaskStatuses.Add(TaskStatus.Open);
            }

            //exec
            IList <object[]> result = null;

            if (reportType == ReportType.UsersActivity)
            {
                result = BuildUserActivityReport(filter);
            }
            else
            {
                result = Global.EngineFactory.GetReportEngine().BuildReport(reportType, filter);
                if (reportType == ReportType.TasksExpired)
                {
                    var tmp = new List <object[]>();
                    foreach (var row in result)
                    {
                        if (row[10] != null)//task has due date
                        {
                            tmp.Add(row);
                        }
                    }
                    result = tmp;
                }
            }

            if (result == null || result.Count == 0)
            {
                return(null);
            }

            //add user info
            switch (reportType)
            {
            case ReportType.UsersWithoutActiveTasks:
            case ReportType.UsersWorkload:
            case ReportType.TimeSpend:
            case ReportType.UsersActivity:
                result = AddUserInfo(result, 0);
                result = result
                         .OrderBy(r => CoreContext.UserManager.GetUsers((Guid)r[0]), UserInfoComparer.Default)
                         .ToList();
                break;

            case ReportType.ProjectsWithoutActiveMilestones:
            case ReportType.ProjectsWithoutActiveTasks:
            case ReportType.ProjectsList:
                result = AddUserInfo(result, 2);
                result = result
                         .OrderBy(r => (string)r[1])
                         .ToList();
                break;

            case ReportType.TasksByProjects:
            case ReportType.TasksByUsers:
            case ReportType.TasksExpired:
                result = AddUserInfo(result, 8);
                result = AddStatusCssClass(result);
                break;
            }

            return(ReportTransformer.Transform(result, reportType, filter.ViewType, viewType));
        }
        private static string ToString(object value, ReportViewType view)
        {
            if (value == null) return null;
            if (value is Enum) return ((Enum)value).ToString("d");
            if (value is DateTime) return ((DateTime)value).ToString("o");
            if (value is float) return ((float) value).ToString(CultureInfo.InvariantCulture);

            value = value.ToString()
                         .Replace("&", "&amp;")
                         .Replace("<", "&lt;")
                         .Replace(">", "&gt;")
                         .Replace("\"", "&quot;");
            if (view == ReportViewType.Csv && (value as string).Contains(","))
                value = string.Format("&quot;{0}&quot;", value);

            return value.ToString();
        }
예제 #50
0
        public List <HeaderMetadata> GetDefaultReportHeaderMetadata(ReportViewType reportRowType)
        {
            switch (reportRowType)
            {
            case ReportViewType.Season:
                return(new List <HeaderMetadata>
                {
                    HeaderMetadata.StatusImage,
                    HeaderMetadata.Series,
                    HeaderMetadata.Season,
                    HeaderMetadata.SeasonNumber,
                    HeaderMetadata.DateAdded,
                    HeaderMetadata.Year,
                    HeaderMetadata.Genres
                });

            case ReportViewType.Series:
                return(new List <HeaderMetadata>
                {
                    HeaderMetadata.StatusImage,
                    HeaderMetadata.Name,
                    HeaderMetadata.Network,
                    HeaderMetadata.DateAdded,
                    HeaderMetadata.Year,
                    HeaderMetadata.Genres,
                    HeaderMetadata.ParentalRating,
                    HeaderMetadata.CommunityRating,
                    HeaderMetadata.Runtime,
                    HeaderMetadata.Trailers,
                    HeaderMetadata.Specials
                });

            case ReportViewType.MusicAlbum:
                return(new List <HeaderMetadata>
                {
                    HeaderMetadata.StatusImage,
                    HeaderMetadata.Name,
                    HeaderMetadata.AlbumArtist,
                    HeaderMetadata.DateAdded,
                    HeaderMetadata.ReleaseDate,
                    HeaderMetadata.Tracks,
                    HeaderMetadata.Year,
                    HeaderMetadata.Genres
                });

            case ReportViewType.MusicArtist:
                return(new List <HeaderMetadata>
                {
                    HeaderMetadata.StatusImage,
                    HeaderMetadata.MusicArtist,
                    HeaderMetadata.Countries,
                    HeaderMetadata.DateAdded,
                    HeaderMetadata.Year,
                    HeaderMetadata.Genres
                });

            case ReportViewType.Game:
                return(new List <HeaderMetadata>
                {
                    HeaderMetadata.StatusImage,
                    HeaderMetadata.Name,
                    HeaderMetadata.GameSystem,
                    HeaderMetadata.DateAdded,
                    HeaderMetadata.ReleaseDate,
                    HeaderMetadata.ParentalRating,
                    HeaderMetadata.CommunityRating,
                    HeaderMetadata.Players,
                    HeaderMetadata.Year,
                    HeaderMetadata.Genres,
                    HeaderMetadata.Trailers
                });

            case ReportViewType.Movie:
                return(new List <HeaderMetadata>
                {
                    HeaderMetadata.StatusImage,
                    HeaderMetadata.Name,
                    HeaderMetadata.DateAdded,
                    HeaderMetadata.ReleaseDate,
                    HeaderMetadata.Year,
                    HeaderMetadata.Genres,
                    HeaderMetadata.ParentalRating,
                    HeaderMetadata.CommunityRating,
                    HeaderMetadata.Runtime,
                    HeaderMetadata.Video,
                    HeaderMetadata.Resolution,
                    HeaderMetadata.Audio,
                    HeaderMetadata.Subtitles,
                    HeaderMetadata.Trailers,
                    HeaderMetadata.Specials
                });

            case ReportViewType.Book:
                return(new List <HeaderMetadata>
                {
                    HeaderMetadata.StatusImage,
                    HeaderMetadata.Name,
                    HeaderMetadata.DateAdded,
                    HeaderMetadata.ReleaseDate,
                    HeaderMetadata.Year,
                    HeaderMetadata.Genres,
                    HeaderMetadata.ParentalRating,
                    HeaderMetadata.CommunityRating
                });

            case ReportViewType.BoxSet:
                return(new List <HeaderMetadata>
                {
                    HeaderMetadata.StatusImage,
                    HeaderMetadata.Name,
                    HeaderMetadata.DateAdded,
                    HeaderMetadata.ReleaseDate,
                    HeaderMetadata.Year,
                    HeaderMetadata.Genres,
                    HeaderMetadata.ParentalRating,
                    HeaderMetadata.CommunityRating,
                    HeaderMetadata.Trailers
                });

            case ReportViewType.Audio:
                return(new List <HeaderMetadata>
                {
                    HeaderMetadata.StatusImage,
                    HeaderMetadata.Name,
                    HeaderMetadata.AudioAlbumArtist,
                    HeaderMetadata.AudioAlbum,
                    HeaderMetadata.Disc,
                    HeaderMetadata.Track,
                    HeaderMetadata.DateAdded,
                    HeaderMetadata.ReleaseDate,
                    HeaderMetadata.Year,
                    HeaderMetadata.Genres,
                    HeaderMetadata.ParentalRating,
                    HeaderMetadata.CommunityRating,
                    HeaderMetadata.Runtime,
                    HeaderMetadata.Audio
                });

            case ReportViewType.Episode:
                return(new List <HeaderMetadata>
                {
                    HeaderMetadata.StatusImage,
                    HeaderMetadata.Name,
                    HeaderMetadata.EpisodeSeries,
                    HeaderMetadata.Season,
                    HeaderMetadata.DateAdded,
                    HeaderMetadata.ReleaseDate,
                    HeaderMetadata.Year,
                    HeaderMetadata.Genres,
                    HeaderMetadata.ParentalRating,
                    HeaderMetadata.CommunityRating,
                    HeaderMetadata.Runtime,
                    HeaderMetadata.Video,
                    HeaderMetadata.Resolution,
                    HeaderMetadata.Audio,
                    HeaderMetadata.Subtitles,
                    HeaderMetadata.Trailers,
                    HeaderMetadata.Specials
                });

            case ReportViewType.Video:
            case ReportViewType.MusicVideo:
            case ReportViewType.Trailer:
            case ReportViewType.BaseItem:
            default:
                return(new List <HeaderMetadata>
                {
                    HeaderMetadata.StatusImage,
                    HeaderMetadata.Name,
                    HeaderMetadata.DateAdded,
                    HeaderMetadata.ReleaseDate,
                    HeaderMetadata.Year,
                    HeaderMetadata.Genres,
                    HeaderMetadata.ParentalRating,
                    HeaderMetadata.CommunityRating,
                    HeaderMetadata.Runtime,
                    HeaderMetadata.Video,
                    HeaderMetadata.Resolution,
                    HeaderMetadata.Audio,
                    HeaderMetadata.Subtitles,
                    HeaderMetadata.Trailers,
                    HeaderMetadata.Specials
                });
            }
        }
예제 #51
0
        public static string Transform(this Report report, IList <object[]> reportData, ReportViewType view, int templateID)
        {
            var xml = new StringBuilder();

            if (reportData.Count != 0)
            {
                xml = xml.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
                      .Append("<reportResult>");
                foreach (var row in reportData)
                {
                    xml.Append("<r ");
                    for (var i = 0; i < row.Length; i++)
                    {
                        xml.AppendFormat("c{0}=\"{1}\" ", i, ToString(row[i], view));
                    }
                    xml.Append("/>");
                }
                xml.Append("</reportResult>");
            }
            else
            {
                xml = xml.Append(string.Format("<div class='noContentBlock'>{0}</div>", ProjectsCommonResource.NoData));
            }

            return(report.Transform(xml.ToString(), view, templateID));
        }
        private void OutputData(string result, string reportName, Report report, ReportViewType outputFormat)
        {
            switch (outputFormat)
            {
                case ReportViewType.Html:
                    reportResult.Text = result;

                    var sb = new StringBuilder();
                    sb.Append("<div class='report-name'>");
                    sb.Append(reportName);
                    sb.Append("<span class='generation-date'> (");
                    sb.Append(TenantUtil.DateTimeNow().ToString(DateTimeExtension.ShortDatePattern));
                    sb.Append(")</span>");
                    sb.Append("</div>");
                    reportFilter.Text = sb.ToString();
                    break;

                case ReportViewType.Xml:
                case ReportViewType.EMail:
                    if (result != null)
                    {
                        var ext = outputFormat.ToString().ToLower();
                        Response.Clear();
                        Response.ContentType = "text/" + ext + "; charset=utf-8";
                        Response.ContentEncoding = Encoding.UTF8;
                        Response.Charset = Encoding.UTF8.WebName;
                        Response.AppendHeader("Content-Disposition", string.Format("attachment; filename={0}.{1}", report.FileName, ext));
                        Response.Write(result);
                        Response.End();
                    }
                    break;

                case ReportViewType.Csv:
                    string fileURL;

                    using (var memStream = new MemoryStream(Encoding.UTF8.GetBytes(result)))
                    {
                        var file = FileUploader.Exec(Files.Classes.Global.FolderMy.ToString(), report.FileName + ".csv", result.Length, memStream, true);

                        fileURL = CommonLinkUtility.GetFileWebEditorUrl((int) file.ID);
                        fileURL += string.Format("&options={{\"delimiter\":{0},\"codePage\":{1}}}",
                                                 (int)Global.ReportCsvDelimiter.Key,
                                                 Encoding.UTF8.CodePage);
                    }

                    Response.Redirect(fileURL);

                    break;
            }
        }
예제 #53
0
 private static XslCompiledTransform GetXslTransform(ReportType reportType, int subType, ReportViewType viewType)
 {
     return GetXslTransform(string.Format("{0}_{1}.{2}.xsl", reportType, subType, viewType)) ??
         GetXslTransform(reportType, viewType) ??
         GetXslTransform(string.Format("{0}.xsl", viewType));
 }
예제 #54
0
        private String GetXSLTMarking(ReportType reportType, ReportViewType reportView)
        {
            var folderPath = HttpContext.Current.Server.MapPath(@"~\products\crm\reports\");

            var filePath = String.Empty;

            switch (reportType)
            {
                case ReportType.SalesByStage:
                    filePath = String.Format("{0}/{1}.{2}.xsl", folderPath, reportType.ToString().ToLower(),
                                         reportView.ToString());
                    break;
                default:
                    filePath = String.Format("{0}/{1}.{2}.xsl", folderPath, "sales",
                                             reportView.ToString());
                    break;
            }


            return File.ReadAllText(filePath);
        }