using System;
using System.Collections.Generic;
using System.Text;
using ceTe.DynamicPDF.Merger;
using PDFGenerator.BusinessLayer.DataSection;
using PDFGenerator.Presentation.Section.Tables;
using PDFGenerator.BusinessLayer;
using System.Data;
using ceTe.DynamicPDF.PageElements;
using ContrattoSei.Utilities;
using PDFGenerator.BusinessLayer.Utils;
namespace PDFGenerator.Presentation.Section
{
class S80BIS : ISezione
{
string Titolo = string.Empty;
string _testointroduttivo;
///
/// Testo che introduce la sezione.
///
public string TestoIntroduttivo
{
get { return _testointroduttivo; }
set { _testointroduttivo = value; }
}
///
/// Setta il titolo.
///
///
public void setTitolo(string label)
{
Titolo = label;
}
public S80BIS()
{
//
// TODO: Add constructor logic here
//
}
public void writeSezione(DataThread dataThread)
{
DocumentPDF document = dataThread.DocumentPDF;
DatiTabella datitab;
DataSetS80BIS set = (DataSetS80BIS)dataThread.Data.DatiSezione;
string labelText2nd = SimpleTextGenerator.ProduceText(this, "S80BisBottomLbl", dataThread, null);
//20180917 AC
labelText2nd = labelText2nd.Replace("*", "(*)");
//--20180917
//setta la datatable che contiene i dati per disegnare la tabella Dati
datitab = new DatiTabella();
datitab.table = set.Tables["VaRMassimoProfiloFinanziario"];
int nFasi = Convert.ToInt32(datitab.table.Rows[0]["NumeroFasi"]); //il valore è uguale in tutte le righe
datitab.table.Columns.Remove("NumeroFasi");// rimuovo la colonna, non va stampata
string captionFase1 = datitab.table.Columns["Fase1"].Caption;
string captionFase2 = datitab.table.Columns["Fase2"].Caption;
string captionFase3 = datitab.table.Columns["Fase3"].Caption;
// Aggiungo una pagina se la tabella non entra nella corrente.
if (document.checkMargin(130))
document.addPage();
//document.setSezTitolo(Titolo);
document.setLastPos(-40);
document.setChapterHeader(_testointroduttivo, 0, 520, 8);
#region Disegno Tabella Header
DataView viewHeader = new DataView(datitab.table);
DataRow rowTemplate = datitab.table.Rows[0];
viewHeader.RowFilter = ("Fase1 = 'xxx'");
datitab.table = viewHeader.ToTable();
datitab.table.Rows.Add(datitab.table.NewRow()); // serve solo per far scrivere l'intestazione.
Tabella TabellaHeader = new Tabella();
TabellaHeader.X = document.getMargineLeft();
TabellaHeader.Y = document.getLastPos();
TabellaHeader.AltezzaCella = 30;
TabellaHeader.SaltoPagina = false;
TabellaHeader.Datasource = datitab.table;
TabellaHeader.Header = true; // la gestione dell'header viene fatta manualmente.
TabellaHeader.HeaderFont = 8;
int larghezzaColonnaDescrizione = 512; //è variabile e da calcolare in base allo spazio disponibile
int larghezzaColonnaFase1 = 130;
int larghezzaColonnaFase2 = 150;
int larghezzaColonnaFase3 = 130;
int larghezzaUltimaColonna = 0;
// Definizione delle colonne
foreach (DataColumn column in TabellaHeader.Datasource.Columns)
{
if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty)
{
larghezzaColonnaDescrizione -= larghezzaColonnaFase1;
larghezzaUltimaColonna = larghezzaColonnaFase1;
TabellaHeader.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1, TipoAllineamento.DESTRA, false, 8, false));
}
if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty)
{
larghezzaColonnaDescrizione -= larghezzaColonnaFase2;
larghezzaUltimaColonna = larghezzaColonnaFase2;
TabellaHeader.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2, TipoAllineamento.DESTRA, false, 8, false));
}
if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty)
{
larghezzaColonnaDescrizione -= larghezzaColonnaFase3;
larghezzaUltimaColonna = larghezzaColonnaFase3;
TabellaHeader.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3, TipoAllineamento.DESTRA, false, 8, false));
}
}
TabellaHeader.Colonne.Insert(0, new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, false, 8, false));
TabellaHeader.Draw(datitab, document);
#endregion
#region Disegno Tabella VaRMassimoProfiloFinanziario
datitab = new DatiTabella();
datitab.table = set.Tables["VaRMassimoProfiloFinanziario"];
Tabella TabellaVaRMassimoProfiloFinanziario = new Tabella();
TabellaVaRMassimoProfiloFinanziario.X = document.getMargineLeft();
TabellaVaRMassimoProfiloFinanziario.Y = document.getLastPos() + TabellaHeader.AltezzaTabella;
TabellaVaRMassimoProfiloFinanziario.SaltoPagina = false;
TabellaVaRMassimoProfiloFinanziario.Datasource = datitab.table;
larghezzaColonnaDescrizione = 512;
// Definizione delle colonne
foreach (DataColumn column in TabellaHeader.Datasource.Columns)
{
if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty)
{
larghezzaColonnaDescrizione -= larghezzaColonnaFase1;
larghezzaUltimaColonna = larghezzaColonnaFase1;
TabellaVaRMassimoProfiloFinanziario.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1 -25, TipoAllineamento.DESTRA, true, 8, false)); // -25 è la larghezza della colonna che conterrà l'immagine
TabellaVaRMassimoProfiloFinanziario.Colonne.Add(new Colonna("IMAGE_Fase1", string.Empty, 25, TipoAllineamento.DESTRA, false, 8, false, TipoColonna.IMMAGINE));
}
if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty)
{
larghezzaColonnaDescrizione -= larghezzaColonnaFase2;
larghezzaUltimaColonna = larghezzaColonnaFase2;
TabellaVaRMassimoProfiloFinanziario.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2 -25, TipoAllineamento.DESTRA, true, 8, false));// -25 è la larghezza della colonna che conterrà l'immagine
TabellaVaRMassimoProfiloFinanziario.Colonne.Add(new Colonna("IMAGE_Fase2", string.Empty, 25, TipoAllineamento.DESTRA, false, 8, false, TipoColonna.IMMAGINE));
}
if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty)
{
larghezzaColonnaDescrizione -= larghezzaColonnaFase3;
larghezzaUltimaColonna = larghezzaColonnaFase3;
TabellaVaRMassimoProfiloFinanziario.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3 - 25, TipoAllineamento.DESTRA, true, 8, false));// -25 è la larghezza della colonna che conterrà l'immagine
TabellaVaRMassimoProfiloFinanziario.Colonne.Add(new Colonna("IMAGE_Fase3", string.Empty, 25, TipoAllineamento.DESTRA, false, 8, false, TipoColonna.IMMAGINE));
}
}
TabellaVaRMassimoProfiloFinanziario.Colonne.Insert(0,new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, true, 8, false));
TabellaVaRMassimoProfiloFinanziario.Draw(datitab, document);
#endregion
#region Disegno Tabella VaR
datitab = new DatiTabella();
datitab.table = set.Tables["VaR"];
if (!string.IsNullOrEmpty(labelText2nd) && set.Tables["VaR"].Rows.Count > 0)
{
set.Tables["VaR"].Rows[0]["Descrizione"] += "*";
}
Tabella TabellaVaR = new Tabella();
TabellaVaR.X = document.getMargineLeft();
TabellaVaR.Y = document.getLastPos() + TabellaHeader.AltezzaTabella + TabellaVaRMassimoProfiloFinanziario.AltezzaTabella;
TabellaVaR.SaltoPagina = false;
TabellaVaR.Datasource = datitab.table;
larghezzaColonnaDescrizione = 512;
// Definizione delle colonne
foreach (DataColumn column in TabellaHeader.Datasource.Columns)
{
if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty)
{
larghezzaColonnaDescrizione -= larghezzaColonnaFase1;
larghezzaUltimaColonna = larghezzaColonnaFase1;
TabellaVaR.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1 - 25, TipoAllineamento.DESTRA, true, 8, true)); // -25 è la larghezza della colonna che conterrà l'immagine
TabellaVaR.Colonne.Add(new Colonna("IMAGE_Fase1", string.Empty, 25, TipoAllineamento.DESTRA, true, 8, true, TipoColonna.IMMAGINE));
}
if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty)
{
larghezzaColonnaDescrizione -= larghezzaColonnaFase2;
larghezzaUltimaColonna = larghezzaColonnaFase2;
TabellaVaR.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2 - 25, TipoAllineamento.DESTRA, true, 8, true));// -25 è la larghezza della colonna che conterrà l'immagine
TabellaVaR.Colonne.Add(new Colonna("IMAGE_Fase2", string.Empty, 25, TipoAllineamento.DESTRA, true, 8, true, TipoColonna.IMMAGINE));
}
if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty)
{
larghezzaColonnaDescrizione -= larghezzaColonnaFase3;
larghezzaUltimaColonna = larghezzaColonnaFase3;
TabellaVaR.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3 - 25, TipoAllineamento.DESTRA, true, 8, true));// -25 è la larghezza della colonna che conterrà l'immagine
TabellaVaR.Colonne.Add(new Colonna("IMAGE_Fase3", string.Empty, 25, TipoAllineamento.DESTRA, true, 8, true, TipoColonna.IMMAGINE));
}
}
TabellaVaR.Colonne.Insert(0, new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, true, 8, true));
TabellaVaR.Draw(datitab, document);
#endregion
#region Disegno Tabella Copertura
datitab = new DatiTabella();
datitab.table = set.Tables["Copertura"];
Tabella TabellaCopertura = new Tabella();
TabellaCopertura.X = document.getMargineLeft();
TabellaCopertura.Y = document.getLastPos() + TabellaHeader.AltezzaTabella + TabellaVaRMassimoProfiloFinanziario.AltezzaTabella + TabellaVaR.AltezzaTabella;
TabellaCopertura.SaltoPagina = false;
TabellaCopertura.Datasource = datitab.table;
larghezzaColonnaDescrizione = 512;
// Definizione delle colonne
foreach (DataColumn column in TabellaHeader.Datasource.Columns)
{
if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty)
{
larghezzaColonnaDescrizione -= larghezzaColonnaFase1;
larghezzaUltimaColonna = larghezzaColonnaFase1;
TabellaCopertura.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1 - 25, TipoAllineamento.DESTRA, false, 8, false)); // -25 è la larghezza della colonna che conterrà l'immagine
TabellaCopertura.Colonne.Add(new Colonna("IMAGE_Fase1", string.Empty, 25, TipoAllineamento.DESTRA, false, 8, false, TipoColonna.IMMAGINE));
}
if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty)
{
larghezzaColonnaDescrizione -= larghezzaColonnaFase2;
larghezzaUltimaColonna = larghezzaColonnaFase2;
TabellaCopertura.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2 - 25, TipoAllineamento.DESTRA, false, 8, false));// -25 è la larghezza della colonna che conterrà l'immagine
TabellaCopertura.Colonne.Add(new Colonna("IMAGE_Fase2", string.Empty, 25, TipoAllineamento.DESTRA, false, 8, false, TipoColonna.IMMAGINE));
}
if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty)
{
larghezzaColonnaDescrizione -= larghezzaColonnaFase3;
larghezzaUltimaColonna = larghezzaColonnaFase3;
TabellaCopertura.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3 - 25, TipoAllineamento.DESTRA, false, 8, false));// -25 è la larghezza della colonna che conterrà l'immagine
TabellaCopertura.Colonne.Add(new Colonna("IMAGE_Fase3", string.Empty, 25, TipoAllineamento.DESTRA, false, 8, false, TipoColonna.IMMAGINE));
}
}
TabellaCopertura.Colonne.Insert(0, new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, false, 8, false));
TabellaCopertura.Draw(datitab, document);
#endregion
// Marian
//////////////////////////////
#region Disegno Tabella RiskClassMax
datitab = new DatiTabella();
datitab.table = set.Tables["RiskClassMax"];
Tabella TabellaRiskClassMax = new Tabella();
TabellaRiskClassMax.X = document.getMargineLeft();
TabellaRiskClassMax.Y = document.getLastPos() + TabellaHeader.AltezzaTabella + TabellaVaRMassimoProfiloFinanziario.AltezzaTabella + TabellaVaR.AltezzaTabella + TabellaCopertura.AltezzaTabella;
TabellaRiskClassMax.SaltoPagina = false;
TabellaRiskClassMax.Datasource = datitab.table;
larghezzaColonnaDescrizione = 512;
// Definizione delle colonne
foreach (DataColumn column in TabellaHeader.Datasource.Columns)
{
if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty)
{
larghezzaColonnaDescrizione -= larghezzaColonnaFase1;
larghezzaUltimaColonna = larghezzaColonnaFase1;
TabellaRiskClassMax.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1 - 25, TipoAllineamento.DESTRA, true, 8, false)); // -25 è la larghezza della colonna che conterrà l'immagine
TabellaRiskClassMax.Colonne.Add(new Colonna("IMAGE_Fase1", string.Empty, 25, TipoAllineamento.DESTRA, true, 8, false, TipoColonna.IMMAGINE));
}
if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty)
{
larghezzaColonnaDescrizione -= larghezzaColonnaFase2;
larghezzaUltimaColonna = larghezzaColonnaFase2;
TabellaRiskClassMax.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2 - 25, TipoAllineamento.DESTRA, true, 8, false));// -25 è la larghezza della colonna che conterrà l'immagine
TabellaRiskClassMax.Colonne.Add(new Colonna("IMAGE_Fase2", string.Empty, 25, TipoAllineamento.DESTRA, true, 8, false, TipoColonna.IMMAGINE));
}
if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty)
{
larghezzaColonnaDescrizione -= larghezzaColonnaFase3;
larghezzaUltimaColonna = larghezzaColonnaFase3;
TabellaRiskClassMax.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3 - 25, TipoAllineamento.DESTRA, true, 8, false));// -25 è la larghezza della colonna che conterrà l'immagine
TabellaRiskClassMax.Colonne.Add(new Colonna("IMAGE_Fase3", string.Empty, 25, TipoAllineamento.DESTRA, true, 8, false, TipoColonna.IMMAGINE));
}
}
TabellaRiskClassMax.Colonne.Insert(0, new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, true, 8, false));
TabellaRiskClassMax.Draw(datitab, document);
#endregion
#region Disegno Tabella RiskClass
datitab = new DatiTabella();
datitab.table = set.Tables["RiskClass"];
Tabella TabellaRiskClass = new Tabella();
TabellaRiskClass.X = document.getMargineLeft();
TabellaRiskClass.Y = document.getLastPos() + TabellaHeader.AltezzaTabella + TabellaVaRMassimoProfiloFinanziario.AltezzaTabella + TabellaVaR.AltezzaTabella + TabellaCopertura.AltezzaTabella + TabellaRiskClassMax.AltezzaTabella;
TabellaRiskClass.SaltoPagina = false;
TabellaRiskClass.Datasource = datitab.table;
larghezzaColonnaDescrizione = 512;
// Definizione delle colonne
foreach (DataColumn column in TabellaHeader.Datasource.Columns)
{
if (column.ColumnName.ToLower() == "fase1" && rowTemplate["fase1"].ToString() != string.Empty)
{
larghezzaColonnaDescrizione -= larghezzaColonnaFase1;
larghezzaUltimaColonna = larghezzaColonnaFase1;
TabellaRiskClass.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase1 - 25, TipoAllineamento.DESTRA, true, 8, true)); // -25 è la larghezza della colonna che conterrà l'immagine
TabellaRiskClass.Colonne.Add(new Colonna("IMAGE_Fase1", string.Empty, 25, TipoAllineamento.DESTRA, false, 8, true, TipoColonna.IMMAGINE));
}
if (column.ColumnName.ToLower() == "fase2" && rowTemplate["fase2"].ToString() != string.Empty)
{
larghezzaColonnaDescrizione -= larghezzaColonnaFase2;
larghezzaUltimaColonna = larghezzaColonnaFase2;
TabellaRiskClass.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase2 - 25, TipoAllineamento.DESTRA, true, 8, true));// -25 è la larghezza della colonna che conterrà l'immagine
TabellaRiskClass.Colonne.Add(new Colonna("IMAGE_Fase2", string.Empty, 25, TipoAllineamento.DESTRA, false, 8, true, TipoColonna.IMMAGINE));
}
if (column.ColumnName.ToLower() == "fase3" && rowTemplate["fase3"].ToString() != string.Empty)
{
larghezzaColonnaDescrizione -= larghezzaColonnaFase3;
larghezzaUltimaColonna = larghezzaColonnaFase3;
TabellaRiskClass.Colonne.Add(new Colonna(column.ColumnName, column.Caption, larghezzaColonnaFase3 - 25, TipoAllineamento.DESTRA, true, 8, true));// -25 è la larghezza della colonna che conterrà l'immagine
TabellaRiskClass.Colonne.Add(new Colonna("IMAGE_Fase3", string.Empty, 25, TipoAllineamento.DESTRA, false, 8, true, TipoColonna.IMMAGINE));
}
}
TabellaRiskClass.Colonne.Insert(0, new Colonna("Descrizione", "", larghezzaColonnaDescrizione, TipoAllineamento.SINISTRA, true, 8, true));
TabellaRiskClass.Draw(datitab, document);
#endregion
//////////////////////////////
#region Disegno riquadro su Situazione Corrente e freccia
//// riquadro intorno la colonna Situazione Corrente
ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();
// riquadro intorno la colonna Situazione Corrente
float xRiquadro = 528 - larghezzaUltimaColonna + (larghezzaUltimaColonna / 2);
Rectangle rettangoloSuSituazioneCorrente;
if (TabellaCopertura.Datasource.Rows.Count > 0)
//rettangoloSuSituazioneCorrente = new Rectangle(xRiquadro, TabellaHeader.Y - 10, 95, TabellaHeader.AltezzaTabella + TabellaVaRMassimoProfiloFinanziario.AltezzaTabella + TabellaVaR.AltezzaTabella + TabellaCopertura.AltezzaTabella - 30);
// MZ 04-05-2010: Change the rectange hight according to adding the new two rows.
rettangoloSuSituazioneCorrente = new Rectangle(xRiquadro, TabellaHeader.Y - 10, 95, TabellaHeader.AltezzaTabella + TabellaVaRMassimoProfiloFinanziario.AltezzaTabella + TabellaVaR.AltezzaTabella + TabellaCopertura.AltezzaTabella + TabellaRiskClassMax.AltezzaTabella + TabellaRiskClass.AltezzaTabella - 30);
else
rettangoloSuSituazioneCorrente = new Rectangle(xRiquadro, TabellaHeader.Y - 10, 95, TabellaHeader.AltezzaTabella + TabellaVaRMassimoProfiloFinanziario.AltezzaTabella + TabellaVaR.AltezzaTabella + TabellaRiskClassMax.AltezzaTabella + TabellaRiskClass.AltezzaTabella - 30);
rettangoloSuSituazioneCorrente.CornerRadius = 5;
page.Elements.Add(rettangoloSuSituazioneCorrente);
//Freccia
System.Reflection.Assembly thisExe;
thisExe = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream file = thisExe.GetManifestResourceStream(UtilityManager.getAppSetting("FrecciaS80"));
switch (nFasi)
{
case 2: // Una freccia tra "attivazione monitoraggio" e "situazione corrente"
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(file, document.getMargineLeft() + 395, TabellaHeader.Y - 10, 0.57F));
break;
case 3: // Una freccia tra "attivazione monitoraggio" e "precedente invio report" e tra "precedente invio report" e "situazione corrente"
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(file, document.getMargineLeft() + 245, TabellaHeader.Y - 10, 0.57F));
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(file, document.getMargineLeft() + 395, TabellaHeader.Y - 10, 0.57F));
break;
default:
break;
}
#endregion
// imposto l'ultima posizione scrivibile.
if (!string.IsNullOrEmpty(labelText2nd))
{
var lastPos = TabellaHeader.AltezzaTabella + TabellaVaRMassimoProfiloFinanziario.AltezzaTabella + TabellaVaR.AltezzaTabella + TabellaCopertura.AltezzaTabella - 5;
if (lastPos + (int)Math.Ceiling(TabellaHeader.Y) > 705)
lastPos -= 17;
document.setLastPos(lastPos);
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(labelText2nd, document.getMargineLeft(), document.getLastPos(), 510, 70, Globals.OpenTypeFontVerdana, 6,ceTe.DynamicPDF.TextAlign.Justify));
document.setLastPos(TabellaHeader.AltezzaTabella + TabellaVaRMassimoProfiloFinanziario.AltezzaTabella + TabellaVaR.AltezzaTabella + TabellaCopertura.AltezzaTabella + 20);
}
}
}
}