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; 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; //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"]; 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. document.setLastPos(TabellaHeader.AltezzaTabella + TabellaVaRMassimoProfiloFinanziario.AltezzaTabella + TabellaVaR.AltezzaTabella + TabellaCopertura.AltezzaTabella); } } }