using System; using System.Collections.Generic; using System.Linq; using System.Text; using PDFGenerator.Presentation.Section.Tables; using PDFGenerator.BusinessLayer.DataSection; using PDFGenerator.BusinessLayer; using System.Data; using ceTe.DynamicPDF.Merger; using PDFGenerator.BusinessLayer.DataSection; using ceTe.DynamicPDF.PageElements; namespace PDFGenerator.Presentation.Section { public class S183 : ISezione { string Titolo = string.Empty; string _testotitolo; string _testointroduttivo; string _testoAlternativo; public int widthImporti = 60; public int widthData = 50; public int fontsize = 6; public int headerFontSize = 5; NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); ImportedPage page; /// /// Testo introduttivo della sezione. /// public string TestoIntroduttivo { get { return _testointroduttivo; } set { _testointroduttivo = value; } } /// /// Testo del titolo della sezione. /// //public string TestoTitolo //{ // get // { // return _testotitolo; // } // set // { // _testotitolo = value; // } //} //public string TestoAlternativo //{ // get { return _testoAlternativo; } // set { _testoAlternativo = value; } //} //public void setTitolo(string label) //{ // Titolo = label; //} public S183() { // // TODO: Add constructor logic here // } #region ISezione Members public void writeSezione(DataThread dataThread) { logger.Info("Inizio sezione S183 metodo writeSezione " + dataThread.CodiceFiscale); DocumentPDF document = dataThread.DocumentPDF; DataSet set = dataThread.Data.DatiSezione; DatiTabella datitab = new DatiTabella(); //datitab.table = set.Tables["dtDettaglioProdottiESG"]; datitab.table = set.Tables["iCapital"]; #region Testo introduttivo tabella // Titolo della sezione logger.Info("Testo della sezione S183" + _testointroduttivo); document.setLastPos(-40); document.setChapterHeader(dataThread.SezioneReport.TestoIntroduttivo, 0, 520, 8); #endregion writeAreaProgetto(dataThread, datitab, set.Tables["iCapital"], document, ""); logger.Info("Fine sezione S183 metodo writeSezione " + dataThread.CodiceFiscale); } /// /// Disegna la tabella per Area Investimento /// Se si ha più di 1 progetto, verrà aggiunta una riga, in grassetto, per ciascun progetto /// come titolo del progetto d'investimento. /// /// /// /// private void writeAreaProgetto(DataThread dataThread, DatiTabella datitab,DataTable datiProgetto, DocumentPDF document, string area) { logger.Info("Inizio sezione S183 metodo writeAreaProgetto " + dataThread.CodiceFiscale); page = document.getCurrentPage(); float ytabella = 0; // unico incremento per la y di tutte le tabelle. float ytabellaDettaglio = 0; Tabella tabellaHeader = null; #region Tabella Header tabellaHeader = new Tabella(document.getMargineLeft(), document.getLastPos()); tabellaHeader.HeaderFont = 8; tabellaHeader.AltezzaCella = 30; tabellaHeader.Header = true; // la gestione dell'header viene fatta manualmente. tabellaHeader.SaltoPagina = false; /* Seleziono solo l'intestazione */ DataView viewHeader = new DataView(datitab.table); viewHeader.RowFilter = ("CodArea = 'xxx'"); datitab.table = viewHeader.ToTable(); datitab.table.Rows.Add(datitab.table.NewRow()); // serve per far scrivere l'intestazione. int fontdim = 8; tabellaHeader.Colonne.Add(new Colonna("ContrattoSGR", "Contratto/SGR", 70, TipoAllineamento.SINISTRA, false, fontdim, false)); //tabellaHeader.Colonne.Add(new Colonna("", " ", 10, TipoAllineamento.DESTRA, false, fontdim, false, TipoColonna.IMMAGINE)); tabellaHeader.Colonne.Add(new Colonna("NomeProdotto", "Nome prodotto", 80, TipoAllineamento.SINISTRA, false, fontdim, false)); tabellaHeader.Colonne.Add(new Colonna("DataInizio", "Data di sottoscrizione", 80, TipoAllineamento.DESTRA, false, fontdim, false)); tabellaHeader.Colonne.Add(new Colonna("Totale", "Totale
commitment (€)", 100, TipoAllineamento.DESTRA, false, fontdim, false)); tabellaHeader.Colonne.Add(new Colonna("ImportoVersato", "Importo
versato (€)", 100, TipoAllineamento.DESTRA, false, fontdim, false)); tabellaHeader.Colonne.Add(new Colonna("ImportoDaVersare", "Importo
da versare (€)", 100, TipoAllineamento.DESTRA, false, fontdim, false)); //--MIFID2 datitab.setCellSpace(0); //Scrive la tabellaHeader tabellaHeader.Draw(datitab, document, true); ytabella += tabellaHeader.AltezzaTabella; #endregion #region Tabella Dati di Raggruppamento DatiTabella datiTabProgetto = new DatiTabella(); datiTabProgetto.table = datiProgetto.Copy(); var soloProgetti = datiProgetto.AsEnumerable().Select(s => s.Field("CodiceContratto")).Distinct().ToList(); foreach (var riga in soloProgetti) { if (riga != string.Empty) { /* Inseirsco la tabella con solo il Progetto interessato */ DataView viewProgetti = new DataView(datiProgetto); viewProgetti.RowFilter = ("CodArea = '' and CodiceContratto = '" + riga + "'"); datiTabProgetto.table = viewProgetti.ToTable(); // TABELLA TITOLO DEL PROGETTO Tabella tabellaTitoloProgetto = new Tabella(document.getMargineLeft(), document.getLastPos() + ytabella + ytabellaDettaglio); tabellaTitoloProgetto.HeaderFont = 7; tabellaTitoloProgetto.Header = false; tabellaTitoloProgetto.SaltoPagina = false; tabellaTitoloProgetto.Datasource = datiTabProgetto.table; tabellaTitoloProgetto.LineeTabella = true; tabellaTitoloProgetto.LineaFineTabella = true; tabellaTitoloProgetto.Colonne.Add(new Colonna("CodiceContratto", "", 530, TipoAllineamento.SINISTRA, false, fontdim, false)); datiTabProgetto.setCellSpace(0); //datiTabProgetto.setAlternRet(); tabellaTitoloProgetto.Draw(datiTabProgetto, document); ytabella += tabellaTitoloProgetto.AltezzaTabella; /* Inserisco il dettaglio del progetto interessato */ DatiTabella datiProdotti = new DatiTabella(); DataView viewProdotti = new DataView(datiProgetto); viewProdotti.RowFilter = ("ContrattoSGR <> '' and CodiceContratto = '" + riga + "'"); datiProdotti.table = viewProdotti.ToTable(); Tabella TabellaProdotti = new Tabella(document.getMargineLeft(), document.getLastPos() + ytabella + ytabellaDettaglio); TabellaProdotti.Header = false; TabellaProdotti.HeaderFont = 7; TabellaProdotti.AltezzaCella = 20; TabellaProdotti.SaltoPagina = false; TabellaProdotti.Datasource = datiProdotti.table; TabellaProdotti.LineeTabella = true; TabellaProdotti.LineaFineTabella = true; TabellaProdotti.Colonne.Add(new Colonna("ContrattoSGR", "Contratto/SGR", 70, TipoAllineamento.SINISTRA, false, fontdim, false)); TabellaProdotti.Colonne.Add(new Colonna("NomeProdotto", "Nome prodotto", 80, TipoAllineamento.SINISTRA, false, fontdim, false)); TabellaProdotti.Colonne.Add(new Colonna("DataInizio", "Data di sottoscrizione", 80, TipoAllineamento.DESTRA, false, fontdim, false)); TabellaProdotti.Colonne.Add(new Colonna("Totale", "Totale commitment (€)", 100, TipoAllineamento.DESTRA, false, fontdim, false)); TabellaProdotti.Colonne.Add(new Colonna("ImportoVersato", "Importo versato (€)", 100, TipoAllineamento.DESTRA, false, fontdim, false)); TabellaProdotti.Colonne.Add(new Colonna("ImportoDaVersare", "Importo da versare (€)", 100, TipoAllineamento.DESTRA, false, fontdim, false)); datitab.setCellSpace(0); //Scrive la TabellaProgetti TabellaProdotti.Draw(datiProdotti, document, true); ytabellaDettaglio += TabellaProdotti.AltezzaTabella; ytabella += 2; //break; } } #endregion logger.Info("Fine sezione S183 metodo writeAreaProgetto " + dataThread.CodiceFiscale); } #endregion } }