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 { /// /// Summary description for S169 /// //public abstract class S169 : ISezione public class S169 : 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 S169() { } 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); } } }