using System;
using System.Collections.Generic;
using System.Linq;
using Consulenza.ExternalServices;
using Consulenza.ReportWriter.Business;
using Consulenza.ReportWriter.Business.Entity;
using Consulenza.ReportWriter.Business.OBJ_PDF;
using System.Data;
using Consulenza.ReportWriter.Business.Headers;
using Consulenza.ReportCommon;
namespace Consulenza.ReportWriter.Manager.Section.Immobiliare.MonitoraggioNucleo
{
///
/// Patrimonio Immobiliare Stima delle imposte (id 41) Fabbricati
///
//public class S9 : Monitoraggio.S9 {
// public S9(EnvironmentFacade environmentFacade, int idSection)
// : base(environmentFacade, idSection)
// {
// }
//}
public class S9 : Entity.Section
{
public S9(EnvironmentFacade environmentFacade, int idSection)
: base(environmentFacade, idSection)
{
try
{
Draw();
}
catch (Exception ex)
{
SectionLogger.Write("S9", ex.Message, SectionLoggerMessageLevel.E, EnvironmentFacade.ReportEnvironment);
}
}
///
/// Scheda2. Patrimonio immobiliare –Sintesi (distribuzione del patrimonio complessivo del cliente diviso per tipologia e cointestatari)
///
protected override sealed void Draw()
{
//MonitoraggioImmobiliarePageHeaderManager.DrawIndexPage(Elements, 210);
var width = 345;
int xSx = 35;
int xDx = 400;
var dataset = GetDataSet();
var _text = dataset.Tables[0];
var _data = dataset.Tables[1];
List indiciPagina = _data.AsEnumerable()
.Select(z => z.Field("idREP_IMM_MON_Pagina")).Distinct().ToList();
foreach (var indice in indiciPagina)
{
string paragrafoSx = "";
string paragrafoDx = "";
string labelSx = "";
string labelDx = "";
string testo = "";
AddElement(new PagePDF(PagePDF.PagePDFType.Generic));
FormattedTextAreaPDF testoSx = null;
FormattedTextAreaPDF testoDx = null;
if (_text.AsEnumerable().Where(x => x.Field("idREP_IMM_MON_Pagina") == indice).Count() > 0)
{
foreach (var row in _text.AsEnumerable().Where(x => x.Field("idREP_IMM_MON_Pagina") == indice).ToList())
{
testo = "";
labelSx = "";
labelDx = "";
testo = "" + row.Field("titolo") + "
";
for (int i = 1; i <= 15; i++)
testo += row.Field("testo" + i) != null ? "" + row.Field("testo" + i) + "
" : "";
// SPLIT PARAGRAFO
if (testo.Contains("SPLITPARAGRAPH"))
{
var listaSplit = StringExtensions.SplitAtOccurence(testo, "SPLITPARAGRAPH", 1);
labelSx = listaSplit[0] + "
";
labelDx += "
";
listaSplit.RemoveRange(0, 1);
foreach (var stringa in listaSplit)
labelDx += stringa;
paragrafoSx += labelSx;
paragrafoDx += labelDx;
}
else
{
if (row.Field("posizione").Equals("R"))
paragrafoDx += testo;
else
paragrafoSx += testo;
}
}
AddElement(new ResetterYPDF(60));
testoSx = new FormattedTextAreaPDF(paragrafoSx, 35, width) { FontSize = 9, FontColor = ColorPDF.Immobiliare_Grigio_TestoStandard, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify };
testoDx = new FormattedTextAreaPDF(paragrafoDx, 410, width) { FontSize = 9, FontColor = ColorPDF.Immobiliare_Grigio_TestoStandard, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify };
AddElement(testoSx);
AddElement(new ResetterYPDF(65));
AddElement(testoDx);
if (getNota(_text.Rows[0]).Length > 0)
{
var nota = new FormattedTextAreaPDF(getNota(_text.Rows[0]), 60, width) { Y = EnvironmentFacade.RendererFacade.YLowerLimit - 18, FontSize = 6, FontColor = ColorPDF.Nero, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify };
AddElement(nota);
}
}
if (_data.AsEnumerable().Where(x => x.Field("idREP_IMM_MON_Pagina") == indice).Count() > 0
&& _data.AsEnumerable().Where(x => x.Field("idREP_IMM_MON_Pagina") == indice && x.Field("descrizioneImage") != null).Count() > 0)
{
foreach (var image in _data.AsEnumerable().Where(x => x.Field("idREP_IMM_MON_Pagina") == indice).ToList())
{
string titoloStatico = image.Field("descrizioneImage") + "
";
var titoloGrafico = new FormattedTextAreaPDF(titoloStatico, 50, width * 2) { FontSize = 10, FontColor = ColorPDF.Immobiliare_Grigio_TitoloPiccolo, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify };
var cartina = new ImagePDF(35, 0.465F, image.Field("bytesImage") + ".jpeg");
AddElement(new ResetterYPDF(50));
AddElement(titoloGrafico);
AddElement(cartina);
if (getNota(image).Length > 0)
{
string testoNota = getNota(image);
IEnumerable rows = _data.AsEnumerable()
.Where(x => x.Field("nota1") != null);
int count = testoNota.Replace("
", "\t").Count(x => x == '\t');
var nota = new FormattedTextAreaPDF(testoNota, 60, width) { Y = EnvironmentFacade.RendererFacade.YLowerLimit - 13 - (5 * count), FontSize = 6, FontColor = ColorPDF.Nero, TextHorizontalAlign = ceTe.DynamicPDF.TextAlign.Justify };
AddElement(nota);
}
}
}
}
}
protected string getNota(DataRow row)
{
string nota = "";
for (int i = 1; i <= 5; i++)
if (row.Field("nota" + i) != null)
nota += row.Field("nota" + i) + "
";
return nota;
}
///
/// 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 override DataSet GetDataSet()
{
#region Definizione dei parametri
var parametri = new List
{
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int32,
ParameterName = "IdReport",
//Value = EnvironmentFacade.ReportEnvironment.ReportId
// Impostato a -1 per prendere quello dei Report Monitoraggio Immobiliare
Value = EnvironmentFacade.ReportEnvironment.ReportId - 1
},
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int32,
ParameterName = "IdSezione",
Value = IdSection
}
};
#endregion
return DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerReportModeler, "REP_Monitoraggio_Immobiliare_S9_Mappa_Rischio_Sismico", parametri);
}
}
}