using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Text;
using ceTe.DynamicPDF.PageElements.Charting;
using PDFGenerator.BusinessLayer;
using PDFGenerator.BusinessLayer.DataSection;
using PDFGenerator.Presentation.Section.Tables;
using PDFGenerator.Presentation.Section.Charts;
namespace PDFGenerator.Presentation.Section
{
public class FD169 : ISezione
{
private string _titolo = string.Empty;
private string _testointroduttivo = string.Empty;
private TipoReport _tipologiareport;
///
/// 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;
}
}
///
/// Imposta o recupera il tipo di report.
///
public TipoReport TipologiaReport
{
get
{
return _tipologiareport;
}
set
{
_tipologiareport = value;
}
}
///
/// Costruttore
///
public FD169()
{
}
public void writeSezione(DataThread dataThread)
{
DocumentPDF document = dataThread.DocumentPDF;
DataSetS96 set = (DataSetS96)dataThread.Data.DatiSezione;
//MIFID2 per Diagnosi si prendono i dati relativi a Patrimonio Fideuram, Patrimonio Terzi e Patrimonio Complessivo. Per Monitoraggio, solo il Patrimonio Fideuram
//DataTable _datasource = set.Tables["DatiGrafico"];
DataTable _datasource;
if (dataThread.TipoReport.ToUpper().Equals("DIAGNOSI"))
_datasource = set.Tables["DatiGrafico"];
else
_datasource = set.Tables["DatiGrafico"].AsEnumerable().Where(d => d.Field("ordine") == 1).CopyToDataTable();
//--MIFID2
#region recupero dati frecce
int classeRischio = 0;
if (_datasource.Rows[0]["ClasseRischioCreditoStr"] != DBNull.Value)
{
if (_datasource.Rows[0]["ClasseRischioCreditoStr"].ToString().ToUpper() == "N.A.")
classeRischio = -1;
}
else
classeRischio = Convert.ToInt32(_datasource.Rows[0]["ClasseRischioCredito"]);
// Rischio Mercato/VarP
double varP = 0;
if (_datasource.Rows[0]["RischioMercatoStr"] != DBNull.Value)
{
if (_datasource.Rows[0]["RischioMercatoStr"].ToString().ToUpper() == "N.A.")
varP = -1;
}
else
varP = Convert.ToInt32(_datasource.Rows[0]["RischioMercato"]);
// Rischio Mercato Massimo
decimal varMassimo = 0;
if (_datasource.Rows[0]["RischioMercatoMaxStr"] != DBNull.Value)
{
if (_datasource.Rows[0]["RischioMercatoMaxStr"].ToString().ToUpper() == "N.A.")
varMassimo = -1;
}
else
varMassimo = Convert.ToDecimal(_datasource.Rows[0]["RischioMercatoMax"]);
// D_IMPPROF: 20180817 Il VarMax va portato a 50 se il Cliente è Professionale e il profilo è aggressivo
if (dataThread.IsProffesionalClient && dataThread.RiskArea == 5)
varMassimo = 50.00M;
// Rischio Credito Massimo
int classeRiskCredMax = 0;
if (_datasource.Rows[0]["RischioCreditoMaxStr"] != DBNull.Value)
{
if (_datasource.Rows[0]["RischioCreditoMaxStr"].ToString().ToUpper() == "N.A.")
classeRiskCredMax = -1;
}
else
classeRiskCredMax = Convert.ToInt32(_datasource.Rows[0]["RischioCreditoMax"]);
#endregion
ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage();
float liftUp = 20;
#region Titolo e testo introduttivo
document.setSezTitoloDiagnosi(_titolo);
//MIFID2 20180524 Ridotto spazio tra titolo e testo introduttivo
//document.setChapterHeader(_testointroduttivo, 0, 520, 8);
document.setChapterHeader(_testointroduttivo.Replace("$/Banca/$", dataThread.NomeRete).Replace("Sanpaolo Invest", "la Banca"), 0, Convert.ToInt32(document.getLastPos() - liftUp), 520, 8);
//--MIFID2
//T - 1466629 - Y0Y5
//MIFID2 20180524 Riportato un po' più su
//if (_datasource.Rows.Count < 2) document.setLastPos(-50);
//else document.setLastPos(-40);
if (_datasource.Rows.Count < 2) document.setLastPos(-50 - 10);
else document.setLastPos(-40 - 10);
//--MIFID2
#endregion
float fontsize = 5;
#region Grafico
GraficoS169 grafico = new GraficoS169();
grafico.Datasource = _datasource;
document.InsertGraficoS169(grafico.ToPage(dataThread), document.getMargineLeft() + 60, document.getLastPos());
#endregion
if ((_datasource.Rows[0]["Profilo"].ToString() == "A") && (varMassimo > 0) && (classeRiskCredMax > 0))
{
#region Freccia Rischio Mercato (VaR) massimo
//MIFID2 20180524
//float posnew = 0;
//if (varMassimo == decimal.Parse(SoglieVar.sVar1)) posnew = 118;//2
//if (varMassimo == decimal.Parse(SoglieVar.sVar2)) posnew = 107;//4.5--
//if (varMassimo == decimal.Parse(SoglieVar.sVar3)) posnew = 86;//9.5--
//if (varMassimo == decimal.Parse(SoglieVar.sVar4)) posnew = 66;//15--
float posnew = 15;
//if (varMassimo == decimal.Parse(SoglieVar.sVar1)) posnew = 133;//2
if (varMassimo == decimal.Parse(SoglieVar.sVar1)) posnew = 113;//2
//if (varMassimo == decimal.Parse(SoglieVar.sVar2)) posnew = 122;//4.5--
if (varMassimo == decimal.Parse(SoglieVar.sVar2)) posnew = 102;//4.5--
//if (varMassimo == decimal.Parse(SoglieVar.sVar3)) posnew = 101;//9.5--
if (varMassimo == decimal.Parse(SoglieVar.sVar3)) posnew = 81;//9.5--
//if (varMassimo == decimal.Parse(SoglieVar.sVar4)) posnew = 81;//15--
if (varMassimo == decimal.Parse(SoglieVar.sVar4)) posnew = 61;//15--
//--MIFID2
//20180904 AC commentato perché si riduce tanto il fontsize
//if (dataThread.IsProffesionalClient && dataThread.RiskArea == 5)
//{
// fontsize = 3;
// // posnew = 0;
//}
//--20180904 AC
//MIFID2 20180524 posnew -10
//float yMarcatoreAsseYRettangolo = document.getLastPos() + posnew;
float yMarcatoreAsseYRettangolo = document.getLastPos() + posnew;
float xMarcatoreAsseYRettangolo = document.getMargineLeft();
float altezzaRettangolo = 20;
//// Rettangolo
ceTe.DynamicPDF.PageElements.Rectangle RettangolomarcatoreAsseY = new ceTe.DynamicPDF.PageElements.Rectangle(xMarcatoreAsseYRettangolo + 8,
yMarcatoreAsseYRettangolo,
40,
altezzaRettangolo,
//FrecciaMarcatoreAsseY.Width * 1.414F,
new RgbColor(234, 234, 234),
new RgbColor(234, 234, 234));
ceTe.DynamicPDF.PageElements.Rectangle FrecciaMarcatoreAsseY = new ceTe.DynamicPDF.PageElements.Rectangle(xMarcatoreAsseYRettangolo + 49,
yMarcatoreAsseYRettangolo,
//10,
//10,
altezzaRettangolo / 1.414F,
altezzaRettangolo / 1.414F,
new RgbColor(234, 234, 234),
new RgbColor(234, 234, 234));
FrecciaMarcatoreAsseY.Angle = 44;
page.Elements.Add(RettangolomarcatoreAsseY);
page.Elements.Add(FrecciaMarcatoreAsseY);
////Label
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Rischio Mercato",
xMarcatoreAsseYRettangolo + 9,
yMarcatoreAsseYRettangolo + 1, 80,
FrecciaMarcatoreAsseY.Width * 1.414F,
Globals.OpenTypeFontVerdana,
fontsize));
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("(VaR) massimo",
xMarcatoreAsseYRettangolo + 9,
yMarcatoreAsseYRettangolo + 7,
80,
FrecciaMarcatoreAsseY.Width * 1.414F,
Globals.OpenTypeFontVerdana,
fontsize));
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("(" + varMassimo.ToString() + "%)",
xMarcatoreAsseYRettangolo + 12,
yMarcatoreAsseYRettangolo + 14,
80,
FrecciaMarcatoreAsseY.Width * 1.414F,
Globals.OpenTypeFontVerdana,
fontsize));
#endregion
#region Legenda
float lastpos = document.getLastPos();
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(437, lastpos + 100, 10, 4, ceTe.DynamicPDF.CmykColor.Black, new RgbColor(234, 234, 234), 0.3F));//RgbColor(255, 255, 255)));
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Area di non adeguatezza", 437 + 13, lastpos + 100, 160, 10, Globals.OpenTypeFontVerdana, fontsize, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(437, lastpos + 100 + 13, 10, 4, ceTe.DynamicPDF.CmykColor.Black, ceTe.DynamicPDF.CmykColor.White, 0.3F));//RgbColor(255, 255, 255)));
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Area di adeguatezza", 437 + 13, lastpos + 100 + 13, 160, 10, Globals.OpenTypeFontVerdana, fontsize, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
#endregion
#region Freccia Rischio Credito massimo
float xMarcatoreAsseXRettangolo = 0;
if (classeRiskCredMax == 1)
xMarcatoreAsseXRettangolo = document.getMargineLeft() + 178 - 27; //selezione su Classe 1
else if (classeRiskCredMax == 2)
xMarcatoreAsseXRettangolo = document.getMargineLeft() + 250 - 27; //selezione su Classe 2
else if (classeRiskCredMax == 3)
xMarcatoreAsseXRettangolo = document.getMargineLeft() + 324 - 27; // selezione su Classe 3
// Recupero la Y
float yMarcatoreAsseXRettangolo = document.getLastPos() + grafico.Height + 5;
// Rettangolo Base (principale)
ceTe.DynamicPDF.PageElements.Rectangle FrecciaMarcatoreAsseX_Base = new ceTe.DynamicPDF.PageElements.Rectangle(xMarcatoreAsseXRettangolo, yMarcatoreAsseXRettangolo, 55, 15, new RgbColor(234, 234, 234), new RgbColor(234, 234, 234));
page.Elements.Add(FrecciaMarcatoreAsseX_Base);
// Rettangolo a destra (punta destra)
ceTe.DynamicPDF.PageElements.Rectangle FrecciaMarcatoreAsseX_dx = new ceTe.DynamicPDF.PageElements.Rectangle(xMarcatoreAsseXRettangolo + (FrecciaMarcatoreAsseX_Base.Width / 2), yMarcatoreAsseXRettangolo - 10, 29, 10, new RgbColor(234, 234, 234), new RgbColor(234, 234, 234));
FrecciaMarcatoreAsseX_dx.Angle = 19.3F;
page.Elements.Add(FrecciaMarcatoreAsseX_dx);
//Rettangolo a sinistra (punta sinistra)
ceTe.DynamicPDF.PageElements.Rectangle FrecciaMarcatoreAsseX_sx = new ceTe.DynamicPDF.PageElements.Rectangle(xMarcatoreAsseXRettangolo, yMarcatoreAsseXRettangolo, 28.6F, 10, new RgbColor(234, 234, 234), new RgbColor(234, 234, 234));
FrecciaMarcatoreAsseX_sx.Angle = 339.4F;
page.Elements.Add(FrecciaMarcatoreAsseX_sx);
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Rischio Credito",
xMarcatoreAsseXRettangolo + 8,
yMarcatoreAsseXRettangolo - 4,
80,
12,
Globals.OpenTypeFontVerdana,
fontsize));
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("massimo",
xMarcatoreAsseXRettangolo + 15,
yMarcatoreAsseXRettangolo - 4 + 6,
80,
12,
Globals.OpenTypeFontVerdana,
fontsize));
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("(" + UtilityBusinessLayer.GetRiskCreditClassName(classeRiskCredMax.ToString()) + ")",
xMarcatoreAsseXRettangolo + 13,
yMarcatoreAsseXRettangolo - 4 + 12,
80,
12,
Globals.OpenTypeFontVerdana,
fontsize));
#endregion
#region titoli
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Rischio Mercato (VaR%)", document.getMargineLeft(), lastpos + 7, 120, 12, Globals.OpenTypeFontVerdana, fontsize, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("Rischio Credito", 410, lastpos + 135, 100, 8, Globals.OpenTypeFontVerdana, fontsize, ceTe.DynamicPDF.TextAlign.Left, ceTe.DynamicPDF.CmykColor.Black));
#endregion
}
// T-1466629-Y0Y5
if (_datasource.Rows.Count < 2) document.setLastPos(160);
else document.setLastPos(155);
}
}
}