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; namespace Consulenza.ReportWriter.Manager.Section.Immobiliare.Diagnosi.Nucleo { /// /// Dettaglio immobili con anomalie catastali (id 40) /// public class S8 : Immobiliare.Diagnosi.S8 { public S8(EnvironmentFacade environmentFacade, int idSection) : base(environmentFacade, idSection) { } /// /// Recupera i dati necessari alla Section restituendo un DataTable. /// /// protected override DataTable GetDataTable() { #region Definizione dei parametri var parametri = new List { new Parametro { Direction = ParameterDirection.Input, DbType = DbType.Int64, ParameterName = "ChiaveNucleo", Value = EnvironmentFacade.ReportEnvironment.NucleoImmobiliare.ChiaveNucleo } }; #endregion var dt = EnvironmentFacade.ReportEnvironment.NucleoImmobiliare.ImmobiliareCEUnica ? DataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_Nucleo_Immobiliare_S8_DettImmobiliAnomalieCatastali", parametri) : DataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerConsulenzaEvoluta, "REP_Nucleo_Immobiliare_S8_DettImmobiliAnomalieCatastali", parametri); //Riaggregazione var query = (from p in dt.AsEnumerable() group p by p.Field("IdImmobileCatasto") into g select new { IdImmobileCatasto = g.Key, Descrizione = g.Select(x => x.Field("Descrizione")).FirstOrDefault(), ValoreStimato = g.Select(x => x.Field("ValoreStimato")).FirstOrDefault(), AnomalieRilevate = string.Join("

", g.Select(x => x.Field("AnomalieRilevate"))) }).ToList(); var dtResult = dt.Clone(); foreach (var item in query) dtResult.Rows.Add(item.IdImmobileCatasto, item.Descrizione, item.ValoreStimato, string.Empty, item.AnomalieRilevate); return dtResult; } } }