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 PDFGenerator.Presentation.Section.Tables; using PDFGenerator.BusinessLayer.DataSection; using PDFGenerator.BusinessLayer; using System.Threading; using System.Globalization; using ContrattoSei.Utilities; namespace PDFGenerator.Presentation.Section { public class S18 : SProfiloDiRischio, ISezione { bool indice = false; bool legend = false; DatiTabella datitab; public S18() { // // TODO: Add constructor logic here // } #region ISezione Members public void writeSezione(DataThread dataThread) { DocumentPDF document = dataThread.DocumentPDF; datitab = new DatiTabella(); DataSetS18 set = (DataSetS18)dataThread.Data.DatiSezione; datitab.table = set.Tables["RischioFinanziarioVarTotali"]; string sCulture = UtilityManager.getAppSetting("CultureToUse"); Thread.CurrentThread.CurrentCulture = new CultureInfo(sCulture); Thread.CurrentThread.CurrentUICulture = new CultureInfo(sCulture); Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator = ","; //eventuali operazioni sul dataset //calcola se entra nella pagina altrimenti aggiunge una nuova pagina. In questa sezione il # di righe è fissato if (document.checkMargin(140)) document.addPage(); //aggiorna l'indice if (indice) document.setSezTitolo(dataThread.SezioneReport.Titolo); dsParam = dataThread; //i due parametri devono essere presi da la datatable corrispondente if (dsParam.profiloIsAct) this.creaTabellaS18(document, (float)(int)set.RischioPatrimonioFinanziario.Rows[0]["Profilo"], datitab.table); else this.creaTabellaS18(document, 0.00F, datitab.table); FormatNum conv = new FormatNum(); if (set.Tables["GradoCopertura"] != null) if (set.Tables["GradoCopertura"].Rows.Count > 0) if (!legend && Convert.ToDecimal(set.Tables["GradoCopertura"].Rows[0]["totale"]) < 100) document.setSezFooter("Grado di copertura: " + conv.ConvertNum(set.Tables["GradoCopertura"].Rows[0]["totale"]) + "%", 150); document.setLastPos(160); } public void setIndice() { indice = true; } private void creaTabellaS18(DocumentPDF document, float var1, DataTable tab) { float yLabel = document.getLastPos() - 1; float yDistanceHeaderLabel = 27; float xMacroAsset = document.getMargineLeft() + 110; float xControvalore = xMacroAsset + 110; float xImg = document.getMargineLeft() + 143; float xRect = xMacroAsset + 98; float yRect = yLabel - 4; float yImg = document.getLastPos() + 27; //float widthRect = 26; //float heigthRect = 16; float widthMacroAsset = 120; //float widthControvalore = 80; float fontSize = 9; float heightLabel = 11; //OpenTypeFont font; OpenTypeFont font2 = Globals.OpenTypeFontVerdana; FormatNum conv = new FormatNum(); ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage(); ceTe.DynamicPDF.PageElements.Rectangle rect; int numStep = 5 - 1; bool _hasPortafoglioBancaFideuram = false; bool _hasPortafoglioAltriIstituti = false; this.creaTabella(document, var1); if (legend) { float varComplessivo = -1; float varTerzi = -1; float varBancaFideuram = -1; string varTerziString = "VaR "; string varBancaFideuramString = "VaR "; string varComplessivoString = "VaR "; foreach (DataRow myRow in tab.Rows) { switch (myRow["Descrizione"].ToString()) { //FC 26062015 Aggionamento nuova Ragione Sociale case "Portafoglio Fideuram": //Marker DX1 if ((myRow["Var"] == System.DBNull.Value) || (Convert.ToSingle(myRow["Var"]) == 0.0)) { varBancaFideuramString += myRow["VarString"].ToString(); } else { varBancaFideuram = (Convert.ToSingle(myRow["Var"])); varBancaFideuramString += conv.ConvertNum(varBancaFideuram) + "%"; } rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 155, yImg + ((numStep - MarkPosition(varBancaFideuram)) * yDistanceHeaderLabel), 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(255, 0, 0)); rect.Angle = 45; page.Elements.Add(rect); rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 160, yImg + ((numStep - MarkPosition(varBancaFideuram)) * yDistanceHeaderLabel), 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(255, 255, 255)); rect.Angle = 45; page.Elements.Add(rect); rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 165, yImg + ((numStep - MarkPosition(varBancaFideuram)) * yDistanceHeaderLabel), 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(0, 0, 0)); rect.Angle = 45; page.Elements.Add(rect); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(varBancaFideuramString, xImg + 173, yImg - 5 + ((numStep - MarkPosition(varBancaFideuram)) * yDistanceHeaderLabel) + 4, widthMacroAsset + 70, heightLabel, Globals.OpenTypeFontVerdana, fontSize)); _hasPortafoglioBancaFideuram = true; break; case "Portafoglio Altri Istituti": //Marker 2 if ((myRow["Var"] == System.DBNull.Value) || (Convert.ToSingle(myRow["Var"]) == 0.0)) { varTerziString += myRow["VarString"].ToString(); //V if (Convert.ToSingle(myRow["Var"]) == 0.0) { varTerzi = Convert.ToSingle(myRow["Var"]); varTerziString += "0,00%"; } // } else { varTerzi = Convert.ToSingle(myRow["Var"]); varTerziString += conv.ConvertNum(varTerzi) + "%"; } if (varBancaFideuram != -1 && MarkPosition(varBancaFideuram) == MarkPosition(varTerzi)) xImg += 70; else { rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 155, yImg + ((numStep - MarkPosition(varTerzi)) * yDistanceHeaderLabel), 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(255, 0, 0)); rect.Angle = 45; page.Elements.Add(rect); rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 160, yImg + ((numStep - MarkPosition(varTerzi)) * yDistanceHeaderLabel), 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(255, 255, 255)); rect.Angle = 45; page.Elements.Add(rect); } rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 160, yImg + ((numStep - MarkPosition(varTerzi)) * yDistanceHeaderLabel), 10, 10, 0, new RgbColor(0, 0, 0)); rect.CornerRadius = 5; page.Elements.Add(rect); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(varTerziString, xImg + 173, yImg - 5 + ((numStep - MarkPosition(varTerzi)) * yDistanceHeaderLabel) + 4, widthMacroAsset + 70, heightLabel, Globals.OpenTypeFontVerdana, fontSize)); _hasPortafoglioAltriIstituti = true; break; case "Portafoglio Complessivo": if (_hasPortafoglioBancaFideuram && _hasPortafoglioAltriIstituti) // stampo il var complessivo solo in presenza sia di Patrimonio Banca Fideuram che di Patrimonio Terzi { //Marker 3 if ((myRow["Var"] == System.DBNull.Value) || (Convert.ToSingle(myRow["Var"]) == 0.0)) { varComplessivoString += myRow["VarString"].ToString(); } else { varComplessivo = Convert.ToSingle(myRow["Var"]); varComplessivoString += conv.ConvertNum(varComplessivo) + "%"; } if (varTerzi != -1 && MarkPosition(varTerzi) == MarkPosition(varComplessivo)) xImg += 70; else if (varBancaFideuram != -1 && MarkPosition(varBancaFideuram) == MarkPosition(varComplessivo)) xImg += 70; else { // xImg = document.getMargineLeft() + 163; DDD rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 155, yImg + ((numStep - MarkPosition(varComplessivo)) * yDistanceHeaderLabel), 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(255, 0, 0)); rect.Angle = 45; page.Elements.Add(rect); rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 160, yImg + ((numStep - MarkPosition(varComplessivo)) * yDistanceHeaderLabel), 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(255, 255, 255)); rect.Angle = 45; page.Elements.Add(rect); } rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 161, yImg + 1 + ((numStep - MarkPosition(varComplessivo)) * yDistanceHeaderLabel), 8, 8, 0, new RgbColor(0, 0, 0)); //rect.CornerRadius = 5; page.Elements.Add(rect); page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(varComplessivoString, xImg + 173, yImg - 5 + ((numStep - MarkPosition(varComplessivo)) * yDistanceHeaderLabel) + 4, widthMacroAsset + 70, heightLabel, Globals.OpenTypeFontVerdana, fontSize)); } break; default: break; } } } else { ////Marker DX1 if (tab.Rows.Count != 0) { float var2 = -1; //FC 26062015 Aggionamento nuova Ragione Sociale String var2String = "Portafoglio Fideuram VaR "; if ((tab.Rows[0]["Var"] == System.DBNull.Value) || ((float)tab.Rows[0]["Var"] == 0.0)) { var2String += tab.Rows[0]["VarString"].ToString(); } else { var2 = (float)tab.Rows[0]["Var"]; var2String += conv.ConvertNum(var2) + "%"; } rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 155, yImg + ((numStep - MarkPosition(var2)) * yDistanceHeaderLabel), 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(255, 0, 0)); rect.Angle = 45; page.Elements.Add(rect); rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 160, yImg + ((numStep - MarkPosition(var2)) * yDistanceHeaderLabel), 10 / 1.414F, 10 / 1.414F, 0, new RgbColor(255, 255, 255)); rect.Angle = 45; page.Elements.Add(rect); //page.Elements.Add(new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 165, yImg - 5 + ((6 - MarkPosition(var2)) * yDistanceHeaderLabel), widthMacroAsset + 65, yDistanceHeaderLabel, 0, new RgbColor(232, 236, 237))); //rect = new ceTe.DynamicPDF.PageElements.Rectangle(xImg + 165, yImg - 5 + ((6 - MarkPosition(var2)) * yDistanceHeaderLabel), yDistanceHeaderLabel / 1.414F, yDistanceHeaderLabel / 1.414F, 0, new RgbColor(232, 236, 237)); //rect.Angle = 45; //page.Elements.Add(rect); if (dsParam.Rete == "F") page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(var2String, xImg + 170, yImg - 5 + ((numStep - MarkPosition(var2)) * yDistanceHeaderLabel) + 4, widthMacroAsset + 70, heightLabel, Globals.OpenTypeFontVerdana, fontSize)); else page.Elements.Add(new ceTe.DynamicPDF.PageElements.Label(var2String, xImg + 170, yImg - 5 + ((numStep - MarkPosition(var2)) * yDistanceHeaderLabel) + 4, widthMacroAsset + 70, heightLabel, Globals.OpenTypeFontVerdana, fontSize)); } } } #endregion public void setLegend() { legend = true; } } }