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 Dundas.Charting.WebControl; using PDFGenerator.Presentation.Section.Tables; using PDFGenerator.BusinessLayer.DataSection; using PDFGenerator.Presentation.Section.Charts; using PDFGenerator.BusinessLayer; using ContrattoSei.Utilities; namespace PDFGenerator.Presentation.Section { class S146 : ISezione { private string _header = ""; public string Header { get { return _header; } set { _header = value; } } private TipoReport _tipologiaReport; public TipoReport TipologiaReport { get { return _tipologiaReport; } set { _tipologiaReport = value; } } private string _testoIntroduttivo = string.Empty; public string TestoIntroduttivo { get { return _testoIntroduttivo; } set { _testoIntroduttivo = value; } } private string _testoChiusura = string.Empty; public string TestoChiusura { get { return _testoChiusura; } set { _testoChiusura = value; } } public S146() { // // TODO: Add constructor logic here // } /// /// Stampa la sezione /// /// public void writeSezione(DataThread dataThread) { DocumentPDF document = dataThread.DocumentPDF; if (dataThread.TipoContratto != TipoContratto.Private) { if (document.checkMargin(320)) document.addPage(); } // float xLab = 122; //float xImg = 170; float xLine = 50; float widthMacroAsset = 120; float widthLine = 320; float widthRectangleTable = widthLine - xLine + 3; //float InLab = 13; float fontSize = 9; float heightLabel = 11; // float yDistanceHeaderLabel = 19; //float yDistanceVar = 23; float altezzaRettangolo = 58; int altezzaGrafico = 160; float altezzaGraficoMenoEtichette = altezzaGrafico - 40; DatiTabella datitab = new DatiTabella(); DataSetS146 set = (DataSetS146)dataThread.Data.DatiSezione; //calcola se entra nella pagina altrimenti aggiunge una nuova pagina. //if (document.checkMargin(175 + altezzaGrafico)) // document.addPage(); ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage(); #region Titolo e testo introduttivo document.setSezTitolo(dataThread.SezioneReport.Titolo); string tempTesto = dataThread.SezioneReport.TestoIntroduttivo; document.setChapterHeader(tempTesto, 0, 520, 8); document.setHeaderSpace(15);//25 #endregion double var_mod = 0; double var1 = 0; if (set.RischioPatrimonioFinanziario.Rows.Count != 0) var1 = Convert.ToDouble((decimal)set.RischioPatrimonioFinanziario.Rows[0]["Var"]); var_mod = var1; if (dataThread.IsProffesionalClient && dataThread.RiskArea == 5) { if (var1 >= 27) { var_mod = 45; var1 = 50.00;//checked // var1 = 123 } } #region Tabella sotto al grafico //datitab.table = set.Tables["RischioDiversificazione"]; // MZ: Use the RischioDiversificazioneTable instead of RischioDiversificazione to allow to have VAR as string in case of coverage is null. datitab.table = set.Tables["RischioDiversificazioneTable"]; datitab.setIsLinee(1); datitab.setHeader(); datitab.setCell(152, ceTe.DynamicPDF.TextAlign.Left, Globals.OpenTypeFontVerdana, false); datitab.setCell(100, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false); datitab.setCell(140, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false); datitab.setCell(120, ceTe.DynamicPDF.TextAlign.Right, Globals.OpenTypeFontVerdana, false); datitab.setY(document.getLastPos() + altezzaGrafico + 10); datitab.setX(document.getMargineLeft()); datitab.setIsRet(); datitab.setCellSpace(0); Tabella tab = new Tabella(); document.InsertTable(tab.getTabella(datitab)); datitab.table = set.Tables["RischioDiversificazione"]; // //Tabella tabellaRischioDiversificazione = new Tabella(); //tabellaRischioDiversificazione.X = document.getMargineLeft(); //tabellaRischioDiversificazione.Y = document.getLastPos() + altezzaGrafico + 10; //tabellaRischioDiversificazione.Header = true; //tabellaRischioDiversificazione.Datasource = datitab.table; //tabellaRischioDiversificazione.Colonne.Add(new Colonna("Patrimonio", "Patrimonio", 152, TipoAllineamento.SINISTRA, false, 7, false)); //tabellaRischioDiversificazione.Colonne.Add(new Colonna("Var", "Rischio
(VaR %)", 80, TipoAllineamento.DESTRA, false, 7, false)); //tabellaRischioDiversificazione.Colonne.Add(new Colonna("Diversificazione", "Diversificazione %", 140, TipoAllineamento.DESTRA, false, 7, false)); //tabellaRischioDiversificazione.Colonne.Add(new Colonna("Copertura", "Copertura %", 140, TipoAllineamento.DESTRA, false, 7, false)); //tabellaRischioDiversificazione.Draw(datitab, document); this.writeMarker(document, datitab); #endregion float dim = datitab.GetRowDim() * datitab.getNumRow(); #region Grafico DatiGrafico dati = new DatiGrafico(); dati.dataTab = datitab.table; //rimuovo le colonne non utili per il grafico dati.dataTab.Columns.Remove(dati.dataTab.Columns["Copertura"]); dati.setHeight(altezzaGrafico); dati.setWidth(250); Pallini pall = new Pallini(); Chart grafico = pall.getGrafico(dati, dataThread); double vaRMassimo = pall.AxisY_Maximum; document.InsertGrafico(grafico, document.getMargineLeft() + 110, document.getLastPos() - 5); #endregion dim += (altezzaGrafico + 40); #region Marcatore alla sinistra del grafico ceTe.DynamicPDF.PageElements.Rectangle rect; FormatNum conv = new FormatNum(); float yImg = document.getLastPos() - 5; if (set.RischioPatrimonioFinanziario.Rows.Count != 0) { //string var1 = conv.ConvertNum(set.RischioPatrimonioFinanziario.Rows[0]["Var"]); if (var1 > vaRMassimo) var1 = vaRMassimo; float intervallo = (altezzaGraficoMenoEtichette / (float)vaRMassimo); altezzaGraficoMenoEtichette = altezzaGraficoMenoEtichette - Convert.ToSingle(0.22 * var_mod); float yRettangoloFreccia = yImg - (altezzaRettangolo / 2) + altezzaGraficoMenoEtichette - ((float)var_mod * intervallo); page.Elements.Add( new ceTe.DynamicPDF.PageElements.Rectangle( document.getMargineLeft() + 5 , yRettangoloFreccia , widthMacroAsset - 35 , altezzaRettangolo , 0 , new RgbColor(232, 236, 237) ) ); rect = new ceTe.DynamicPDF.PageElements.Rectangle( document.getMargineLeft() + widthMacroAsset - 30 , yRettangoloFreccia , altezzaRettangolo / 1.414F , altezzaRettangolo / 1.414F , 0 , new RgbColor(232, 236, 237)); rect.Angle = 45; page.Elements.Add(rect); page.Elements.Add( new ceTe.DynamicPDF.PageElements.Label("Profilo finanziario:" , document.getMargineLeft() + 10 , yRettangoloFreccia + 2 , widthMacroAsset + 70 , heightLabel , Globals.OpenTypeFontVerdana , fontSize)); string profilo = " "; switch (MarkPosition((float)var1)) { case 0: profilo = "Prudente"; break; case 1: profilo = "Moderato"; break; case 2: profilo = "Equilibrato"; break; case 3: profilo = "Dinamico"; break; case 4: profilo = "Aggressivo"; break; default: break; } page.Elements.Add( new ceTe.DynamicPDF.PageElements.Label(profilo + " (" + (MarkPosition((float)var1) + 1).ToString() + ")" , document.getMargineLeft() + 10 , yRettangoloFreccia + 23 , widthMacroAsset + 70 , heightLabel , Globals.OpenTypeFontVerdana , fontSize)); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label("(VaR " + conv.ConvertNum(var1) + "%)" , document.getMargineLeft() + 10 , yRettangoloFreccia + 44 , widthMacroAsset + 70 , heightLabel , Globals.OpenTypeFontVerdana , fontSize)); } #endregion #region Legenda alla destra del Grafico string relativePath = UtilityManager.getAppSetting("LegendaDiversificazioneLarge"); System.Reflection.Assembly thisExe; thisExe = System.Reflection.Assembly.GetExecutingAssembly(); System.IO.Stream file = thisExe.GetManifestResourceStream(relativePath); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Image(file, document.getMargineLeft() + 370, document.getLastPos() + 85, 0.50F)); #endregion // setto la posizione aggiornata document.setLastPos(dim); if (dataThread.TipoContratto != TipoContratto.Private) document.setLastPos(900); } private int MarkPosition(float var) { int index = 0; if (var < Convert.ToDouble(BusinessLayer.SoglieVar.sVar1)) index = 0; if ((Convert.ToDouble(BusinessLayer.SoglieVar.sVar1) < var) && (var <= Convert.ToDouble(BusinessLayer.SoglieVar.sVar2))) index = 1; if ((Convert.ToDouble(BusinessLayer.SoglieVar.sVar2) < var) && (var <= Convert.ToDouble(BusinessLayer.SoglieVar.sVar3))) index = 2; if ((Convert.ToDouble(BusinessLayer.SoglieVar.sVar3) < var) && (var <= Convert.ToDouble(BusinessLayer.SoglieVar.sVar4))) index = 3; if ((Convert.ToDouble(BusinessLayer.SoglieVar.sVar4) < var)) index = 4; return index; } /// /// Disegna il simbolo accanto alla descrizione del patrimonio nella colonna Patrimonio. /// /// /// private void writeMarker(DocumentPDF document, DatiTabella datasource) { ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage(); float y = datasource.GetRowDim(); float yTabella = datasource.getY(); ceTe.DynamicPDF.PageElements.Rectangle rect; foreach (DataRow myRow in datasource.table.Rows) { switch (myRow["Patrimonio"].ToString().Trim().ToLower()) { //EN 27-01-2016: case "patrimonio banca fideuram": case "patrimonio banca fideuram": case "patrimonio fideuram": case "patrimonio sanpaolo invest": case "patrimonio san paolo invest": case "patrimonio IW Private Inv.": //cecco case "patrimonio attuale": //Marker 1 rect = new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft(), yTabella - 5 + y, 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(0, 0, 0)); rect.Angle = 45; page.Elements.Add(rect); y += datasource.GetRowDim(); break; case "patrimonio complessivo": //Marker 2 rect = new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft() - 4, yTabella - 4 + y, 8, 8, 0, new RgbColor(0, 0, 0)); //rect.CornerRadius = 5; page.Elements.Add(rect); y += datasource.GetRowDim(); break; case "patrimonio altri istituti": case "patrimonio prospettico": //Marker 3 rect = new ceTe.DynamicPDF.PageElements.Rectangle(document.getMargineLeft() - 5, yTabella - 5 + y, 10, 10, 0, new RgbColor(0, 0, 0)); rect.CornerRadius = 5; page.Elements.Add(rect); y += datasource.GetRowDim(); break; default: break; } } } } }