73 lines
3.1 KiB
C#
73 lines
3.1 KiB
C#
using System;
|
|
using DevExpress.XtraReports.UI;
|
|
using EnVisage.Models;
|
|
using System.Web.Script.Serialization;
|
|
using System.Collections.Generic;
|
|
using System.Collections;
|
|
using Envisage.Code.DAL;
|
|
using EnVisage.Code.DAL;
|
|
using System.IO;
|
|
|
|
namespace EnVisage.Code.BLL
|
|
{
|
|
public class ReportManager
|
|
{
|
|
public static XtraReport LoadReport(ReportCallbackModel model)
|
|
{
|
|
if (null == model)
|
|
throw new ArgumentNullException("model");
|
|
XtraReport report = null;
|
|
|
|
#region Serializing report parameters to be able to keep sorting params between report partial postbacks
|
|
var keys = new List<string>();
|
|
var values = new List<bool>();
|
|
if (model.SortFields != null)
|
|
foreach (var val in model.SortFields)
|
|
{
|
|
keys.Add(val.Key);
|
|
values.Add(val.Value);
|
|
}
|
|
var keysXml = keys.Serialize();
|
|
var valuesXml = values.Serialize();
|
|
#endregion
|
|
|
|
switch (model.ReportId)
|
|
{
|
|
case Constants.REPORT_TEST_ID:
|
|
report = new XtraReport2();
|
|
report.Parameters[Constants.REPORT_SORT_FIELD_PARAMETER_NAME].Value = keysXml;
|
|
report.Parameters[Constants.REPORT_SORT_DIR_PARAMETER_NAME].Value = valuesXml;
|
|
break;
|
|
case Constants.REPORT_SUMMARY_ID:
|
|
report = new EnVisage.Reports.SummaryReport();
|
|
report.Parameters[Constants.REPORT_SORT_FIELD_PARAMETER_NAME].Value = keysXml;
|
|
report.Parameters[Constants.REPORT_SORT_DIR_PARAMETER_NAME].Value = valuesXml;
|
|
break;
|
|
case Constants.REPORT_FOREREVENUE_ID:
|
|
report = new EnVisage.Reports.ForecastRevenueReport();
|
|
report.Parameters[Constants.REPORT_SORT_FIELD_PARAMETER_NAME].Value = keysXml;
|
|
report.Parameters[Constants.REPORT_SORT_DIR_PARAMETER_NAME].Value = valuesXml;
|
|
break;
|
|
case Constants.REPORT_NONFOREREVENUE_ID:
|
|
report = new EnVisage.Reports.ForecastNonRevenueReport();
|
|
report.Parameters[Constants.REPORT_SORT_FIELD_PARAMETER_NAME].Value = keysXml;
|
|
report.Parameters[Constants.REPORT_SORT_DIR_PARAMETER_NAME].Value = valuesXml;
|
|
break;
|
|
default:
|
|
using (var session = SessionFactory.Create())
|
|
{
|
|
var reportEntity = session.GetObjectByKey<UserReport>(Convert.ToInt32(model.ReportId));
|
|
if (reportEntity != null && reportEntity.Layout != null)
|
|
using (var stream = new MemoryStream(reportEntity.Layout))
|
|
{
|
|
report = XtraReport.FromStream(stream, true);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
if (null == report)
|
|
throw new NullReferenceException("Cannot find report by provided Id: " + model.ReportId);
|
|
return report;
|
|
}
|
|
}
|
|
} |