using System;
using System.Data;
using SteamWare;
using Microsoft.Reporting.WinForms;
///
/// Classe che restituisce uno stream ed i dati accessori per reinviare un report in pdf
///
public class reportExporter
{
///
/// mimeType del report
///
public string mimeType;
///
/// encoding dei dati
///
public string encoding;
///
/// nome estensione
///
public string fileNameExtension;
///
/// steam di bytes del report
///
public byte[] renderedBytes;
///
/// metodo protected
///
public reportExporter()
{
}
///
/// carica i dati richiesti dal report dalla StoredProcedure (filtrando quindi...)
///
/// report ammessi: RichiestaIntervento
/// num int mtz
/// tabella dati
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;
}
///
/// carica i dati richiesti dal report dalla StoredProcedure (filtrando quindi...)
///
/// report ammessi: ElencoMacchine
/// tabella dati
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;
}
///
/// carica i dati richiesti dal report dalla StoredProcedure (filtrando quindi...)
///
/// report ammessi: ElencoInterventi / MTBF_MTTR
/// oggetto che contiene data inizio e data fine dell'analisi richiesta per il report
/// username (per caricare i suoi filtraggi...
/// se si devono includere SOLO i dati di macchina ferma
/// se si deve includere anche nel report le fermate di mtz preventiva
/// tabella dati
private DataTable caricaDati(reportRichiesto tipoReport, intervalloDate periodoAnalizzato, string username, bool soloMacchinaFerma, bool includiMtzPrev)
{
DataTable tab = new DataTable();
switch (tipoReport)
{
case reportRichiesto.ElencoInterventi:
// controllo: se include mtz prev e non solo ferma
if (!soloMacchinaFerma && includiMtzPrev)
{
// ...uso metodo std
tab = (DataTable)TA_app.obj.taElencoIntFilt.getByIntervDateUsernameFilt(periodoAnalizzato.inizio, periodoAnalizzato.fine, username);
}
else
{
// altrimenti stored compelta (e + lenta)
tab = (DataTable)TA_app.obj.taElencoIntFilt.getByIntervDateUsernameFilt_fermaPrev(periodoAnalizzato.inizio, periodoAnalizzato.fine, username, soloMacchinaFerma, includiMtzPrev);
}
break;
case reportRichiesto.MTBF_MTTR:
// controllo: se include mtz prev e non solo ferma
if (!soloMacchinaFerma && includiMtzPrev)
{
// ...uso metodo std
tab = (DataTable)TA_app.obj.taElenco_MTBF_MTTR.GetData(periodoAnalizzato.inizio, periodoAnalizzato.fine, username);
}
else
{
// altrimenti stored compelta (e + lenta)
tab = (DataTable)TA_app.obj.taElenco_MTBF_MTTR.getByFermaPrev(periodoAnalizzato.inizio, periodoAnalizzato.fine, username, soloMacchinaFerma, includiMtzPrev);
}
break;
default:
break;
}
return tab;
}
///
/// renderizza il report in pdf
///
/// report ammessi: ElencoMacchine
///
public void popolaPdfStream(reportRichiesto tipoReport)
{
LocalReport report = new LocalReport();
report.EnableExternalImages = true;
devInfoParam deviceInfo = new devInfoParam("PDF", "21cm", "29.7cm", "0.2cm", "0.2cm", "0.2cm", "0.2cm");
switch (tipoReport)
{
case reportRichiesto.ElencoMacchine:
report.ReportPath = string.Format(@".\{0}\{1}\MacchineReparti.rdlc", memLayer.ML.CRS("ReportBasePath"), user_std.UtSn.lingua);
report.DataSources.Add(new ReportDataSource("WebGim", caricaDati(tipoReport)));
deviceInfo = new devInfoParam("PDF", "21cm", "29.7cm", "0.2cm", "0.2cm", "0.2cm", "0.2cm");
break;
default:
break;
}
createPdfStream(report, deviceInfo.xmlParam);
}
///
/// renderizza il report in pdf
///
/// report ammessi: RichiestaIntervento
/// idx della richiesta (numIntMtz)
///
public void popolaPdfStream(reportRichiesto tipoReport, string parametro)
{
LocalReport report = new LocalReport();
report.EnableExternalImages = true;
devInfoParam deviceInfo = new devInfoParam("PDF", "21cm", "29.7cm", "0.2cm", "0.2cm", "0.2cm", "0.2cm");
switch (tipoReport)
{
case reportRichiesto.RichiestaIntervento:
report.ReportPath = string.Format(@".\{0}\{1}\RichiestaIntervento.rdlc", memLayer.ML.CRS("ReportBasePath"), user_std.UtSn.lingua);
report.DataSources.Add(new ReportDataSource("WebGim", caricaDati(tipoReport, parametro))); // OCCHIO!!! va messa sorgente dati CORRETTA
deviceInfo = new devInfoParam("PDF", "29.7cm", "21cm", "0.2cm", "0.2cm", "0.2cm", "0.2cm");
break;
default:
break;
}
createPdfStream(report, deviceInfo.xmlParam);
}
///
/// renderizza il report in pdf
///
/// report ammessi: ElencoInterventi / MTBF_MTTR
/// oggetto che contiene data inizio e data fine dell'analisi richiesta per il report
/// username (per caricare i suoi filtraggi...
/// se si devono includere SOLO i dati di macchina ferma
/// se si deve includere anche nel report le fermate di mtz preventiva
public void popolaPdfStream(reportRichiesto tipoReport, intervalloDate periodoAnalizzato, string username, bool soloMacchinaFerma, bool includiMtzPrev)
{
LocalReport report = new LocalReport();
report.EnableExternalImages = true;
devInfoParam deviceInfo = new devInfoParam("PDF", "21cm", "29.7cm", "0.2cm", "0.2cm", "0.2cm", "0.2cm");
switch (tipoReport)
{
case reportRichiesto.ElencoInterventi:
report.ReportPath = string.Format(@".\{0}\{1}\ReportInterventi.rdlc", memLayer.ML.CRS("ReportBasePath"), user_std.UtSn.lingua);
report.DataSources.Add(new ReportDataSource("WebGim", caricaDati(tipoReport, periodoAnalizzato, username, soloMacchinaFerma, includiMtzPrev)));
deviceInfo = new devInfoParam("PDF", "29.7cm", "21cm", "0.2cm", "0.2cm", "0.2cm", "0.2cm");
break;
case reportRichiesto.MTBF_MTTR:
report.ReportPath = string.Format(@".\{0}\{1}\Report_MTBF_MTTR.rdlc", memLayer.ML.CRS("ReportBasePath"), user_std.UtSn.lingua);
report.DataSources.Add(new ReportDataSource("WebGim", caricaDati(tipoReport, periodoAnalizzato, username, soloMacchinaFerma, includiMtzPrev)));
deviceInfo = new devInfoParam("PDF", "29.7cm", "21cm", "0.2cm", "0.2cm", "0.2cm", "0.2cm");
// calcolo le ore totali equivalenti...
ReportParameter[] OreTotali = { new ReportParameter("OreTotali", WebGimUtils.obj.oreEquivalenti(periodoAnalizzato).ToString()) };
report.SetParameters(OreTotali);
break;
default:
break;
}
createPdfStream(report, deviceInfo.xmlParam);
}
///
/// crea il vero e proprio stream pdf
///
///
///
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);
}
}