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
{
///
/// Dettaglio immobili con anomalie catastali (id 40)
///
public class S8 : Entity.Section
{
public S8(EnvironmentFacade environmentFacade, int idSection)
: base(environmentFacade, idSection)
{
try
{
Draw();
}
catch (Exception ex)
{
SectionLogger.Write("S8", 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 = GetDataTable();
var testi = GetText();
string sTesto = "Di seguito si riassumono le anomalie catastali rilevate.";
if (testi.Rows.Count > 0)
sTesto = testi.Rows[0]["testo1"].ToString();
var titolo = new FormattedTextAreaPDF(sTesto, 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)
{
Style = Style.Immobiliare,
Footer = false,
ShowBorderLastLine = true,
ShowSeparationLines = true
};
tabella.Columns.Add(new ColumnPDF("descrizione", 240, HorizontalAlignmentType.Sinistra, false, false, 8, ColumnType.Testo, "descrizione", "Descrizione") { FontColor = ColorPDF.Nero });
tabella.Columns.Add(new ColumnPDF("valorestimato", 100, HorizontalAlignmentType.Destra, false, false, 8, ColumnType.Decimale, "valorestimato", "Valore stimato (€)") { FontColor = ColorPDF.Nero });
tabella.Columns.Add(new ColumnPDF("SEP1", 20, HorizontalAlignmentType.Nonimpostato, false, false, 8, ColumnType.Testo, "sep1", string.Empty)); //Separatore
tabella.Columns.Add(new ColumnPDF("anomalierilevate", 395, 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()
{
#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 =EnvironmentFacade.ReportEnvironment.Immobiliare.ImmobiliareCEUnica ? DataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_Immobiliare_S8_DettaglioImmobiliAnomalieCatastali", parametri)
: DataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_Immobiliare_S8_DettaglioImmobiliAnomalieCatastali", 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;
}
///
/// Recupera i dati necessari alla Section restituendo un DataSet.
///
///
protected sealed override DataSet GetDataSet()
{
return null;
}
}
}