2025-06-03 15:11:16 +02:00

765 lines
37 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Text;
using PDFGenerator.Presentation.Section.Tables;
using PDFGenerator.BusinessLayer.DataSection;
using PDFGenerator.BusinessLayer;
using ceTe.DynamicPDF.PageElements;
using System.Collections.Generic;
using PDFGenerator.Presentation.Section.Charts;
using System.Data;
using System.Linq.Expressions;
using System.Windows.Forms;
using Dundas.Charting.WebControl;
using NUnit.Framework;
using ceTe.DynamicPDF.Imaging;
using System.Dynamic;
namespace PDFGenerator.Presentation.Section
{
public class S181 : SIstogramma, ISezione
{
NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
string Titolo = string.Empty;
string _testotitolo;
string _testointroduttivo;
string _testoAlternativo;
public string TestoIntroduttivo
{
get
{
return _testointroduttivo;
}
set
{
_testointroduttivo = value;
}
}
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 S181()
{
//
// TODO: Add constructor logic here
//
}
protected string[] setTableForIsto()
{
string[] Columns = new String[4];
Columns[0] = "PercentualeESG";
Columns[1] = "Red";
Columns[2] = "Green";
Columns[3] = "Blue";
return Columns;
}
#region Nuove funzionalità ESG 2024
public void writeSezione(DataThread datathread)
{
datathread.SETDATA();
DocumentPDF document = datathread.DocumentPDF;
DataSetS181AnalisiDiPortafoglioESG set = (DataSetS181AnalisiDiPortafoglioESG)datathread.Data.DatiSezione;
DatiTabella datitab = new DatiTabella();
DatiTabella datitabObiettivo = new DatiTabella();
DatiTabella datiRating = new DatiTabella();
DatiTabella datiTest = new DatiTabella();
DatiTabella datiCaratteristiche = new DatiTabella();
DatiTabella datiHeaderCaratteristiche = new DatiTabella();
DatiTabella datiPercSostenibilita = new DatiTabella();
float left = document.getMargineLeft();
float right = document.getLastPos();
Tabella tab = new Tabella(left, right);
// Titolo della sezione
logger.Info("Titolo della sezione " + _testointroduttivo);
document.setLastPos(-40);
document.setChapterHeader(string.Concat(_testointroduttivo, "<br>"), 0, 520, 8);
// VECCHIE SEZIONI CHE C'ERANO ANCHE PRIMA DI ESG 2024 E MODIFICATE
writeSezione_PreferenzeFattoriSostenibilita(set, document);
writeSezione_PercentualePortafoglio(set, document);
///////////////////////////////////////
// NUOVE SEZIONI ESG 2024
writeSezione_UlterioriPreferenzeSostenibilità(set, document);
writeSezione_SFDR_Taxonomy(set, document);
writeSezione_PrincipalAdverseImpact(set, document);
///////////////////////////////////////
writeSezione_ProdottiLineaPreferenzeSostenibilita(set, document);
//document.setLastPos(8);
document.setLastPos(9);
#region Titolo Seconda tabella
switch (datathread.Rete)
{
case "F":
{
_testoAlternativo = _testoAlternativo.Replace("$/Banca/$", "Fideuram");
break;
}
case "S":
{
//Rosaspina Andrea//
_testoAlternativo = _testoAlternativo.Replace("$/Banca/$", "Fideuram S.p.A., commercializzato tramite la rete di private banker Sanpaolo Invest");
//_testoAlternativo = _testoAlternativo.Replace("$/Banca/$", "Sanpaolo Invest");
break;
}
case "W":
{
_testoAlternativo = _testoAlternativo.Replace("$/Banca/$", "IW Private Investments");
break;
}
}
logger.Info("Titolo della seconda tabella " + _testointroduttivo);
//document.setLastPos(55); //-20
// è stato chiesto più spazio tra Prodotti in linea con le... e la nota alternativa
document.setLastPos(55);
document.setChapterHeader(string.Concat(_testoAlternativo, "<br>"),0, 520, 8);
logger.Info("Fine Titolo della seconda tabella " + _testointroduttivo);
#endregion
#region Seconda Tabella
writeSezione_IntestazioneGrafico(datathread, document,left);
ceTe.DynamicPDF.Merger.ImportedPage page1 = document.getCurrentPage();
/**************** Per Test quella buona - per miglioramento abilitare il codice "Nuova Versione in corso di verifiche" **********************/
logger.Info("Inizio impostazione grafico");
List<IValoriSerie> listaValoriPesoRelativo = new List<IValoriSerie>();
foreach (var item in set.Tables["dtCaratteristiche"].AsEnumerable())
{
IValoriSerie IvaloriSeriePesoRelativo = new IValoriSerie();
IvaloriSeriePesoRelativo.chiave = item[0].ToString();
IvaloriSeriePesoRelativo.valore = Convert.ToDecimal(item[1]);
IvaloriSeriePesoRelativo.colore = (System.Drawing.Color)item["ColorePercentuale"]; // System.Drawing.Color.FromArgb((int)item["Red"], (int)item["Green"], (int)item["Blue"]);
listaValoriPesoRelativo.Add(IvaloriSeriePesoRelativo);
}
IstoFarfallaS133BIS graficoCaratteristiche = new IstoFarfallaS133BIS(750, 150); //92 //85
graficoCaratteristiche.DocumentPDF = document;
graficoCaratteristiche.PositionX = 184; // 145;
graficoCaratteristiche.PositionY = Convert.ToInt32(document.getLastPos()); // + 22); //32 //38 //42 //542;
graficoCaratteristiche.AxisY_LineColor = true;
graficoCaratteristiche.AxisY_Hide = 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"; // 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.Name = "S181_Caratteristiche%";
seriePesoRelativo.Values = listaValoriPesoRelativo;
seriePesoRelativo.ElementPosition = new Dundas.Charting.WebControl.ElementPosition(0, -5F, 50.7F, 120F);
seriePesoRelativo.AxisY_CustumizedByValues = false;
seriePesoRelativo.ReverseAxisY = false;
seriePesoRelativo.Axisy_Interval = 10;
seriePesoRelativo.PixelPointWidth = 40;
seriePesoRelativo.ShowLabelAsValue = false;
// QUESTA CHIAMATA DISEGNA SIA LE LINEE VERTICALI CHE LE 3 BARRE COLORATE GROSSE SOTTO
// IN BASE AI VALORI di seriePesoRelativo. Essendo un ChartArea è fuori dal nostro controllo
// E' un controllo Cete. Ci ho perso 2gg per capire che le barre non si possono posizionare
// dove si vuole. Andrebbe rifatta la sezione ESG delle due tabelle sotto la principale!
graficoCaratteristiche.SerieList.Add(seriePesoRelativo);
//graficoCaratteristiche.SerieList.Add(seriePesoRelativo_2);
logger.Info("Inizio grafico caratteristiche");
// Disegno il grafico
graficoCaratteristiche.Draw(); //// Pino Test 15/09/2022
logger.Info("Fine grafico caratteristiche ");
// 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)));
// page1.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft(), document.getLastPos() + 22, 300, 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 RIGHE "di cui in linea con le Preferenze di Sostenibilità"
//////////////////////////////////////////
// inserimento righe di non sostenibilità
int widthLabel = 765;
int startX = 180;
// BARRA NUMERI DA 0 a 100 Percentuali
for (int i = 0; i < 110; i += 10)
{
//page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(i.ToString() + ",00",
// startX, document.getLastPos() + 146, widthLabel, 20, Globals.OpenTypeFontCourierB,
// 7, TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(i.ToString() ,
startX, document.getLastPos() + 146, widthLabel, 20, Globals.OpenTypeFontCourierB,
7, TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
startX = startX + 36;
}
string labelNonSostenibilita = "di cui in linea con le\nPreferenze di Sostenibilità"; //
//" + GetPercentualeSostenibilita("Ambientali", set.Tables["dtCaratteristiche"]).ToString() ;
//float y = document.getLastPos() + 58;
float lineHeight = 20; // Altezza della riga
float xLabelSost = left+9;//sommo 9 perche' il pallino ha size 15. Faccio /2+2
// AMBIENTALI
if (TitoloAttivo("Ambientali", set.Tables["dtCaratteristiche"]))
{
foreach (string linea in labelNonSostenibilita.Split('\n'))
{
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(labelNonSostenibilita.ToString(),
xLabelSost, document.getLastPos() + 38, 765, lineHeight, Globals.OpenTypeFontVerdana,
6, TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
}
/////////////////////
}
// SOCIALI
if (TitoloAttivo("Sociali", set.Tables["dtCaratteristiche"]))
{
foreach (string linea in labelNonSostenibilita.Split('\n'))
{
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(labelNonSostenibilita.ToString(),
xLabelSost, document.getLastPos() + 77, 765, lineHeight, Globals.OpenTypeFontVerdana,
6, TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
// y -= lineHeight; // Spostare la posizione y per la riga successiva
}
///// PERCENTUALE SOSTENIBILITA' /////
/////////////////////////////////////
}
// BUONA GOVERNANCE
if (TitoloAttivo("di", set.Tables["dtCaratteristiche"]))
{
foreach (string linea in labelNonSostenibilita.Split('\n'))
{
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(labelNonSostenibilita.ToString(),
xLabelSost, document.getLastPos() + 120, 765, lineHeight, Globals.OpenTypeFontVerdana, 6, TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
//y -= lineHeight; // Spostare la posizione y per la riga successiva
}
}
//////////////////////////////////////////
#endregion
#region rettangoli sostenibilità
int numeroRiga = 1;
foreach (DataRow row in set.Tables["dtCaratteristiche"].Rows)
{
double W_PercentualeSostenibilita = 3.63;
double percESG = Convert.ToDouble(row["PercentualeESG"]);
if (percESG > 0 && percESG < 5)
{
W_PercentualeSostenibilita = 3.30;
}
if (percESG > 5 && percESG < 10)
{
W_PercentualeSostenibilita = 3.54;
}
if (percESG > 10 && percESG < 15)
{
W_PercentualeSostenibilita = 3.55;
}
if (percESG > 20 && percESG < 30)
{
W_PercentualeSostenibilita = 3.61;
}
if (percESG > 30 && percESG < 35)
{
W_PercentualeSostenibilita = 3.612;
}
if (percESG > 35 && percESG < 40)
{
W_PercentualeSostenibilita = 3.613;
}
if (percESG > 40 && percESG < 50)
{
W_PercentualeSostenibilita = 3.615;
}
if (percESG > 50 && percESG < 55)
{
W_PercentualeSostenibilita = 3.615;
}
if (percESG > 55 && percESG < 60)
{
W_PercentualeSostenibilita = 3.615;
}
if (percESG > 60 && percESG < 65)
{
W_PercentualeSostenibilita = 3.615;
}
if (percESG > 65 && percESG < 70)
{
W_PercentualeSostenibilita = 3.618;
}
if (percESG > 70 && percESG < 75)
{
W_PercentualeSostenibilita = 3.62;
}
if (percESG > 75 && percESG < 80)
{
W_PercentualeSostenibilita = 3.625;
}
if (percESG > 80 && percESG < 85)
{
W_PercentualeSostenibilita = 3.625;
}
if (percESG > 85 && percESG < 90)
{
W_PercentualeSostenibilita = 3.63;
}
if (percESG > 90 && percESG < 95)
{
W_PercentualeSostenibilita = 3.635;
}
if (percESG > 95)
{
W_PercentualeSostenibilita = 3.64;
}
if (!row["ColoreSostenibilita"].ToString().Equals("0"))
{
System.Drawing.Color col = (System.Drawing.Color)row["ColoreSostenibilita"];
float Y_RettangoloSostenibilita = 0;
switch (numeroRiga)
{
case 1:
//incrementa = 53;
Y_RettangoloSostenibilita = 52.5f;
break;
case 2:
// incrementa = 95;
Y_RettangoloSostenibilita = 94.2f;
break;
case 3:
//incrementa = 136;
Y_RettangoloSostenibilita = 135.5f;
break;
}
double perc = (Convert.ToDouble(row["PercentualeSostenibilita"])) * W_PercentualeSostenibilita;
//129
double x = left + 146;
/////////////////////////////////////
///// RETTANGOLO SOSTENIBILITA' /////
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle((float)x,document.getLastPos() + Y_RettangoloSostenibilita - 22, (float)perc,6, 0, new RgbColor(col.R, col.G, col.B)));
/////////////////////////////////////
}
numeroRiga++;
}
#endregion
// Inserimento tabella con le due colonne e con la colonna delle Caratteristiche riempita
logger.Info("Inizio inserimento tabella caratteristiche");
datiCaratteristiche.table = set.Tables["dtCaratteristiche"];
//Tabella tabellaCaratteristiche = new Tabella(document.getMargineLeft() + 15, document.getLastPos() + 85, 0, -2, 0.009F);
//Tabella tabellaCaratteristiche = new Tabella(document.getMargineLeft() +15 , document.getLastPos() + 89, 0, -2, 0.009F);
Tabella tabellaCaratteristiche = new Tabella(left, document.getLastPos() + 67, 0, -2, 0.009F);
tabellaCaratteristiche.Datasource = datiCaratteristiche.table;
tabellaCaratteristiche.Header = false;
tabellaCaratteristiche.DimensioneLinea = 0;
tabellaCaratteristiche.AltezzaCella = 45; //25;
tabellaCaratteristiche.Colonne.Add(new Colonna("CaratteristicheESG", "Caratteristiche", 0, TipoAllineamento.SINISTRA, false, 0, false, TipoColonna.TESTO));
tabellaCaratteristiche.Colonne.Add(new Colonna("Titolo", "", 110, TipoAllineamento.SINISTRA, true, 7, false, TipoColonna.TESTO));
tabellaCaratteristiche.Colonne.Add(new Colonna("PercentualiMostrate", "Distribuzione (%)", 26, TipoAllineamento.DESTRA, false, 6, false, TipoColonna.TESTO));
tabellaCaratteristiche.DrawESG(datiCaratteristiche, document);
logger.Info("Fine inserimento tabella caratteristiche");
#endregion
InsertPallinoFattore(document, "Ambientali", set, "logo-ambientaleSM_182.png", "logo-ambientaleGray.png", 41,left);
InsertPallinoFattore(document, "Sociali", set, "logo-socialeSM_182.png", "logo-socialeGray.png", 85,left);
InsertPallinoFattore(document, "di", set, "logo-governanceSM_182.png", "logo-governanceGray.png", 132, left);
//document.setLastPos(180); //120;
document.addPage();
}
void InsertPallinoFattore(DocumentPDF doc, string elemento, DataSet set, string IconaOK, string IconaGray, int incrementa, float indent)
{
string nameImage = System.IO.Path.Combine(CACHE.pathGraf,
TitoloAttivo(elemento, set.Tables["dtCaratteristiche"]) ?
IconaOK : IconaGray);
ceTe.DynamicPDF.PageElements.Image img = new Image(nameImage, indent-7, doc.getLastPos() - 22 + incrementa);
img.SetSize(15, 15); // diminuisco size
doc.getCurrentPage().Elements.Add(img);
}
public void writeSezione_IntestazioneGrafico(DataThread datathread, DocumentPDF document, float x)
{
document.setLastPos(1);
DataTable dtInt = new DataTable()
{
Columns = { "Titolo1", "blank", "Titolo2" }
};
string titolo1 = Utility.setColoreTesto("Fattori ESG", datathread); // string.Format("<font color =\"green\">{0}</font>", "Fattori ESG");
string titolo2 = Utility.setColoreTesto("Distribuzione (%)", datathread); // string.Format("<font color =\"green\">{0}</font>", "(%)");
dtInt.Rows.Add(titolo1, "", titolo2);
DatiTabella datiTabIntestazioneGrafico = new DatiTabella();
datiTabIntestazioneGrafico.table = dtInt;
Tabella tabellaIntestazioneGrafico = new Tabella(x, document.getLastPos() + 15, 0, -2, 0.2F);
tabellaIntestazioneGrafico.Header = false;
tabellaIntestazioneGrafico.AltezzaCella = tabellaIntestazioneGrafico.AltezzaCella - 5;
tabellaIntestazioneGrafico.Colonne.Add(new Colonna("Titolo1", titolo1, 133, TipoAllineamento.SINISTRA, true, 9, true, TipoColonna.TESTO));
tabellaIntestazioneGrafico.Colonne.Add(new Colonna("blank", "", 6, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.TESTO)); //45
tabellaIntestazioneGrafico.Colonne.Add(new Colonna("Titolo2", titolo2, 370, TipoAllineamento.SINISTRA, true, 9, true, TipoColonna.TESTO)); //45
tabellaIntestazioneGrafico.Draw(datiTabIntestazioneGrafico, document);
}
public void writeSezione_PreferenzeFattoriSostenibilita(DataSet set, DocumentPDF document)
{
////if (dataThread.TipoReport.ToUpper() == "DIAGNOSI") tab.HeaderFont = 8;
////tab.Header = true;
////tab.LineaFineTabella = false;
////tab.Datasource = datitab.table;
datitab.table = set.Tables["dtPreferenze"];
/**** ESG - Fix faccio una copia del datatable per impostazione della tabella - Pino ****/
DataTable _dtCopy = set.Tables["dtPreferenze"].Copy();
/***************************************************************************************/
/**** ESG - Fix elimino le colonne delle preferenze impostate a null- Pino *****/
if (datitab.table.Rows[0]["Ambientale"].Equals(DBNull.Value))
datitab.table.Columns.Remove("Ambientale");
if (datitab.table.Rows[0]["Sociale"].Equals(DBNull.Value))
datitab.table.Columns.Remove("Sociale");
if (datitab.table.Rows[0]["Governance"].Equals(DBNull.Value))
datitab.table.Columns.Remove("Governance");
/****************************************************************************************/
datitab.SetRowDim(25);
datitab.setIsLinee(2);
document.setLastPos(2);
Tabella tabellaDatiRap = new Tabella(document.getMargineLeft(), document.getLastPos(), 0, -2, 0.2F);
tabellaDatiRap.Header = false;
/***** ESG - Fix elimino le colonne delle preferenze impostate a null - Pino *****/
tabellaDatiRap.Colonne.Add(new Colonna("Descrizione", "Preferenze di sostenibilità", 170, TipoAllineamento.SINISTRA, true, 9, true, TipoColonna.TESTO)); //170 120
tabellaDatiRap.Colonne.Add(new Colonna("Preferenza", "", 40, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.TESTO)); //40 //20
//tabellaDatiRap.Colonne.Add(new Colonna("Ambientale", "", 100, TipoAllineamento.SINISTRA, false, 9, false,TipoColonna.IMMAGINE));
//tabellaDatiRap.Colonne.Add(new Colonna("Sociale", "", 100, TipoAllineamento.SINISTRA, false, 9, false,TipoColonna.IMMAGINE));
//tabellaDatiRap.Colonne.Add(new Colonna("Governance", "", 100, TipoAllineamento.SINISTRA, false, 9, false,TipoColonna.IMMAGINE));
if (!(_dtCopy.Rows[0]["Ambientale"].Equals(DBNull.Value)) && !(_dtCopy.Rows[0]["Sociale"].Equals(DBNull.Value)) && !(_dtCopy.Rows[0]["Governance"].Equals(DBNull.Value)))
{
tabellaDatiRap.Colonne.Add(new Colonna("Ambientale", "", 100, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.IMMAGINE)); //100 //75
tabellaDatiRap.Colonne.Add(new Colonna("Sociale", "", 80, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.IMMAGINE)); //100 //60
tabellaDatiRap.Colonne.Add(new Colonna("Governance", "", 100, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.IMMAGINE)); //100 //75
}
if (_dtCopy.Rows[0]["Ambientale"].Equals(DBNull.Value) && _dtCopy.Rows[0]["Sociale"].Equals(DBNull.Value) && !(_dtCopy.Rows[0]["Governance"].Equals(DBNull.Value)))
{
tabellaDatiRap.Colonne.Add(new Colonna("Governance", "", 100, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.IMMAGINE));
}
if (_dtCopy.Rows[0]["Ambientale"].Equals(DBNull.Value) && !(_dtCopy.Rows[0]["Sociale"].Equals(DBNull.Value)) && _dtCopy.Rows[0]["Governance"].Equals(DBNull.Value))
{
tabellaDatiRap.Colonne.Add(new Colonna("Sociale", "", 80, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.IMMAGINE));
}
if (!(_dtCopy.Rows[0]["Ambientale"].Equals(DBNull.Value)) && _dtCopy.Rows[0]["Sociale"].Equals(DBNull.Value) && _dtCopy.Rows[0]["Governance"].Equals(DBNull.Value))
{
tabellaDatiRap.Colonne.Add(new Colonna("Ambientale", "", 100, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.IMMAGINE));
}
if (_dtCopy.Rows[0]["Ambientale"].Equals(DBNull.Value) && !(_dtCopy.Rows[0]["Sociale"].Equals(DBNull.Value)) && !(_dtCopy.Rows[0]["Governance"].Equals(DBNull.Value)))
{
tabellaDatiRap.Colonne.Add(new Colonna("Sociale", "", 80, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.IMMAGINE));
tabellaDatiRap.Colonne.Add(new Colonna("Governance", "", 100, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.IMMAGINE));
}
if (!(_dtCopy.Rows[0]["Ambientale"].Equals(DBNull.Value)) && !(_dtCopy.Rows[0]["Sociale"].Equals(DBNull.Value)) && _dtCopy.Rows[0]["Governance"].Equals(DBNull.Value))
{
tabellaDatiRap.Colonne.Add(new Colonna("Ambientale", "", 100, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.IMMAGINE));
tabellaDatiRap.Colonne.Add(new Colonna("Sociale", "", 80, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.IMMAGINE));
}
if (!(_dtCopy.Rows[0]["Ambientale"].Equals(DBNull.Value)) && _dtCopy.Rows[0]["Sociale"].Equals(DBNull.Value) && !(_dtCopy.Rows[0]["Governance"].Equals(DBNull.Value)))
{
tabellaDatiRap.Colonne.Add(new Colonna("Ambientale", "", 100, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.IMMAGINE));
tabellaDatiRap.Colonne.Add(new Colonna("Governance", "", 100, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.IMMAGINE));
}
/*******************************************************************************/
tabellaDatiRap.Draw(datitab, document);
}
public void writeSezione_PercentualePortafoglio(DataSet set, DocumentPDF document)
{
DatiTabella datiPercSostenibilita = new DatiTabella();
document.setLastPos(2);
datiPercSostenibilita.table = set.Tables["dtPreferenze"];
Tabella tabellaDatiPercSost = new Tabella(document.getMargineLeft(), document.getLastPos(), 0, -2, 0.2F);
tabellaDatiPercSost.Header = false;
tabellaDatiPercSost.Colonne.Add(new Colonna("DescPercSostenibilita", "Soglia di sostenibilità", 170, TipoAllineamento.SINISTRA, true, 9, true, TipoColonna.TESTO));
tabellaDatiPercSost.Colonne.Add(new Colonna("ValPercSostenibilita", "", 120, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.TESTO)); //45
tabellaDatiPercSost.Draw(datiPercSostenibilita, document);
}
public void writeSezione_UlterioriPreferenzeSostenibilità(DataSet set, DocumentPDF document)
{
// ESG 2024 - Nuova sezione -PS-
document.setLastPos(2);
DatiTabella datiUlterioriPreferenze = new DatiTabella();
datiUlterioriPreferenze.table = set.Tables["dtUlterioriPrefSostenibilita"];
Tabella tabellaUlterioriPreferenze = new Tabella(document.getMargineLeft(), document.getLastPos(), 0, -2, 0.2F);
tabellaUlterioriPreferenze.Header = false;
tabellaUlterioriPreferenze.Colonne.Add(new Colonna("NomeCampo", "", 170, TipoAllineamento.SINISTRA, true, 9, true, TipoColonna.TESTO));
tabellaUlterioriPreferenze.Colonne.Add(new Colonna("Risposta", "", 120, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.TESTO)); //45
tabellaUlterioriPreferenze.Draw(datiUlterioriPreferenze, document);
}
public void writeSezione_SFDR_Taxonomy(DataSet set, DocumentPDF document)
{
// ESG 2024 - Nuova sezione -PS-
document.setLastPos(2);
DatiTabella datiSFRD_Taxonomy = new DatiTabella();
datiSFRD_Taxonomy.table = set.Tables["dtSFDR_Taxonomy"];
Tabella tabellaDatiSFRD_Tax = new Tabella(document.getMargineLeft(), document.getLastPos(), 0, -2, 0.2F);
tabellaDatiSFRD_Tax.Header = false;
tabellaDatiSFRD_Tax.Colonne.Add(new Colonna("TitoloSFDR", "", 170, TipoAllineamento.SINISTRA, true, 9, true, TipoColonna.TESTO));
tabellaDatiSFRD_Tax.Colonne.Add(new Colonna("ValoreSFDR", "", 50, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.TESTO)); //45
tabellaDatiSFRD_Tax.Colonne.Add(new Colonna("TitoloTaxonomy", "", 190, TipoAllineamento.SINISTRA, true, 9, true, TipoColonna.TESTO));
tabellaDatiSFRD_Tax.Colonne.Add(new Colonna("ValoreTaxonomy", "", 50, TipoAllineamento.SINISTRA, false, 9, false, TipoColonna.TESTO)); //45
tabellaDatiSFRD_Tax.Draw(datiSFRD_Taxonomy, document);
}
protected ceTe.DynamicPDF.Imaging.ImageData GetImageData(string imgUrl)
{
ImageData imgData = null;
using (System.Net.WebClient wc = new System.Net.WebClient())
{
imgData = ImageData.GetImage(wc.DownloadData(imgUrl));
}
return imgData;
}
public void writeSezione_PrincipalAdverseImpact(DataSet set, DocumentPDF document)
{
try
{
DataTable dt1 = new DataTable(); DataTable dt2 = new DataTable();
dt1.Columns.Add("Titolo"); dt1.Columns.Add("Image"); dt1.Columns.Add("Descrizione");
dt2.Columns.Add("Titolo"); dt2.Columns.Add("Image"); dt2.Columns.Add("Descrizione");
bool primaRiga = true;
foreach (DataRow row in set.Tables["dtPai"].Rows)
{
if (primaRiga == true)
{
dt1.ImportRow(row);
primaRiga = false;
}
dt2.ImportRow(row);
}
DatiTabella datiPrincipalAdverseImpact_1 = new DatiTabella();
datiPrincipalAdverseImpact_1.table = dt1;
Tabella tabellaPAI = new Tabella(document.getMargineLeft(), document.getLastPos() + 49, 0, -2, 0.2F);
tabellaPAI.Header = false;
tabellaPAI.AltezzaCella = 45;
tabellaPAI.Colonne.Add(new Colonna("Titolo", "", 170, TipoAllineamento.SINISTRA, true, 9, true, TipoColonna.TESTO));
tabellaPAI.Draw(datiPrincipalAdverseImpact_1, document);
if (set.Tables["dtPai"].Rows.Count > 1)
{
DatiTabella datiPrincipalAdverseImpact_2 = new DatiTabella();
datiPrincipalAdverseImpact_2.table = dt2;
datiPrincipalAdverseImpact_2.table.Columns.Remove("Titolo");
Tabella tabellaPAI_2 = new Tabella(document.getMargineLeft() + 170, document.getLastPos() + 27, 0, -2, 0.2F);
if (dt2.Rows[1]["Descrizione"].Equals("")) // sta solo ambientali
{
tabellaPAI_2 = new Tabella(document.getMargineLeft() + 170, document.getLastPos() + 37, 0, -2, 0.2F);
if (!dt2.Rows[0]["Descrizione"].ToString().Contains("Preferisco non dettagliare"))
{
tabellaPAI_2.Colonne.Add(new Colonna("Image", "", 20, TipoAllineamento.DESTRA, false, 9, false, TipoColonna.IMMAGINE)); //45
tabellaPAI_2.Colonne.Add(new Colonna("Descrizione", "", 310, TipoAllineamento.SINISTRA, false, 8, false, TipoColonna.TESTO)); //45
}
else
{
tabellaPAI_2.Colonne.Add(new Colonna("Descrizione", "", 310, TipoAllineamento.SINISTRA, false, 8, false, TipoColonna.TESTO)); //45
tabellaPAI_2.X = tabellaPAI_2.X + 10;
}
}
if (dt2.Rows[0]["Descrizione"].Equals("")) // sta solo sociali
{
tabellaPAI_2 = new Tabella(document.getMargineLeft() + 170, document.getLastPos() + 15, 0, -2, 0.2F);
tabellaPAI_2.Colonne.Add(new Colonna("Image", "", 20, TipoAllineamento.DESTRA, false, 9, false, TipoColonna.IMMAGINE)); //45
tabellaPAI_2.Colonne.Add(new Colonna("Descrizione", "", 310, TipoAllineamento.SINISTRA, false, 8, false, TipoColonna.TESTO)); //45
}
if (dt2.Rows[0]["Descrizione"].Equals("") && dt2.Rows[1]["Descrizione"].Equals("-"))
{
tabellaPAI_2 = new Tabella(document.getMargineLeft() + 180, document.getLastPos() + 15, 0, -2, 0.2F);
tabellaPAI_2.Colonne.Add(new Colonna("Descrizione", "", 20, TipoAllineamento.SINISTRA, false, 8, false, TipoColonna.TESTO)); //45
}
if (!dt2.Rows[0]["Descrizione"].Equals("") && !dt2.Rows[1]["Descrizione"].Equals(""))
{
tabellaPAI_2 = new Tabella(document.getMargineLeft() + 170, document.getLastPos() + 27, 0, -2, 0.2F);
tabellaPAI_2.Colonne.Add(new Colonna("Image", "", 20, TipoAllineamento.DESTRA, false, 9, false, TipoColonna.IMMAGINE)); //45
tabellaPAI_2.Colonne.Add(new Colonna("Descrizione", "", 310, TipoAllineamento.SINISTRA, false, 8, false, TipoColonna.TESTO)); //45
}
tabellaPAI_2.Header = false;
tabellaPAI.AltezzaCella = 12;
tabellaPAI_2.LineeTabella = false;
tabellaPAI_2.LineaFineTabella = false;
tabellaPAI_2.Draw(datiPrincipalAdverseImpact_2, document);
}
}
catch (Exception ex)
{
}
}
public void writeSezione_ProdottiLineaPreferenzeSostenibilita(DataSet set, DocumentPDF document)
{
Tabella tab = new Tabella(document.getMargineLeft(), document.getLastPos());
DatiTabella datitabObiettivo = new DatiTabella();
datitabObiettivo.table = set.Tables["dtObiettivo"];
datitabObiettivo.SetRowDim(25);
datitabObiettivo.setIsLinee(3);
datitabObiettivo.setCell(170, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdanaB, true);
datitabObiettivo.setCell(350, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false, 7);
datitabObiettivo.setY(document.getLastPos() + 50);
datitabObiettivo.setX(document.getMargineLeft());
document.InsertTable(tab.getTabella(datitabObiettivo));
}
private bool TitoloAttivo(string titolo, DataTable dt)
{
bool result = false;
foreach (DataRow row in dt.Rows)
{
if (row["Titolo"].ToString().StartsWith(titolo))
{
result = (bool)row["Sostenibilita"];
break;
}
}
return result;
}
private object GetPercentualeSostenibilita(string titolo, DataTable dt)
{
object result = 0;
foreach (DataRow row in dt.Rows)
{
if (row["Titolo"].ToString().Contains(titolo))
{
result = (object)row["PercentualeSostenibilita"];
break;
}
}
return result;
}
private object GetPercentuale(string titolo, DataTable dt)
{
object result = 0;
foreach (DataRow row in dt.Rows)
{
if (row["Titolo"].ToString().Contains(titolo))
{
result = (object)row["PercentualeESG"];
break;
}
}
return result;
}
#endregion
}
}