using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PDFGenerator.BusinessLayer.DataSection;
using PDFGenerator.BusinessLayer;
using PDFGenerator.Presentation.Section.Tables;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Text;
using PDFGenerator.Presentation.Section.Charts;
using System.Data;
using ceTe.DynamicPDF;
namespace PDFGenerator.Presentation.Section
{
class S331 : ISezione
{
private string _titolo = string.Empty;
private string _testointroduttivo = string.Empty;
float dim = 0;
///
/// Titolo della sezione
///
public string Titolo
{
get
{
return _titolo;
}
set
{
_titolo = value;
}
}
///
/// Testo introduttivo della Sezione.
///
public string TestoIntroduttivo
{
get
{
return _testointroduttivo;
}
set
{
_testointroduttivo = value;
}
}
public S331()
{
//
// TODO: Add constructor logic here
//
}
public void writeSezione(DataThread dataThread)
{
//DocumentPDF document = dataThread.DocumentPDF;
//document.setSezTitolo(dataThread.SezioneReport.Titolo);
//string tempTesto = dataThread.SezioneReport.TestoIntroduttivo.Replace("/$Banca$/", dataThread.NomeRete);
//string tempTestoAlt = dataThread.SezioneReport.TestoIntroduttivoAlternativo.Replace("/$Banca$/", dataThread.NomeRete);
////if (dataThread.Rete.ToUpper() == "S")
//// {
//// tempTesto = tempTesto.Replace("Banca Fideuram", "Sanpaolo Invest");
//// tempTestoAlt = tempTesto.Replace("Banca Fideuram", "Sanpaolo Invest");
//// }
////setChapterHeader(string label, int x, int width, float font)
//document.setChapterHeader(tempTesto, 0, 520, 8);
//DataSetS331 set = (DataSetS331)dataThread.Data.DatiSezione;
//document.setHeaderSpace(35);
//document.writeText(document.getMargineLeft() - 5, document.getLastPos(), tempTestoAlt, 8, 520, ceTe.DynamicPDF.TextAlign.Justify);
////document.setHeaderSpace(60);
//document.setLastPos(40);
//ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("(*) Grado di copertura: ",5,7,7,7));
//document.addPage();
decimal totalePatrimonioCalcolato = 0;
decimal totaleControvaloreProtettoCalcolato = 0;
//totalePatrimonioCalcolato += Convert.ToDecimal(row["ControvaloreAttuale"]);
//totaleControvaloreProtettoCalcolato += Convert.ToDecimal(row["ControvaloreProtetto"]);
FormatNum conv = new FormatNum();
DocumentPDF document = dataThread.DocumentPDF;
DataSetS331 set = (DataSetS331)dataThread.Data.DatiSezione;
document.setSezTitolo(dataThread.SezioneReport.Titolo);
document.setChapterHeader(dataThread.SezioneReport.TestoIntroduttivo, 0, 520, 8);
float YTable = document.getLastPos();
float XTable = document.getMargineLeft();
DatiTabella datitab = new DatiTabella();
datitab.table = set.Tables["GraficoPiramide"];
datitab.SetRowDim(15);
Tabella tabellaDati = new Tabella(XTable, YTable);
tabellaDati.DimensioneLinea = 0;
tabellaDati.Header = true;
tabellaDati.AltezzaCella = 15;
tabellaDati.Datasource = datitab.table;
tabellaDati.Colonne.Add(new Colonna("areaBisogno", "Area di bisogno", 172, TipoAllineamento.SINISTRA, false, 9, false));
tabellaDati.Colonne.Add(new Colonna("controvalore", "Controvalore (€)", 85, TipoAllineamento.DESTRA,false, 9, false));
tabellaDati.Colonne.Add(new Colonna("controvaloreProtetto", "Controvalore protetto (€)", 90, TipoAllineamento.DESTRA, false, 9, false));
tabellaDati.Colonne.Add(new Colonna("contributoAllaProtezione", "Contributo alla protezione (%)", 165, TipoAllineamento.DESTRA, false, 9, false));
tabellaDati.Draw(datitab, document);
bool notaNeeded = false;
if (notaNeeded)
document.getCurrentPage().Elements.Add(new Label(Resource.Nota_TabellaEmittenti, XTable, YTable + tabellaDati.AltezzaTabella, 500F, 30F, Globals.OpenTypeFontVerdana, 8));
//document.addPage();
IEnumerable queryControvalore =
from controvalore in datitab.table.AsEnumerable()
select controvalore;
foreach (DataRow p in queryControvalore)
{
Console.WriteLine("controvalore letto: " + Convert.ToDecimal(p.Field("controvalore")));
totalePatrimonioCalcolato += Convert.ToDecimal(p.Field("controvalore"));
Console.WriteLine("totalePatrimonioCalcolato: " + totalePatrimonioCalcolato);
}
IEnumerable queryControvaloreProtetto =
from controvaloreProtetto in datitab.table.AsEnumerable()
select controvaloreProtetto;
foreach (DataRow cp in queryControvaloreProtetto)
{
Console.WriteLine("controvaloreprotetto letto: " + Convert.ToDecimal(cp.Field("controvaloreProtetto")));
totaleControvaloreProtettoCalcolato += Convert.ToDecimal(cp.Field("controvaloreProtetto"));
Console.WriteLine("totaleControvaloreProtettoCalcolato: " + totaleControvaloreProtettoCalcolato);
}
#region Piramide
//disegno la parte della piramide
Piramide modello = new Piramide();
modello.writeSezione(document);
#endregion
#region Grafico Istogramma
DatiGrafico dati = new DatiGrafico();
//ripopolo la datitab perché in uscita dalla draw precedente non ha più la quarta colonna che mi serve qui
//datitab.table = set.Tables["GraficoPiramide"];
DataView view = new DataView(datitab.table);
dati.dataTab = view.ToTable(false, "contributoAllaProtezione");
dati.setHeight(185);
//dati.setWidth(123);
dati.setWidth(160);
dati.ActLabelSeries();
//IstoDoppio isto = new IstoDoppio();
IstoDoppio331 isto = new IstoDoppio331();
//document.InsertGrafico(isto.getGrafico(dati), document.getMargineLeft() + 405, document.getLastPos() + 14);
//Istogramma isto = new Istogramma();
document.InsertGrafico(isto.getGrafico(dati),400, document.getLastPos() - 12);
//document.InsertGrafico(isto.getGrafico(dati), document.getMargineLeft() + 380, document.getLastPos() + 14);
#endregion
//intestazione grafico istogramma
ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();
this.headerChart(page, document.getMargineLeft() + 396, document.getLastPos()-6);
#region Totale Patrimonio
float marginePiramide = 37;
float x = document.getMargineLeft();
float y = document.getLastPos() + tabellaDati.AltezzaTabella + marginePiramide + 5;
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("TOTALE PATRIMONIO", x, y, 120, 10, Globals.OpenTypeFontVerdanaB, 9, ceTe.DynamicPDF.TextAlign.Right));
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(totalePatrimonioCalcolato.ToString(), datitab.getX()+135, y, 120, 10, Globals.OpenTypeFontVerdanaB, 9, ceTe.DynamicPDF.TextAlign.Right));
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(totaleControvaloreProtettoCalcolato.ToString(), datitab.getX() + 225, y, 120, 10, Globals.OpenTypeFontVerdanaB, 9, ceTe.DynamicPDF.TextAlign.Right));
//DataSetS331.TotalePatrimonioRow rowDSS331TotalePatrimonio;
//rowDSS331TotalePatrimonio = ds331.TotalePatrimonio.NewTotalePatrimonioRow();
//rowDSS331TotalePatrimonio.Descrizione = "TOTALE PATRIMONIO";
//decimal totalePatrimonio = totalePatrimonioCalcolato;
//rowDSS331TotalePatrimonio.ControValore = conv.ConvertNum(totalePatrimonio);
//decimal totaleControvaloreProtetto = totaleControvaloreProtettoCalcolato;
//rowDSS331TotalePatrimonio.ControvaloreProtetto = conv.ConvertNum(totaleControvaloreProtetto);
//ds331.TotalePatrimonio.AddTotalePatrimonioRow(rowDSS331TotalePatrimonio);
#endregion
//aggiungo la nota incondizionatamente
dim += (datitab.GetRowDim() * datitab.getNumRow()) + 100;
addNota(document);//vedi s134.cs
document.setHeaderSpace(0);
document.addPage();
}
private void addNota(DocumentPDF doc)
{
FormatNum con = new FormatNum();
//doc.setNotaPièDiPagina("(*) Alcuni prodotti non rientrano nel calcolo del rendimento. Il dettaglio del patrimonio non considerato viene fornito nel capitolo ''Patrimonio non rappresentabile''");
//FC 26062015 Aggionamento nuova Ragione Sociale
doc.setSezFooter("(*)Le linee protette ''Fideuram Vita Insieme My Protection 80 Credit Suisse'' e ''Fideuram Vita Insieme My Protection 80 Citigroup'' che lei detiene presso Fideuram, prevedono una protezione del capitale pari all'80% del controvalore massimo raggiunto dalla data di partenza: il ''controvalore protetto'' è stato distribuito sulle aree di bisogno sulla base del peso percentuale del controvalore del singolo fondo, rispetto al controvalore complessivo della linea, disponibile al momento della produzione del report.",dim);
//doc.StampaNote("(*) Alcuni prodotti non rientrano nel calcolo del rendimento. Il dettaglio del patrimonio non considerato viene fornito nel capitolo ''Patrimonio non rappresentabile''");
}
private void headerChart(ceTe.DynamicPDF.Page page, float x, float y)
{
//Header grafico a farfalla
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(x + 100, y + 2, 10, 5, 0, new RgbColor(121, 142, 185)));
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(x + 100, y - 9, 10, 5, 0, new RgbColor(239, 65, 53)));
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Contributo alla protezione (%)", x-30, y, 140, 10, Globals.OpenTypeFontVerdana, 9, ceTe.DynamicPDF.TextAlign.Right));
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Piramide Attuale", x - 25, y - 11, 120, 10, Globals.OpenTypeFontVerdana, 9, ceTe.DynamicPDF.TextAlign.Right));
//////
}
}
}