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;
}
}
}