2025-04-15 12:10:19 +02:00

181 lines
7.0 KiB
C#

using System;
using System.Data;
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Text;
using PDFGenerator;
using PDFGenerator.BusinessLayer;
using PDFGenerator.Presentation.Section.Tables;
using PDFGenerator.BusinessLayer.DataSection;
using PDFGenerator.Presentation.Section;
using PDFGenerator.Presentation.Section.Charts;
/// <summary>
/// Summary description for S82
/// </summary>
public class S82 : ISezione
{
string Titolo = " ";
private string _testointroduttivo;
public string TestoIntroduttivo
{
get
{
return _testointroduttivo;
}
set
{
_testointroduttivo = value;
}
}
#region ISezione Members
public void writeSezione (PDFGenerator.BusinessLayer.DataThread dataThread)
{
DocumentPDF document = dataThread.DocumentPDF;
DatiTabella datitab = new DatiTabella();
DataSetS82 set = (DataSetS82)dataThread.Data.DatiSezione;
//calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato
if (document.checkMargin(datitab.GetRowDim() * 7))
document.addPage();
ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();
document.setSezTitolo(Titolo);
document.setChapterHeader(_testointroduttivo);
document.setHeaderSpace(25);
#region Tabella Header (testo: CONTROVALORE E RISCHIO)
//qui mi carico i dati della datatable Header
datitab.table = set.Tables["Header"];
Tabella tabellaHeader = new Tabella(document.getMargineLeft(), document.getLastPos());
tabellaHeader.Header = false;
tabellaHeader.Datasource = datitab.table;
tabellaHeader.DimensioneLinea = 1;
tabellaHeader.Colonne.Add(new Colonna("Descrizione", "", 285, TipoAllineamento.SINISTRA, true, 10, true));
tabellaHeader.Draw(datitab, document);
#endregion
#region Tabella contenente CONTROVALORE e VAR con grafico Slider
datitab = new DatiTabella();
//qui mi carico i dati della datatable DatiSintetici_Dettaglio
datitab.table = set.Tables["DatiSintetici_Dettaglio"];
Tabella tabellaDSD = new Tabella(document.getMargineLeft(), document.getLastPos() + tabellaHeader.AltezzaTabella);
tabellaDSD.Header = false;
tabellaDSD.Datasource = datitab.table;
tabellaDSD.DimensioneLinea = 1;
tabellaDSD.Colonne.Add(new Colonna("Descrizione", "", 175, TipoAllineamento.SINISTRA, true, 8, false));
tabellaDSD.Colonne.Add(new Colonna("Valore", "", 110, TipoAllineamento.DESTRA, true, 8, false));
tabellaDSD.Draw(datitab, document);
//Scrivo il grafico SliderBar
Slider objSlider = new Slider();
objSlider.DatiTabella = datitab;
objSlider.DocumentPDF = document;
objSlider.PositionX = (int)document.getMargineLeft() + 120;
objSlider.PositionY = (int)(document.getLastPos() + datitab.GetRowDim() * 0.38F);
String app = (String) datitab.table.Rows[1]["Valore"];
if (app.Contains("%"))
app=app.Remove(app.LastIndexOf('%'));
if (app.Trim().ToLower() == "n.c.")
objSlider.DrawNoMarcatore();
else
objSlider.Draw(Convert.ToDecimal(app));
#endregion
#region Tabella COPERTURA
datitab = new DatiTabella();
//qui mi carico i dati della datatable DatiSintetici_Dettaglio
datitab.table = set.Tables["DT_Copertura"];
Tabella tabellaCop = new Tabella(document.getMargineLeft(), document.getLastPos() + tabellaHeader.AltezzaTabella +
tabellaDSD.AltezzaTabella + 5);
tabellaCop.Header = false;
tabellaCop.Datasource = datitab.table;
tabellaCop.DimensioneLinea = 1;
tabellaCop.Colonne.Add(new Colonna("Descrizione", "", 175, TipoAllineamento.SINISTRA, false, 8, false));
tabellaCop.Colonne.Add(new Colonna("Valore", "", 110, TipoAllineamento.DESTRA, false, 8, false));
if (tabellaCop.Datasource.Rows.Count > 0)
{
#region Linea di separazione meno marcata
//V
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Line(tabellaCop.X - 5, tabellaCop.Y - 40, tabellaCop.X + 290, tabellaCop.Y - 40, 2F, new RgbColor(232, 236, 237)));
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Line(tabellaCop.X - 5, tabellaCop.Y - 40, tabellaCop.X + 290, tabellaCop.Y - 40, 1F, new RgbColor(232, 236, 237)));
//
#endregion
}
tabellaCop.Draw(datitab, document);
#endregion
#region Linea di separazione piu marcata
if (tabellaCop.Datasource.Rows.Count > 0)
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Line(tabellaCop.X - 5, tabellaCop.Y - 15, tabellaCop.X + 290, tabellaCop.Y - 15, 4F, new RgbColor(232, 236, 237)));
else
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Line(tabellaCop.X - 5, tabellaCop.Y - 40, tabellaCop.X + 290, tabellaCop.Y - 40, 4F, new RgbColor(232, 236, 237)));
#endregion
#region Tabelle PESO PERCENTUALE e RISCHIO RELATIVO
datitab = new DatiTabella();
//qui mi carico i dati della datatable DT_TabellaBassa
datitab.table = set.Tables["DT_TabellaBassa"];
Tabella tabellaBassa;
if (tabellaCop.Datasource.Rows.Count > 0)
tabellaBassa = new Tabella(document.getMargineLeft(), tabellaCop.Y + 30);
else
tabellaBassa = new Tabella(document.getMargineLeft(), tabellaCop.Y);
tabellaBassa.Header = false;
tabellaBassa.SaltoPagina = false;
tabellaBassa.Datasource = datitab.table;
tabellaBassa.DimensioneLinea = 1;
tabellaBassa.Colonne.Add(new Colonna("Descrizione", "", 175, TipoAllineamento.SINISTRA, false, 8, false));
tabellaBassa.Colonne.Add(new Colonna("Valore", "", 110, TipoAllineamento.DESTRA, false, 8, false));
tabellaBassa.Draw(datitab, document);
#endregion
#region Linea di separazione di chiusura sezione
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Line(tabellaBassa.X - 5, tabellaBassa.Y + 5, tabellaBassa.X + 290, tabellaBassa.Y + 5, 2F, new RgbColor(232, 236, 237)));
#endregion
document.setLastPos(130);
//V
dataThread.UltimaSezioneStampata = "S82";
}
public void setTitolo(string label)
{
Titolo = label;
}
#endregion
}