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.Resources; using System.Reflection; using System.Collections.Generic; namespace PDFGenerator.Presentation.Section { public class FD133BIS : SIstogramma, ISezione { NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); private string _header = ""; private string _testointroduttivo; private string Titolo = string.Empty; public string Header { get { return _header; } set { _header = value; } } private TipoReport _tipologiaReport; public TipoReport TipologiaReport { get { return _tipologiaReport; } set { _tipologiaReport = value; } } /// /// Testo introduttivo della sezione. /// public string TestoIntroduttivo { get { return _testointroduttivo; } set { _testointroduttivo = value; } } public void setTitolo(string label) { Titolo = label; } public FD133BIS() { // // TODO: Add constructor logic here // } #region ISezione Members public void writeSezione(DataThread dataThread) { DocumentPDF document = dataThread.DocumentPDF; DataSetS133BIS set = (DataSetS133BIS)dataThread.Data.DatiSezione; DatiTabella datitab = new DatiTabella(); // Titolo della sezione logger.Info("Titolo della sezione " + _testointroduttivo); document.setLastPos(-40); document.setSezTitolo(dataThread.SezioneReport.Titolo); document.setChapterHeader(string.Concat(_testointroduttivo, "
"), 0, 520, 8); datitab.table = set.Tables["PrincipaliProdotti"]; if (document.checkMargin(180)) document.addPage(); //Disegno la tabella Tabella tabellaDati = new Tabella(document.getMargineLeft(), document.getLastPos()); tabellaDati.Header = true; tabellaDati.HeaderFont = 8; tabellaDati.Datasource = datitab.table; tabellaDati.AltezzaCella = 15; //tabellaDati.Colonne.Add(new Colonna("DescrProdotto", "Prodotto", 262, TipoAllineamento.SINISTRA, false, 8, false, TipoColonna.IMMAGINE_E_TESTO)); tabellaDati.Colonne.Add(new Colonna("DescrProdotto", "Prodotto", 262, TipoAllineamento.SINISTRA, false, 8, false, TipoColonna.TESTO)); tabellaDati.Colonne.Add(new Colonna("VaRProdotto", "Rischio
(VaR%)", 60, TipoAllineamento.DESTRA, false, 8, false)); tabellaDati.Colonne.Add(new Colonna("pesoRelativo", "Peso relativo %", 95, TipoAllineamento.DESTRA, false, 8, false)); tabellaDati.Colonne.Add(new Colonna("rischioRelativo", "Rischio relativo %", 95, TipoAllineamento.SINISTRA, false, 8, false)); #region Simboli del patrimonio //int numSimboli = 13; //string testoLetteraSimboloPatrimonio = string.Empty; //foreach (DataRow row in tabellaDati.Datasource.Rows) //{ // document.getCurrentPage().Elements.Add(RecuperaSimboloAreaBisogno(document.getMargineLeft(), document.getLastPos() + numSimboli, row["codiceAreaBisogno"].ToString())); // document.getCurrentPage().Elements.Add(new ceTe.DynamicPDF.PageElements.Label((RecuperaLetteraSimboloAreaBisogno(row["codiceAreaBisogno"].ToString())), GetX(row["codiceAreaBisogno"].ToString(), document.getMargineLeft() + 2), document.getLastPos() + numSimboli, 5, 10, Globals.OpenTypeFontVerdana, 10, ceTe.DynamicPDF.TextAlign.Center, CmykColor.White)); // numSimboli += 15; //} #endregion tabellaDati.ColoreDirectBankB = "green"; tabellaDati.Draw(datitab, document); #region Grafico a farfalla per Prodotti #region Recupero i valori da assegnare alle serie del grafico List listaValoriPesoRelativo = new List(); List listaValoriRischioRelativo = new List(); foreach (DataRow row in set.Tables["PrincipaliProdotti"].Rows) { IValoriSerie IvaloriSeriePesoRelativo = new IValoriSerie(); IvaloriSeriePesoRelativo.chiave = row["DescrProdotto"].ToString(); IvaloriSeriePesoRelativo.valore = Convert.ToDecimal(row["pesoRelativo"]); listaValoriPesoRelativo.Add(IvaloriSeriePesoRelativo); IValoriSerie IvaloriSerieRischioRelativo = new IValoriSerie(); IvaloriSerieRischioRelativo.chiave = row["DescrProdotto"].ToString(); IvaloriSerieRischioRelativo.valore = Convert.ToDecimal(row["rischioRelativo"]); listaValoriRischioRelativo.Add(IvaloriSerieRischioRelativo); } #endregion double altezzaGraficoPesoRischio_Prodotto = 15 * (tabellaDati.Datasource.Rows.Count + 0.01); //0.5 IstoFarfallaS133BIS graficoPesoRischio_Prodotto = new IstoFarfallaS133BIS((double)200, altezzaGraficoPesoRischio_Prodotto); graficoPesoRischio_Prodotto.DocumentPDF = document; graficoPesoRischio_Prodotto.PositionX = 365; graficoPesoRischio_Prodotto.PositionY = Convert.ToInt32(document.getLastPos() + 14); //542; graficoPesoRischio_Prodotto.AxisY_LineColor = false; graficoPesoRischio_Prodotto.AxisY_Hide = true; graficoPesoRischio_Prodotto.AxysX_Increment = Convert.ToDecimal(1); SerieIstoFarfallaS133BIS seriePesoRelativo = new SerieIstoFarfallaS133BIS(); SerieIstoFarfallaS133BIS serieRischioRelativo = new SerieIstoFarfallaS133BIS(); seriePesoRelativo = new SerieIstoFarfallaS133BIS(); seriePesoRelativo.Name = "pesoRelativo"; seriePesoRelativo.Values = listaValoriPesoRelativo; //seriePesoRelativo.ElementPosition = new Dundas.Charting.WebControl.ElementPosition(1F, -5F, 50.7F, 105F); seriePesoRelativo.ElementPosition = new Dundas.Charting.WebControl.ElementPosition(1F, -2.5F, 50.7F, 105F); seriePesoRelativo.AxisY_CustumizedByValues = true; seriePesoRelativo.ReverseAxisY = true; serieRischioRelativo.Name = "rischioRelativo"; serieRischioRelativo.Values = listaValoriRischioRelativo; //serieRischioRelativo.ElementPosition = new Dundas.Charting.WebControl.ElementPosition(49.3F, -5, 50.7F, 105F); serieRischioRelativo.ElementPosition = new Dundas.Charting.WebControl.ElementPosition(49.3F, -2.5F, 50.7F, 105F); serieRischioRelativo.AxisY_CustumizedByValues = true; graficoPesoRischio_Prodotto.SerieList.Add(seriePesoRelativo); graficoPesoRischio_Prodotto.SerieList.Add(serieRischioRelativo); // Disegno il grafico graficoPesoRischio_Prodotto.Draw(); #endregion #region Legenda //float xLegenda = document.getMargineLeft(); //float yLegenda = document.getLastPos() + tabellaDati.AltezzaTabella; //if (set.Tables["PrincipaliProdotti"].Select("codiceAreaBisogno='Ext'").Length > 0) //{ // document.getCurrentPage().Elements.Add(RecuperaSimboloAreaBisogno(xLegenda, yLegenda, "Ext")); // document.getCurrentPage().Elements.Add(new ceTe.DynamicPDF.PageElements.Label("E", GetX("Ext", xLegenda + 2), yLegenda, 5, 10, Globals.OpenTypeFontVerdana, 10, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.White)); // document.writeText(xLegenda + 15, yLegenda + 2, "Extra Rendimento", 8); // xLegenda += 100; //} //if (set.Tables["PrincipaliProdotti"].Select("codiceAreaBisogno='Inv'").Length > 0) //{ // document.getCurrentPage().Elements.Add(RecuperaSimboloAreaBisogno(xLegenda, yLegenda, "Inv")); // document.getCurrentPage().Elements.Add(new ceTe.DynamicPDF.PageElements.Label("I", GetX("Inv", xLegenda + 2), yLegenda, 5, 10, Globals.OpenTypeFontVerdana, 10, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.White)); // document.writeText(xLegenda + 15, yLegenda + 2, "Investimento", 8); // xLegenda += 81; //} //if ((set.Tables["PrincipaliProdotti"].Select("codiceAreaBisogno='Pre'").Length > 0) || // (set.Tables["PrincipaliProdotti"].Select("codiceAreaBisogno='Pre1'").Length > 0) || // (set.Tables["PrincipaliProdotti"].Select("codiceAreaBisogno='Pre2'").Length > 0)) //{ // document.getCurrentPage().Elements.Add(RecuperaSimboloAreaBisogno(xLegenda, yLegenda, "Pre")); // document.getCurrentPage().Elements.Add(new ceTe.DynamicPDF.PageElements.Label("P", GetX("Pre", xLegenda + 2), yLegenda, 5, 10, Globals.OpenTypeFontVerdana, 10, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.White)); // document.writeText(xLegenda + 15, yLegenda + 2, "Previdenza", 8); // xLegenda += 71; //} //if (set.Tables["PrincipaliProdotti"].Select("codiceAreaBisogno='Ris'").Length > 0) //{ // document.getCurrentPage().Elements.Add(RecuperaSimboloAreaBisogno(xLegenda, yLegenda, "Ris")); // document.getCurrentPage().Elements.Add(new ceTe.DynamicPDF.PageElements.Label("R", GetX("Ris", xLegenda + 2), yLegenda, 5, 10, Globals.OpenTypeFontVerdana, 10, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.White)); // document.writeText(xLegenda + 15, yLegenda + 2, "Riserva", 8); // xLegenda += 57; //} //if (set.Tables["PrincipaliProdotti"].Select("codiceAreaBisogno='Liq'").Length > 0) //{ // document.getCurrentPage().Elements.Add(RecuperaSimboloAreaBisogno(xLegenda, yLegenda, "Liq")); // document.getCurrentPage().Elements.Add(new ceTe.DynamicPDF.PageElements.Label("L", GetX("Liq", xLegenda + 2), yLegenda, 5, 10, Globals.OpenTypeFontVerdana, 10, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.White)); // document.writeText(xLegenda + 15, yLegenda + 2, "Liquidità", 8); // xLegenda += 61; //} //if (set.Tables["PrincipaliProdotti"].Select("codiceAreaBisogno='Na'").Length > 0) //{ // document.getCurrentPage().Elements.Add(RecuperaSimboloAreaBisogno(xLegenda, yLegenda, "Na")); // document.getCurrentPage().Elements.Add(new ceTe.DynamicPDF.PageElements.Label("!", GetX("Na", xLegenda + 2), yLegenda, 5, 10, Globals.OpenTypeFontVerdana, 10, ceTe.DynamicPDF.TextAlign.Center, ceTe.DynamicPDF.CmykColor.White)); // document.writeText(xLegenda + 15, yLegenda + 2, "Non Allocate", 8); //} #endregion document.setLastPos(600); } ///// ///// Aggiungo il simbolo dell'area di bisogno del prodotto ///// ///// ///// ///// ///// private ceTe.DynamicPDF.PageElements.Rectangle RecuperaSimboloAreaBisogno(float x, float y, string area) { System.Drawing.Color color = GetColors(area); ceTe.DynamicPDF.PageElements.Rectangle simbolo = new ceTe.DynamicPDF.PageElements.Rectangle(x, y, 13, 13, 1, new RgbColor(color.R, color.G, color.B)); simbolo.CornerRadius = 1; simbolo.BorderWidth = 0; return simbolo; } ///// ///// Recupera la lettera simbolo dell'area di bisogno passata in input ///// ///// ///// private string RecuperaLetteraSimboloAreaBisogno(string area) { string testoLetteraSimboloPatrimonio = string.Empty; #region Recupero la lettera simbolo di area di bisogno switch (area.ToString().ToUpper()) { case "INV": testoLetteraSimboloPatrimonio = "I"; break; case "EXT": testoLetteraSimboloPatrimonio = "E"; break; case "RIS": testoLetteraSimboloPatrimonio = "R"; break; case "LIQ": testoLetteraSimboloPatrimonio = "L"; break; case "PRE": testoLetteraSimboloPatrimonio = "P"; break; case "PRE1": testoLetteraSimboloPatrimonio = "P"; break; case "PRE2": testoLetteraSimboloPatrimonio = "P"; break; case "NA": testoLetteraSimboloPatrimonio = "!"; break; default: testoLetteraSimboloPatrimonio = ""; break; } #endregion return testoLetteraSimboloPatrimonio; } ///// ///// Recupera i colori a partire dal codice area. ///// ///// ///// private System.Drawing.Color GetColors(string area) { System.Drawing.Color c = System.Drawing.Color.FromArgb(0, 0, 0); switch (area.ToLower()) { case "inv": c = System.Drawing.Color.FromArgb(229, 119, 43); break; case "ext": c = System.Drawing.Color.FromArgb(222, 21, 44); break; case "ris": c = System.Drawing.Color.FromArgb(137, 142, 184); break; case "liq": c = System.Drawing.Color.FromArgb(57, 65, 132); break; case "pre": c = System.Drawing.Color.FromArgb(237, 180, 20); break; case "pre1": c = System.Drawing.Color.FromArgb(237, 180, 20); break; case "pre2": c = System.Drawing.Color.FromArgb(237, 180, 20); break; case "na": c = System.Drawing.Color.FromArgb(192, 192, 216); break; default: c = System.Drawing.Color.FromArgb(166, 166, 166); break; } return c; } ///// ///// Recupera la X, in modo da centrare il simbolo dell'area all'interno del tuo contenitore. ///// ///// ///// ///// private float GetX(string area, float x) { float returnX = x; switch (area.ToLower()) { case "inv": returnX = x + 2; break; case "ext": returnX = x + 1; break; case "ris": returnX = x + 1; break; case "liq": returnX = x + 1; break; case "pre": returnX = x + 1; break; case "pre1": returnX = x + 1; break; case "pre2": returnX = x + 1; break; case "na": returnX = x + 2; break; default: returnX = x; break; } return returnX; } //ceTe.DynamicPDF.Merger.ImportedPage page = document.getCurrentPage(); //document.setHeaderSpace(78); //document.setLastPos(tabellaDati.AltezzaTabella); #endregion } }