using System; using System.Collections.Generic; using System.Linq; using Consulenza.ReportWriter.Business; using Consulenza.ReportWriter.Business.OBJ_PDF; using System.Data; using ceTe.DynamicPDF; using Consulenza.ReportWriter.Business.CHART_PDF; using Consulenza.ReportCommon; namespace Consulenza.ReportWriter.Manager.Section.Immobiliare.Finalita { /// /// Patrimonio Immobiliare Sintesi (id 141) /// public class S2 : Entity.Section { public S2(EnvironmentFacade environmentFacade, int idSection) : base(environmentFacade, idSection) { try { Draw(); } catch (Exception ex) { SectionLogger.Write("S2", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment); } } /// /// Scheda2. Patrimonio immobiliare –Sintesi (distribuzione del patrimonio complessivo del cliente diviso per finalità e cointestatari) /// protected override sealed void Draw() { var dati = GetDataSet(); if (dati.Tables[0].Rows.Count == 0) return; var serieCollezione = new List(); #region Distribuzione per tipologia AddElement(new SpacePDF(30)); var icona = new ImagePDF(EnvironmentFacade.RendererFacade.XLeftLimit, 0.20F, "DistrFabbricati.png") { AutoIncrementYWritable = false }; var titolo = new FormattedTextAreaPDF("Distribuzione per finalità", 82) { FontSize = 14, FontColor = ColorPDF.Immobiliare_Grigio_TitoloGrande }; #region Tabella var tabella = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit + 30, dati.Tables[0]) { Style = Style.Immobiliare, HeaderMargin = 8 }; tabella.Columns.Add(new ColumnPDF("descrizione", 100, HorizontalAlignmentType.Sinistra, false, false, 8, ColumnType.Testo, "descrizione", "Finalità")); tabella.Columns.Add(new ColumnPDF("immobili", 50, HorizontalAlignmentType.Centrato, false, false, 8, ColumnType.Intero, "numeroimmobili", "Numero
immobili")); tabella.Columns.Add(new ColumnPDF("stimatoproprieta", 100, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Decimale, "valorestimatoproprieta", "Valore stimato
quota di proprietà (€)")); tabella.Columns.Add(new ColumnPDF("stimatototale", 80, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Decimale, "valorestimatototale", "Valore stimato
totale (€)")); tabella.FooterColumns.Add(new ColumnPDF("descrizione", 100, HorizontalAlignmentType.Sinistra, false, true, 8, ColumnType.Testo)); tabella.FooterColumns.Add(new ColumnPDF("immobili", 50, HorizontalAlignmentType.Centrato, false, true, 8, ColumnType.Intero)); tabella.FooterColumns.Add(new ColumnPDF("stimatoproprieta", 100, HorizontalAlignmentType.Destra, false, true, 8, ColumnType.Decimale)); tabella.FooterColumns.Add(new ColumnPDF("stimatototale", 80, HorizontalAlignmentType.Destra, false, true, 8, ColumnType.Decimale)); tabella.FooterCells[0, 0].Value = "Totale"; tabella.FooterCells[1, 0].Value = Convert.ToDecimal(dati.Tables[0].Compute("Sum(numeroimmobili)", string.Empty)).ToString(); tabella.FooterCells[2, 0].Value = Convert.ToDecimal(dati.Tables[0].Compute("Sum(valorestimatoproprieta)", string.Empty)).ToString(); tabella.FooterCells[3, 0].Value = Convert.ToDecimal(dati.Tables[0].Compute("Sum(valorestimatototale)", string.Empty)).ToString(); #endregion AddElement(icona); AddElement(titolo); AddElement(new SpacePDF(30)); AddElement(tabella); #endregion #region Linea verticale var xLinea = (EnvironmentFacade.RendererFacade.XRightLimit / 2) + 40; var y1Linea = EnvironmentFacade.RendererFacade.YUpperLimit + 50; var y2Linea = y1Linea + 170; var lineaVerticaleSeparazione = new LinePDF(xLinea, y1Linea, xLinea, y2Linea, 0.5F, ColorPDF.Immobiliare_Grigio_TitoloPiccolo) { AutoIncrementYWritable = false }; AddElement(lineaVerticaleSeparazione); #endregion #region Grafico a torta #region Valorizzazione Serie var totaleValoreStimatoUsoAbitativo = dati.Tables[0].Select("codFinalita = 'U'").Length == 0 ? 0 : Convert.ToDecimal(dati.Tables[0].Select("codFinalita = 'U'").FirstOrDefault()["ValoreStimatoTotale"]); var totaleValoreStimatoStrumentale = dati.Tables[0].Select("codFinalita = 'S'").Length == 0 ? 0 : Convert.ToDecimal(dati.Tables[0].Select("codFinalita = 'S'").FirstOrDefault()["ValoreStimatoTotale"]); var totaleValoreStimatoInvestimento = dati.Tables[0].Select("codFinalita = 'I'").Length == 0 ? 0 : Convert.ToDecimal(dati.Tables[0].Select("codFinalita = 'I'").FirstOrDefault()["ValoreStimatoTotale"]); var totaleValoreStimatoNonSpecificata = dati.Tables[0].Select("codFinalita = 'NS'").Length == 0 ? 0 : Convert.ToDecimal(dati.Tables[0].Select("codFinalita = 'NS'").FirstOrDefault()["ValoreStimatoTotale"]); ColorPDF coloriUsoAbitativo = totaleValoreStimatoUsoAbitativo > 0 ? new ColorPDF(Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'U'").FirstOrDefault()["Red"]), Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'U'").FirstOrDefault()["Green"]), Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'U'").FirstOrDefault()["Blue"])) : null; ColorPDF coloriStrumentale = totaleValoreStimatoStrumentale > 0 ? new ColorPDF(Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'S'").FirstOrDefault()["Red"]), Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'S'").FirstOrDefault()["Green"]), Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'S'").FirstOrDefault()["Blue"])) : null; ColorPDF coloriInvestimento = totaleValoreStimatoInvestimento > 0 ? new ColorPDF(Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'I'").FirstOrDefault()["Red"]), Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'I'").FirstOrDefault()["Green"]), Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'I'").FirstOrDefault()["Blue"])) : null; ColorPDF coloriNonSpecificata = totaleValoreStimatoNonSpecificata > 0 ? new ColorPDF(Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'NS'").FirstOrDefault()["Red"]), Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'NS'").FirstOrDefault()["Green"]), Convert.ToInt32(dati.Tables[0].Select("codFinalita = 'NS'").FirstOrDefault()["Blue"])) : null; serieCollezione.Add(new Serie { Name = "DistribuzioneFinalita" }); foreach (DataRow item in dati.Tables[0].Rows) { serieCollezione[0].Points.Add(new Point { LabelAxisX = item["Descrizione"].ToString(), Color = new ColorPDF(Convert.ToInt32(item["Red"]), Convert.ToInt32(item["Green"]), Convert.ToInt32(item["Blue"])), Value = Convert.ToDouble(item["PercentualeValoreStimato"]) == 0 ? 0.01 : Convert.ToDouble(item["PercentualeValoreStimato"]), ShowLabelAxisX = false, ShowLabelAxisY = false }); } #endregion var intestazione = new FormattedTextAreaPDF(string.Format("{0} {1}", "Valore stimato totale:", Helper.FormatCurrencyWithSymbol(Convert.ToDecimal(dati.Tables[0].Compute("Sum(valorestimatototale)", string.Empty)).ToString())), xLinea, EnvironmentFacade.RendererFacade.XRightLimit - xLinea, TextAlign.Center) { FontSize = 8, FontBold = true }; var torta = new PiePDF(xLinea + 130, 1F, y1Linea + 10) { ShowLabelPoints = false, Height = 150, Width = 150, StartAngle = 90, SeriesCollection = serieCollezione }; AddElement(new ResetterYPDF(y1Linea)); AddElement(intestazione); AddElement(torta); AddElement(new SpacePDF(150)); var xLegenda = xLinea + 20; if (totaleValoreStimatoUsoAbitativo > 0) { var legendaUsoAbitativoRettangolo = new RectanglePDF(xLegenda, 8, 17, coloriUsoAbitativo) { AutoIncrementYWritable = false }; var legendaUsoAbitativoTesto = new FormattedTextAreaPDF(string.Format("{0}
{1}", "Uso Abitativo", Helper.FormatCurrencyWithSymbol(totaleValoreStimatoUsoAbitativo.ToString())), xLegenda + 20) { FontSize = 8, AutoIncrementYWritable = false }; xLegenda += 85; AddElement(legendaUsoAbitativoRettangolo); AddElement(legendaUsoAbitativoTesto); } if (totaleValoreStimatoStrumentale > 0) { var legendaStrumentaleRettangolo = new RectanglePDF(xLegenda, 8, 17, coloriStrumentale) { AutoIncrementYWritable = false }; var legendaStrumentaleTesto = new FormattedTextAreaPDF(string.Format("{0}
{1}", "Strumentale", Helper.FormatCurrencyWithSymbol(totaleValoreStimatoStrumentale.ToString())), xLegenda + 20) { FontSize = 8, AutoIncrementYWritable = false }; xLegenda += 85; AddElement(legendaStrumentaleRettangolo); AddElement(legendaStrumentaleTesto); } if (totaleValoreStimatoInvestimento > 0) { var legendaInvestimentoRettangolo = new RectanglePDF(xLegenda, 8, 17, coloriInvestimento) { AutoIncrementYWritable = false }; var legendaInvestimentoTesto = new FormattedTextAreaPDF(string.Format("{0}
{1}", "Investimento", Helper.FormatCurrencyWithSymbol(totaleValoreStimatoInvestimento.ToString())), xLegenda + 20) { FontSize = 8, AutoIncrementYWritable = false }; xLegenda += 85; AddElement(legendaInvestimentoRettangolo); AddElement(legendaInvestimentoTesto); } if (totaleValoreStimatoNonSpecificata > 0) { var legendaNonSpecificataRettangolo = new RectanglePDF(xLegenda, 8, 17, coloriNonSpecificata) { AutoIncrementYWritable = false }; var legendaNonSpecificataTesto = new FormattedTextAreaPDF(string.Format("{0}
{1}", "Non specificata", Helper.FormatCurrencyWithSymbol(totaleValoreStimatoNonSpecificata.ToString())), xLegenda + 20) { FontSize = 8, AutoIncrementYWritable = false }; xLegenda += 85; AddElement(legendaNonSpecificataRettangolo); AddElement(legendaNonSpecificataTesto); } #endregion //---------------------------------// #region Linea orizzontale var lineaOrizzonataleSeparazione = new LinePDF(EnvironmentFacade.RendererFacade.XLeftLimit, EnvironmentFacade.RendererFacade.XRightLimit, 1F, ColorPDF.Immobiliare_Grigio_TitoloPiccolo); AddElement(new SpacePDF(40)); AddElement(lineaOrizzonataleSeparazione); #endregion //---------------------------------// #region Distribuzione per tipologia AddElement(new SpacePDF(30)); icona = new ImagePDF(EnvironmentFacade.RendererFacade.XLeftLimit, 0.20F, "DistrFabbricati.png") { AutoIncrementYWritable = false }; titolo = new FormattedTextAreaPDF("Distribuzione della proprietà degli immobili", 82) { FontSize = 14, FontColor = ColorPDF.Immobiliare_Grigio_TitoloGrande }; #region Tabella tabella = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit + 30, dati.Tables[1]) { Style = Style.Immobiliare, Footer = false, ShowBorderLastLine = true, HeaderMargin = 8 }; tabella.Columns.Add(new ColumnPDF("nominativo", 205, HorizontalAlignmentType.Sinistra, false, false, 8, ColumnType.Testo, "nominativo", "Nominativo")); tabella.Columns.Add(new ColumnPDF("stimatoproprieta", 110, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Decimale, "valorestimatoproprieta", "Valore stimato
quota di proprietà (€)")); //tabella.FooterColumns.Add(new ColumnPDF("nominativo", 205, HorizontalAlignmentType.SINISTRA, false, true, 8, ColumnType.TESTO)); //tabella.FooterColumns.Add(new ColumnPDF("stimatoproprieta", 110, HorizontalAlignmentType.DESTRA, false, true, 8, ColumnType.DECIMALE)); //tabella.FooterCell[0].Value = "Totale"; //tabella.FooterCell[1].Value = Convert.ToDecimal(dati.Tables[1].Compute("Sum(ValoreStimatoProprieta)", string.Empty)).ToString(); #endregion AddElement(icona); AddElement(titolo); AddElement(new SpacePDF(10)); AddElement(tabella); #endregion #region Linea verticale xLinea = (EnvironmentFacade.RendererFacade.XRightLimit / 2) + 40; y1Linea = EnvironmentFacade.RendererFacade.YUpperLimit + 290; y2Linea = y1Linea + 170; lineaVerticaleSeparazione = new LinePDF(xLinea, y1Linea, xLinea, y2Linea, 0.5F, ColorPDF.Immobiliare_Grigio_TitoloPiccolo) { AutoIncrementYWritable = false }; AddElement(lineaVerticaleSeparazione); #endregion #region Grafico var datiGrafico = dati.Tables[1]; var xGrafico = xLinea + 20; var graficoBarre = new StackedPDF(xGrafico, 1F) { HeightSingleBar = 16, Width = 300,MarginAxisYFromTop=0,MarginAxisY=7 }; serieCollezione = new List { new Serie { Name = "DistribuzioneFinalita" } }; foreach (DataRow item in datiGrafico.Rows) { serieCollezione[0].Points.Add(new Point { LabelAxisY = item["Nominativo"].ToString(), Color = new ColorPDF(Convert.ToInt32(item["Red"]), Convert.ToInt32(item["Green"]), Convert.ToInt32(item["Blue"])), Value = Convert.ToDouble(item["ValoreStimatoProprieta"]), ShowLabelAxisY = true }); } graficoBarre.SeriesCollection = serieCollezione; AddElement(new ResetterYPDF(y1Linea + 50)); AddElement(graficoBarre); #endregion } /// /// Recupera i dati necessari alla Section restituendo un DataTable. /// /// protected override DataTable GetDataTable() { return null; } /// /// Recupera i dati necessari alla Section restituendo un DataSet. /// /// protected override DataSet GetDataSet() { #region Definizione dei parametri var parametri = new List { new Parametro { Direction = ParameterDirection.Input, DbType = DbType.Int64, ParameterName = "ChiaveClientePB", Value = EnvironmentFacade.ReportEnvironment.Cliente.Chiave } }; #endregion var dt = new DataSet(); dt = EnvironmentFacade.ReportEnvironment.FinalitaImmobiliare.ImmobiliareCEUnica ? DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_FinalitaImmobiliare_S2_Sintesi", parametri) : DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaEvoluta, "REP_FinalitaImmobiliare_S2_Sintesi", parametri); return dt; } } }