using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PDFGenerator.Presentation.Section;
using PDFGenerator;
using PDFGenerator.Presentation.Section.Tables;
using PDFGenerator.Presentation.Section.Charts;
using PDFGenerator.BusinessLayer;
using PDFGenerator.BusinessLayer.DataSection;
using System.Data;
using ceTe.DynamicPDF;
namespace PDFGenerator.Presentation.Section
{
public class FD200 : SIstogramma, ISezione
{
string Titolo = string.Empty;
string _testotitolo;
string _testointroduttivo;
string _testoAlternativo;
NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
public FD200()
{
//
// TODO: Add constructor logic here
//
}
///
/// 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 void writeSezione(DataThread dataThread)
{
DocumentPDF document = dataThread.DocumentPDF;
DatiTabella datiHeaderCaratteristiche = new DatiTabella();
DatiTabella datiAsset = new DatiTabella();
Tabella tab = new Tabella(document.getMargineLeft(), document.getLastPos());
DataSet set = dataThread.Data.DatiSezione;
// Titolo della sezione
logger.Info("Titolo della sezione FD200 " + _testointroduttivo);
document.setLastPos(-40);
document.setChapterHeader(string.Concat(_testointroduttivo.Replace("/$Banca$/", dataThread.NomeRete), "
"), 0, 520, 8);
#region Sezione per stampare solo l'header della tabella
logger.Info("Scrittura di solo header della tabella Titolo della seconda tabella " + _testointroduttivo);
DataSet _ds = new DataSet();
DataTable _dt = new DataTable();
_dt.Columns.Add("Asset Class", typeof(System.String));
_dt.Columns.Add("Portafoglio modello (%)", typeof(System.String));
_dt.Columns.Add("Portafoglio attuale (%)", typeof(System.String));
_ds.Tables.Add(_dt);
DataRow dr = _dt.NewRow();
dr[0] = "";
dr[1] = "";
dr[2] = "";
_dt.Rows.Add(dr);
datiHeaderCaratteristiche.table = _ds.Tables[0];
datiHeaderCaratteristiche.setY(document.getLastPos() + 10);
datiHeaderCaratteristiche.setX(document.getMargineLeft());
datiHeaderCaratteristiche.setHeader(true);
datiHeaderCaratteristiche.setCellSpace(10);
datiHeaderCaratteristiche.setCell(150, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, false);
datiHeaderCaratteristiche.setCell(150, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, false);
datiHeaderCaratteristiche.setCell(150, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, false);
tab.ColoreDirectBankB = "green";
document.InsertTable(tab.getTabella(datiHeaderCaratteristiche));
ceTe.DynamicPDF.Merger.ImportedPage page1 = document.getCurrentPage();
#endregion
#region Grafico Portafoglio modello
logger.Info("FD200 - Inizio impostazione grafico Portafoglio modello");
List listaValoriPesoRelativo = new List();
foreach (var item in set.Tables["AssetClass"].AsEnumerable())
{
IValoriSerie IvaloriSeriePesoRelativo = new IValoriSerie();
IvaloriSeriePesoRelativo.chiave = item[0].ToString();
IvaloriSeriePesoRelativo.valore = Convert.ToDecimal(item[4]);
IvaloriSeriePesoRelativo.colore = System.Drawing.Color.FromArgb((int)item["Red"], (int)item["Green"], (int)item["Blue"]);
listaValoriPesoRelativo.Add(IvaloriSeriePesoRelativo);
}
////double altezzaGraficoPesoRischio_Prodotto = 15 * (tabellaDati.Datasource.Rows.Count + 0.5);
IstoFarfallaS133BIS graficoCaratteristiche = new IstoFarfallaS133BIS(320, 440); //92 //85 750 //158 //200 //300
graficoCaratteristiche.DocumentPDF = document;
graficoCaratteristiche.PositionX = 200; //145
graficoCaratteristiche.PositionY = Convert.ToInt32(document.getLastPos() + 22); //32 //38 //42 //542 //22;
graficoCaratteristiche.AxisY_LineColor = true;
graficoCaratteristiche.AxisY_Hide = true; //false;
graficoCaratteristiche.AxysX_Increment = Convert.ToDecimal(1);
graficoCaratteristiche.AxisY_DashStyle = Dundas.Charting.WebControl.ChartDashStyle.DashDot;
graficoCaratteristiche.isShadowOffset = false; // Abilita l'ombreggiatura delle barre per ESG è fissato a 40
graficoCaratteristiche.isPixelPointWidth = "40"; // serve per dimensionare l'altezza delle barre
graficoCaratteristiche.BorderLineColor = System.Drawing.Color.FromArgb(0, 0, 0);
graficoCaratteristiche.BorderLineWidth = 10;
SerieIstoFarfallaS133BIS seriePesoRelativo = new SerieIstoFarfallaS133BIS();
seriePesoRelativo = new SerieIstoFarfallaS133BIS();
seriePesoRelativo.Name = "Caratteristiche%";
seriePesoRelativo.Values = listaValoriPesoRelativo;
//seriePesoRelativo.ElementPosition = new Dundas.Charting.WebControl.ElementPosition(1F, -5F, 50.7F, 105F);
seriePesoRelativo.ElementPosition = new Dundas.Charting.WebControl.ElementPosition(1F, -5F, 50.7F, 120F); // ultimo parametro per aumentare lo spazio tra le barre
seriePesoRelativo.AxisY_CustumizedByValues = false;
seriePesoRelativo.ReverseAxisY = false;
seriePesoRelativo.Axisy_Interval = 10;
graficoCaratteristiche.SerieList.Add(seriePesoRelativo);
logger.Info("FD200 - Inizio scrittura Portafoglio modello");
// Disegno il grafico
graficoCaratteristiche.Draw(); //// Pino Test 15/09/2022
logger.Info("FD200 - Fine grafico Portafoglio modello ");
#endregion
#region Grafico Portafoglio Attuale
logger.Info("FD200 - Inizio impostazione grafico Portafoglio Attuale");
List listaValoriPortafoglioAttuale = new List();
foreach (var item in set.Tables["AssetClass"].AsEnumerable())
{
IValoriSerie IvaloriSeriePesoRelativo = new IValoriSerie();
IvaloriSeriePesoRelativo.chiave = item[0].ToString();
IvaloriSeriePesoRelativo.valore = Convert.ToDecimal(item[3]);
IvaloriSeriePesoRelativo.colore = System.Drawing.Color.FromArgb((int)item["Red"], (int)item["Green"], (int)item["Blue"]);
listaValoriPortafoglioAttuale.Add(IvaloriSeriePesoRelativo);
}
IstoFarfallaS133BIS graficoPortafoglioAttuale = new IstoFarfallaS133BIS(320, 200); //92 //85 //750 158
graficoPortafoglioAttuale.DocumentPDF = document;
graficoPortafoglioAttuale.PositionX = 360;
graficoPortafoglioAttuale.PositionY = Convert.ToInt32(document.getLastPos() + 22); //32 //38 //42 //542;
graficoPortafoglioAttuale.AxisY_LineColor = true;
graficoPortafoglioAttuale.AxisY_Hide = true; //false;
graficoPortafoglioAttuale.AxysX_Increment = Convert.ToDecimal(1);
graficoPortafoglioAttuale.AxisY_DashStyle = Dundas.Charting.WebControl.ChartDashStyle.DashDot;
graficoPortafoglioAttuale.isShadowOffset = false; // Abilita l'ombreggiatura delle barre per ESG è fissato a 40
graficoPortafoglioAttuale.isPixelPointWidth = "40"; // serve per dimensionare l'altezza delle barre
graficoPortafoglioAttuale.BorderLineColor = System.Drawing.Color.FromArgb(0, 0, 0);
graficoPortafoglioAttuale.BorderLineWidth = 10;
SerieIstoFarfallaS133BIS seriePortafoglioAttuale = new SerieIstoFarfallaS133BIS();
seriePortafoglioAttuale = new SerieIstoFarfallaS133BIS();
seriePortafoglioAttuale.Name = "PortafoglioAttuale%";
seriePortafoglioAttuale.Values = listaValoriPortafoglioAttuale;
//seriePesoRelativo.ElementPosition = new Dundas.Charting.WebControl.ElementPosition(1F, -5F, 50.7F, 105F);
seriePortafoglioAttuale.ElementPosition = new Dundas.Charting.WebControl.ElementPosition(1F, -5F, 50.7F, 120F); // ultimo parametro per aumentare lo spazio tra le barre
seriePortafoglioAttuale.AxisY_CustumizedByValues = false;
seriePortafoglioAttuale.ReverseAxisY = false;
seriePortafoglioAttuale.Axisy_Interval = 10;
graficoPortafoglioAttuale.SerieList.Add(seriePortafoglioAttuale);
logger.Info("FD200 - Inizio scrittura Portafoglio Attuale");
// Disegno il grafico
graficoPortafoglioAttuale.Draw(); //// Pino Test 15/09/2022
logger.Info("FD200 - Fine grafico Portafoglio Attuale ");
#endregion
// Inserisco riga bianca per effetto distanziatore
logger.Info("Inizio inserimento riga bianca sotto caratteristiche");
page1.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft(), document.getLastPos() + 22, 500, 6, 0, new RgbColor(255, 255, 255)));
ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft(), document.getLastPos() + 168, 500, 6, 0, new RgbColor(255, 255, 255)));
#region Elenco Asset
/****** Inserimento tabella con le due colonne e con la colonna delle Caratteristiche riempita ********/
logger.Info("Inizio inserimento tabella Asset");
datiAsset.table = set.Tables["AssetClass"];
Tabella tabellaMacroAsset = new Tabella(document.getMargineLeft(), document.getLastPos() + 75, 0, -2, 0.009F); //90 68 78 //60
tabellaMacroAsset.Datasource = datiAsset.table;
tabellaMacroAsset.Header = false;
tabellaMacroAsset.DimensioneLinea = 0;
tabellaMacroAsset.AltezzaCella = 25; //35; //20
tabellaMacroAsset.Colonne.Add(new Colonna("AssetClassName", "Asset Class", 150, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.TESTO));
tabellaMacroAsset.Draw(datiAsset, document);
logger.Info("Fine inserimento tabella Asset");
/***********************************************************************************************************/
#endregion
}
public void writeSezioneFD200(DataThread dataThread)
{
DocumentPDF document = dataThread.DocumentPDF;
DatiTabella datiHeaderCaratteristiche = new DatiTabella();
DatiTabella datiAsset = new DatiTabella();
Tabella tab = new Tabella(document.getMargineLeft(), document.getLastPos());
DataSet set = dataThread.Data.DatiSezione;
tabMacroAssetClass = set.Tables["AssetClass"];
// Titolo della sezione
//logger.Info("Titolo della sezione FD200 " + _testointroduttivo);
//document.setLastPos(-40);
//document.setChapterHeader(string.Concat(_testointroduttivo.Replace("/$Banca$/", dataThread.NomeRete), "
"), 0, 520, 8);
DirectBanker = "S";
base.writeSezione200(dataThread);
}
public void writeSezione200New(DataThread dataThread)
{
DocumentPDF document = dataThread.DocumentPDF;
DatiTabella datiHeaderCaratteristiche = new DatiTabella();
//DatiTabella datiHeaderPercentualeAttuale = new DatiTabella();
//DatiTabella datiMacroAsset = new DatiTabella();
//Tabella tab = new Tabella(document.getMargineLeft(), document.getLastPos());
DataSet set = dataThread.Data.DatiSezione;
DataTable dati = set.Tables[0];
// Testo del paragrafo
logger.Info("Titolo della sezione " + _testointroduttivo);
document.setLastPos(-40);
document.setSezTitolo(dataThread.SezioneReport.Titolo);
document.setChapterHeader(string.Concat(_testointroduttivo.Replace("/$Banca$/", dataThread.NomeRete), "
"), 0, 520, 8);
base.DirectBanker = "S";
#region Tabella con Grafici
document.setLastPos(150);
datiHeaderCaratteristiche.table = dati;
datiHeaderCaratteristiche.setCellSpace(10);
var tabellaAsset = new TablePDFEvolution(document.getMargineLeft(), 230, dati)
{
Style = Style.ConsulenzaUnica,
Header = true,
Footer = false,
AlternateRow = false,
RowHeight = 28,
ShowSeparationLines = false,
PageBreak = true,
HeaderTextHorizontalAlign = HorizontalAlignmentType.Destra,
ShowBorderHeader = true,
};
tabellaAsset.Columns.Add(new ColumnPDF("AssetClassName", 150, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "AssetClassName", "Asset class") { HeaderFontSize = 7, FontSize = 7 });
tabellaAsset.Columns.Add(new ColumnPDF("percentuale_modello", 185, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "percentuale_modello", "Portafoglio modello (%)") { HeaderFontSize = 7, HeaderPaddingLeft = 0, PaddingLeft = 3, DeltaYContent = 2, FontSize = 7 }); //{ HeaderPaddingRight = 80, PaddingRight = 20, HeaderFontSize = 7, DeltaYContent = 2, FontSize = 7});
tabellaAsset.Columns.Add(new ColumnPDF("percentuale", 185, HorizontalAlignmentType.Sinistra, false, false, 7, ColumnType.Testo, "percentuale", "Portafoglio attuale (%)") { HeaderFontSize = 7, HeaderPaddingLeft = 0, PaddingLeft = 3, DeltaYContent = 2, FontSize = 7 });
var list = new List();
list.Add(Convert.ToDouble(dati.AsEnumerable().Max(x => x["percentuale_modello"])));
list.Add(Convert.ToDouble(dati.AsEnumerable().Max(x => x["percentuale"])));
list.Add(Convert.ToDouble(dati.AsEnumerable().Min(x => x["percentuale_modello"])));
list.Add(Convert.ToDouble(dati.AsEnumerable().Min(x => x["percentuale"])));
var max = (float)Math.Round(list.Max());
var min = (float)Math.Round(list.Min());
tabellaAsset.min = min;
tabellaAsset.max = max;
tabellaAsset.minValorePercentuale = (float)Convert.ToDouble(dati.AsEnumerable().Min(x => x["percentuale"]));
tabellaAsset.maxValorePercentuale = (float)Convert.ToDouble(dati.AsEnumerable().Max(x => x["percentuale"]));
tabellaAsset.minValorePercentualeModello = (float)Convert.ToDouble(dati.AsEnumerable().Min(x => x["percentuale_modello"]));
tabellaAsset.maxValorePercentualeModello = (float)Convert.ToDouble(dati.AsEnumerable().Max(x => x["percentuale_modello"]));
tabellaAsset.Draw(datiHeaderCaratteristiche, document);
#endregion
}
}
}