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
}
}