using System; using System.Collections.Generic; using System.Linq; using Consulenza.ReportWriter.Business; using Consulenza.ReportWriter.Business.OBJ_PDF; using System.Data; using Consulenza.ReportWriter.Business.Entity; using Consulenza.ReportCommon; namespace Consulenza.ReportWriter.Manager.Section.Immobiliare.MappaturaPreliminare { /// /// Dettaglio immobili con anomalie catastali (id 134) /// public class S5 : Entity.Section { public S5(EnvironmentFacade environmentFacade, int idSection) : base(environmentFacade, idSection) { try { Draw(); } catch (Exception ex) { SectionLogger.Write("S5", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment); } } /// /// Scheda8. Dettaglio immobili con anomalie catastali (riepilogo delle anomalie catastali per immobile) /// protected override sealed void Draw() { var dati = GetDataSet(); var testi = GetText(); var titolo = new FormattedTextAreaPDF(testi.Rows[0]["testo1"].ToString(), EnvironmentFacade.RendererFacade.XLeftLimit, 600) { FontSize = 10, FontColor = ColorPDF.Immobiliare_Grigio_TestoStandard }; AddElement(new SpacePDF(40)); AddElement(titolo); #region Oggetti da ripetere al salto pagina della tabella var listaOggettiDaRipetere = new List { new SpacePDF(40), titolo, new SpacePDF(20) }; AddElement(new RepeaterPDF(listaOggettiDaRipetere)); #endregion AddElement(new SpacePDF(20)); #region Tabella var tabella = new TablePDF(EnvironmentFacade.RendererFacade.XLeftLimit, dati.Tables[0]) { Style = Style.Immobiliare, Footer = false, ShowBorderLastLine = true, ShowSeparationLines = true }; tabella.Columns.Add(new ColumnPDF("descrizione", 205, HorizontalAlignmentType.Sinistra, false, false, 8, ColumnType.Testo, "descrizione", "Descrizione") { FontColor = ColorPDF.Nero }); tabella.Columns.Add(new ColumnPDF("diritto", 100, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Testo, "diritto", "Tipologia diritto") { FontColor = ColorPDF.Nero }); tabella.Columns.Add(new ColumnPDF("quota", 40, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Percentuale, "quotaproprieta", "Quota") { FontColor = ColorPDF.Nero }); tabella.Columns.Add(new ColumnPDF("SEP1", 10, HorizontalAlignmentType.Nonimpostato, false, false, 8, ColumnType.Testo, "sep1", string.Empty)); //Separatore tabella.Columns.Add(new ColumnPDF("anomalierilevate", 385, HorizontalAlignmentType.Sinistra, true, false, 8, ColumnType.Testo, "anomalierilevate", "Anomalie rilevate") { HeaderBackgroundColor = ColorPDF.Immobiliare_Grigio_TitoloPiccolo, FontColor = ColorPDF.Nero, BackgroundColor = new ColorPDF(196, 196, 187) }); AddElement(tabella); #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 sealed 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 ds = new DataSet(); var dt = EnvironmentFacade.ReportEnvironment.MappaturaPreliminare.ImmobiliareCEUnica ? DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_MappaturaPreliminare_S5_DettaglioImmobiliAnomalieCatastali", parametri) : DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaEvoluta, "REP_MappaturaPreliminare_S5_DettaglioImmobiliAnomalieCatastali", parametri); //Riaggregazione var query = (from p in dt.Tables[0].AsEnumerable() group p by p.Field("IdImmobileCatasto") into g select new { IdImmobileCatasto = g.Key, TipoImmobile = g.Select(x => x.Field("TipoImmobile")).FirstOrDefault(), Descrizione = g.Select(x => x.Field("Descrizione")).FirstOrDefault(), Diritto = g.Select(x => x.Field("Diritto")).FirstOrDefault(), QuotaProprieta = g.Select(x => x.Field("QuotaProprieta")).FirstOrDefault(), ValoreStimato = g.Select(x => x.Field("ValoreStimato")).FirstOrDefault(), AnomalieRilevate = string.Join("

", g.Select(x => x.Field("AnomalieRilevate"))) }).ToList(); var dtResult = dt.Tables[0].Clone(); foreach (var item in query) dtResult.Rows.Add(item.IdImmobileCatasto,item.TipoImmobile, item.Descrizione, item.Diritto, item.QuotaProprieta,item.ValoreStimato, string.Empty, item.AnomalieRilevate); ds.Tables.Add(dtResult); return ds; } } }