172 lines
7.1 KiB
C#
172 lines
7.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Consulenza.ExternalServices;
|
|
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;
|
|
using Consulenza.ReportWriter.Business.Entity;
|
|
|
|
namespace Consulenza.ReportWriter.Manager.Section.Immobiliare.Diagnosi.Nucleo
|
|
{
|
|
/// <summary>
|
|
/// Distribuzione geografica Terreni (id 36)
|
|
/// </summary>
|
|
public class S4 : Immobiliare.Diagnosi.S4
|
|
{
|
|
private readonly float _xLocalizzazioneGeografica;
|
|
|
|
public S4(EnvironmentFacade environmentFacade, int idSection)
|
|
: base(environmentFacade, idSection)
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// Disegna il grafico. Se presente la cartina verra disegnato dopo la tabella altrimenti al posto della cartina.
|
|
/// </summary>
|
|
/// <param name="dati"></param>
|
|
/// <param name="cartinaPresente"></param>
|
|
protected override void AddChart(DataTable dati, bool cartinaPresente,int spazioInizale=40)
|
|
{
|
|
// Il grafico sarà disegnato al posto della cartina se questa non è presente
|
|
float xGrafico = EnvironmentFacade.RendererFacade.XLeftLimit + 100;
|
|
if (!cartinaPresente)
|
|
{
|
|
xGrafico = _xLocalizzazioneGeografica + 50;
|
|
AddElement(new ResetterYPDF());
|
|
AddElement(new SpacePDF(47));
|
|
}
|
|
|
|
var serieCollezione = new List<Serie>();
|
|
var datiGrafico = dati;
|
|
|
|
var graficoBarre = new StackedPDF(xGrafico, 1F)
|
|
{
|
|
HeightSingleBar = 25,
|
|
Width = 250,
|
|
ShowLegend = true,
|
|
BorderLineTop = true,
|
|
BorderLineX = xGrafico - 100,
|
|
BorderLineWidth = 360,
|
|
MarginAxisYFromTop = 0,
|
|
MarginAxisY = 7,
|
|
DinamicFloatXEtichettaLateraleBarra = false
|
|
};
|
|
|
|
serieCollezione.Add(new Serie { Name = "ProprietaCliente", Text = "Proprietà del nucleo", Color = new ColorPDF(174, 150, 81) });
|
|
serieCollezione.Add(new Serie { Name = "ProprietaAltriIntestatari", Text = "Proprietà di altri intestatari", Color = new ColorPDF(206, 219, 209) });
|
|
|
|
foreach (DataRow item in datiGrafico.Rows)
|
|
{
|
|
serieCollezione[0].Points.Add(new Point
|
|
{
|
|
LabelAxisX = item["Comune"].ToString(),
|
|
Color = serieCollezione[0].Color,
|
|
Value = Convert.ToDouble(item["ValoreStimatoProprieta"]),
|
|
ShowLabelAxisX = true,
|
|
ShowLabelAxisY = false
|
|
});
|
|
|
|
serieCollezione[1].Points.Add(new Point
|
|
{
|
|
LabelAxisY = Helper.FormatCurrency(item["ValoreStimatoTotale"].ToString()),
|
|
Color = serieCollezione[1].Color,
|
|
Value = Convert.ToDouble(item["ValoreStimatoAltri"]),
|
|
ShowLabelAxisY = true,
|
|
ShowLabelAxisX = false
|
|
});
|
|
}
|
|
|
|
graficoBarre.SeriesCollection = serieCollezione;
|
|
|
|
|
|
AddElement(new SpacePDF(spazioInizale));
|
|
|
|
AddElement(graficoBarre);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Recupera i dati necessari alla Section restituendo un DataSet.
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
protected override DataSet GetDataSet()
|
|
{
|
|
var ds = new DataSet();
|
|
|
|
#region Definizione dei parametri
|
|
|
|
var parametri = new List<Parametro>
|
|
{
|
|
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_S4_DistribuzioneGeoTerreni", parametri)
|
|
: DataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerConsulenzaEvoluta, "REP_Nucleo_Immobiliare_S4_DistribuzioneGeoTerreni", parametri);
|
|
|
|
#region Riaggregazioni
|
|
|
|
var dt1 = new DataTable();
|
|
dt1.Columns.Add("Comune_Tipologia", typeof(string));
|
|
dt1.Columns.Add("NumeroImmobili", typeof(decimal));
|
|
dt1.Columns.Add("ValoreStimatoProprieta", typeof(decimal));
|
|
dt1.Columns.Add("ValoreStimatoTotale", typeof(decimal));
|
|
dt1.Columns.Add("FontBold", typeof(bool));
|
|
dt1.Columns.Add("ReplaceIfZero", typeof(string));
|
|
dt1.Columns.Add("CanLastRow", typeof(bool));
|
|
dt1.Columns.Add("Codice_Tipologia", typeof(string));
|
|
|
|
var dt2 = new DataTable();
|
|
dt2.Columns.Add("Comune", typeof(string));
|
|
dt2.Columns.Add("ValoreStimatoProprieta", typeof(decimal));
|
|
dt2.Columns.Add("ValoreStimatoAltri", typeof(decimal));
|
|
dt2.Columns.Add("ValoreStimatoTotale", typeof(decimal));
|
|
|
|
|
|
// Distinct sui comuni
|
|
var distinctComuni = new DataView(dt).ToTable(true, "Comune");
|
|
|
|
foreach (DataRow comune in distinctComuni.Rows)
|
|
{
|
|
IEnumerable<DataRow> query = from tipologie in dt.AsEnumerable()
|
|
where tipologie.Field<string>("Comune").Equals(comune["Comune"].ToString())
|
|
select tipologie;
|
|
|
|
var intestazione = true;
|
|
foreach (var item in query)
|
|
{
|
|
if (intestazione)
|
|
{
|
|
dt1.Rows.Add(string.Format("{0} ({1})", item["comune"], item["provincia"]), 0, 0, 0, true, " ", false, string.Empty); // Intestazione
|
|
dt2.Rows.Add(string.Format("{0} ({1})", item["comune"], item["provincia"]),
|
|
Convert.ToDecimal(query.Sum(o => o.Field<decimal>("valorestimatoproprieta"))),
|
|
Convert.ToDecimal(query.Sum(o => o.Field<decimal>("valorestimatototale")) - query.Sum(o => o.Field<decimal>("valorestimatoproprieta"))),
|
|
Convert.ToDecimal(query.Sum(o => o.Field<decimal>("valorestimatototale"))));
|
|
intestazione = false;
|
|
}
|
|
|
|
dt1.Rows.Add(item["tipologia"], Convert.ToDecimal(item["numeroimmobili"]), Convert.ToDecimal(item["valorestimatoproprieta"]), Convert.ToDecimal(item["valorestimatototale"]), false, "-", true, item["codicetipologia"]); // Dettaglio
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
ds.Tables.Add(dt.Copy());
|
|
ds.Tables.Add(dt1);
|
|
ds.Tables.Add(dt2);
|
|
|
|
return ds;
|
|
}
|
|
}
|
|
}
|