Files
WebGIM/WebSites/WebGIM/App_Code/reportExporter.cs
T
samuele ee4f12db73 Update filtraggio e stampa reports
git-svn-id: https://keyhammer.ath.cx/svn/WebGIM/trunk@87 3e04ef4b-3b25-4b6c-be27-bb5389ca777b
2009-02-11 15:20:15 +00:00

228 lines
9.2 KiB
C#

using System;
using System.IO;
using System.Data;
using System.Text;
using System.Drawing.Imaging;
using System.Drawing.Printing;
using System.Collections.Generic;
using System.Windows.Forms;
using Microsoft.Reporting.WinForms;
using System.Configuration;
using SteamWare;
/// <summary>
/// Classe che restituisce uno stream ed i dati accessori per reinviare un report in pdf
/// </summary>
public class reportExporter
{
/// <summary>
/// mimeType del report
/// </summary>
public string mimeType;
/// <summary>
/// encoding dei dati
/// </summary>
public string encoding;
/// <summary>
/// nome estensione
/// </summary>
public string fileNameExtension;
/// <summary>
/// steam di bytes del report
/// </summary>
public byte[] renderedBytes;
/// <summary>
/// metodo protected
/// </summary>
public reportExporter()
{
}
/// <summary>
/// carica i dati richiesti dal report dalla StoredProcedure (filtrando quindi...)
/// </summary>
/// <param name="tipoReport">report ammessi: RichiestaIntervento</param>
/// <param name="idxObj">num int mtz</param>
/// <returns>tabella dati</returns>
private DataTable caricaDati(reportRichiesto tipoReport, string idxObj)
{
DataTable tab = new DataTable();
switch (tipoReport)
{
case reportRichiesto.ElencoMacchine:
tab = (DataTable)TA_app.obj.taElencoImpMacch.GetData();
break;
case reportRichiesto.RichiestaIntervento:
tab = (DataTable)TA_app.obj.taInterventiMtz.getByIdx(Convert.ToInt32(idxObj));
break;
default:
break;
}
return tab;
}
/// <summary>
/// carica i dati richiesti dal report dalla StoredProcedure (filtrando quindi...)
/// </summary>
/// <param name="tipoReport">report ammessi: ElencoMacchine</param>
/// <returns>tabella dati</returns>
private DataTable caricaDati(reportRichiesto tipoReport)
{
DataTable tab = new DataTable();
switch (tipoReport)
{
case reportRichiesto.ElencoMacchine:
tab = (DataTable)TA_app.obj.taElencoImpMacch.GetData();
break;
default:
break;
}
return tab;
}
/// <summary>
/// carica i dati richiesti dal report dalla StoredProcedure (filtrando quindi...)
/// </summary>
/// <param name="tipoReport">report ammessi: ElencoInterventi / MTBF_MTTR</param>
/// <param name="periodoAnalizzato">oggetto che contiene data inizio e data fine dell'analisi richiesta per il report</param>
/// <returns>tabella dati</returns>
private DataTable caricaDati(reportRichiesto tipoReport, intervalloDate periodoAnalizzato, string username)
{
DataTable tab = new DataTable();
switch (tipoReport)
{
case reportRichiesto.ElencoInterventi:
tab = (DataTable)TA_app.obj.taElencoIntFilt.getByIntervDateUsernameFilt(periodoAnalizzato.inizio, periodoAnalizzato.fine, username);
break;
case reportRichiesto.MTBF_MTTR:
tab = (DataTable)TA_app.obj.taElenco_MTBF_MTTR.GetData(periodoAnalizzato.inizio, periodoAnalizzato.fine, username);
break;
default:
break;
}
return tab;
}
/// <summary>
/// renderizza il report in pdf
/// </summary>
/// <param name="tipoReport">report ammessi: ElencoMacchine</param>
/// <returns></returns>
public void popolaPdfStream(reportRichiesto tipoReport)
{
LocalReport report = new LocalReport();
string deviceInfo = "";
switch (tipoReport)
{
case reportRichiesto.ElencoMacchine:
report.ReportPath = @".\MacchineReparti.rdlc";
report.DataSources.Add(new ReportDataSource("WebGim", caricaDati(tipoReport)));
deviceInfo = "<DeviceInfo>" +
" <OutputFormat>PDF</OutputFormat>" +
" <PageWidth>29.7cm</PageWidth>" +
" <PageHeight>21cm</PageHeight>" +
" <MarginTop>0.2cm</MarginTop>" +
" <MarginLeft>0.2cm</MarginLeft>" +
" <MarginRight>0.2cm</MarginRight>" +
" <MarginBottom>0.2cm</MarginBottom>" +
"</DeviceInfo>";
break;
default:
break;
}
createPdfStream(report, deviceInfo);
}
/// <summary>
/// renderizza il report in pdf
/// </summary>
/// <param name="tipoReport">report ammessi: RichiestaIntervento</param>
/// <param name="parametro">idx della richiesta (numIntMtz)</param>
/// <returns></returns>
public void popolaPdfStream(reportRichiesto tipoReport, string parametro)
{
LocalReport report = new LocalReport();
string deviceInfo = "";
switch (tipoReport)
{
case reportRichiesto.RichiestaIntervento:
report.ReportPath = @".\RichiestaIntervento.rdlc";
report.DataSources.Add(new ReportDataSource("WebGim", caricaDati(tipoReport, parametro))); // OCCHIO!!! va messa sorgente dati CORRETTA
deviceInfo = "<DeviceInfo>" +
" <OutputFormat>PDF</OutputFormat>" +
" <PageWidth>21cm</PageWidth>" +
" <PageHeight>29.7cm</PageHeight>" +
" <MarginTop>0.2cm</MarginTop>" +
" <MarginLeft>0.2cm</MarginLeft>" +
" <MarginRight>0.2cm</MarginRight>" +
" <MarginBottom>0.2cm</MarginBottom>" +
"</DeviceInfo>";
break;
default:
break;
}
createPdfStream(report, deviceInfo);
}
/// <summary>
/// renderizza il report in pdf
/// </summary>
/// <param name="tipoReport">report ammessi: ElencoInterventi / MTBF_MTTR</param>
/// <param name="periodoAnalizzato">oggetto che contiene data inizio e data fine dell'analisi richiesta per il report</param>
public void popolaPdfStream(reportRichiesto tipoReport, intervalloDate periodoAnalizzato, string username)
{
LocalReport report = new LocalReport();
string deviceInfo = "";
switch (tipoReport)
{
case reportRichiesto.ElencoInterventi:
report.ReportPath = @".\ReportInterventi.rdlc";
report.DataSources.Add(new ReportDataSource("WebGim", caricaDati(tipoReport, periodoAnalizzato, username)));
deviceInfo = "<DeviceInfo>" +
" <OutputFormat>PDF</OutputFormat>" +
" <PageWidth>21cm</PageWidth>" +
" <PageHeight>29.7cm</PageHeight>" +
" <MarginTop>0.2cm</MarginTop>" +
" <MarginLeft>0.2cm</MarginLeft>" +
" <MarginRight>0.2cm</MarginRight>" +
" <MarginBottom>0.2cm</MarginBottom>" +
"</DeviceInfo>";
break;
case reportRichiesto.MTBF_MTTR:
report.ReportPath = @".\Report_MTBF_MTTR.rdlc";
report.DataSources.Add(new ReportDataSource("WebGim", caricaDati(tipoReport, periodoAnalizzato, username)));
deviceInfo = "<DeviceInfo>" +
" <OutputFormat>PDF</OutputFormat>" +
" <PageWidth>21cm</PageWidth>" +
" <PageHeight>29.7cm</PageHeight>" +
" <MarginTop>0.2cm</MarginTop>" +
" <MarginLeft>0.2cm</MarginLeft>" +
" <MarginRight>0.2cm</MarginRight>" +
" <MarginBottom>0.2cm</MarginBottom>" +
"</DeviceInfo>";
// calcolo le ore totali equivalenti...
ReportParameter[] OreTotali = { new ReportParameter("OreTotali", WebGimUtils.obj.oreEquivalenti(periodoAnalizzato).ToString()) };
report.SetParameters(OreTotali);
break;
default:
break;
}
createPdfStream(report, deviceInfo);
}
/// <summary>
/// crea il vero e proprio stream pdf
/// </summary>
/// <param name="report"></param>
/// <param name="deviceInfo"></param>
private void createPdfStream(LocalReport report, string deviceInfo)
{
// export in PDF
string reportType = "PDF";
Warning[] warnings;
string[] streams;
renderedBytes = report.Render(
reportType,
deviceInfo,
out mimeType,
out encoding,
out fileNameExtension,
out streams,
out warnings);
}
}