1678 lines
75 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using Consulenza.ReportModeler.Business.Base.Proposta;
using Consulenza.ReportWriter.Manager;
using Consulenza.ReportCommon;
using Consulenza.ReportWriter.Manager.Chapter.Entity;
using Consulenza.ReportWriter.Manager.Section.Entity;
using Consulenza.ReportWriter.Business.Entity;
using Consulenza.ReportWriter.Business;
using Consulenza.ReportWriter.Manager.Integration;
using System.Linq;
using Consulenza.ReportWriter.Business.Headers;
namespace Consulenza.ReportModeler.Manager
{
/// <summary>
/// Gestore di rendering della struttura del Report sul configuratore (BackOffice)
/// e gestore della stampa delle sezioni da inserire nel documento PDF in stampa (Services di Produzione).
/// </summary>
public class ReportStructManager
{
public Consulenza.DataServices.DatiSeiUnico datiSeiUnico;
public ReportStructManager() { }
public virtual byte[] CreateReport_Unico(ReportStruct struttura, Consulenza.DataServices.DatiSeiUnico datiSeiUnico)
{
//#region idReport e idModello del report da stampare. Ogni tipologia di report avrà una logica di business diversa.
//var reportStruct = new Business.Unica.Nucleo.ReportStructBusiness();
//var idReport = reportStruct.GetIdReport();
//var idModel = reportStruct.GetIdModel();
//#endregion
//#region Recupero la struttura del report (_reportStructure)
//_reportStructure = GetStructure(idReport, idModel, struttura.Schede.Select(o => o.Id).ToList());
//#endregion
//#region Recupero le variabili di ambiente del report (_reportEnvironment)
//_reportEnvironment = GetEnvironment(chiaveCliente, idReport, idModel, new NucleoUnica());
//_reportEnvironment.ReportStruct = struttura;
////#endregion
return Draw(struttura, datiSeiUnico);
}
private byte[] Draw(ReportStruct struttura, Consulenza.DataServices.DatiSeiUnico datiSeiUnico)
{
var reportEntities = new List<EntityBase>();
string typeNameIntegration;
Type typeIntegration;
var environmentFacade = new EnvironmentFacade(_reportEnvironment);
var writerEntities = new WriterEntities(environmentFacade);
environmentFacade.datiSeiUnico = datiSeiUnico;
#region Logica di Integrazione di layout
var integrationLayoutRows = _reportStructure.Select("Integrazione_ChiaveLayout is not null");
foreach (var itemIntegrationLayout in integrationLayoutRows)
{
typeNameIntegration = string.Format("{0}.{1}, Consulenza.ReportWriter.Manager", itemIntegrationLayout["Integrazione_NameSpace"], itemIntegrationLayout["Integrazione_CodiceClasse"]);
typeIntegration = Type.GetType(typeNameIntegration);
if (typeIntegration != null)
{
//Creo l'istanza passando al costruttore la DataGeometry e recupero la nuova struttura del report. La struttura è definita dalle classi che ereditato IntegrationLayout
_reportStructure = ((IntegrationLayout)Activator.CreateInstance(typeIntegration, _reportStructure, itemIntegrationLayout, _reportEnvironment)).RecalculateStructure();
}
}
#endregion
var capitoloChiaveLayoutPrecedente = string.Empty;
foreach (DataRow row in _reportStructure.Rows)
{
var idCapitolo = Convert.ToInt32(row["idCapitolo"]);
var idSection = Convert.ToInt32(row["idSezione"]);
var exist = true; // determina l'esistenza e quindi la stampa del capitolo e sezione.
#region Integrazione Layout
typeNameIntegration = string.Format("{0}.{1}, Consulenza.ReportWriter.Manager", row["Integrazione_NameSpace"], row["Integrazione_CodiceClasse"]);
typeIntegration = Type.GetType(typeNameIntegration);
var integrationLayout = row["Integrazione_ChiaveLayout"] == DBNull.Value || typeIntegration == null ? null : ((IntegrationLayout)Activator.CreateInstance(typeIntegration, _reportStructure, row, _reportEnvironment));
var duplicazioneCapitolo = integrationLayout != null && integrationLayout.DuplicaCapitolo;
#endregion
#region Namespaces ConsulenzaUnica
string desinenzaNamespace = "";
switch (_reportEnvironment.ReportType)
{
case ReportType.Unica_Diagnosi:
desinenzaNamespace = ".Diagnosi";
break;
case ReportType.Unica_Monitoraggio:
desinenzaNamespace = ".Monitoraggio";
break;
case ReportType.Unica_Proposta:
desinenzaNamespace = ".Proposta";
break;
case ReportType.Unica_Nucleo:
desinenzaNamespace = ".Nucleo";
break;
}
#endregion
#region Capitoli
if (capitoloChiaveLayoutPrecedente != row["Capitolo_ChiaveLayout"].ToString() || duplicazioneCapitolo)
{
var typeNameChapter = string.Format("{0}.{1}, Consulenza.ReportWriter.Manager", row["Capitolo_NameSpace"] + desinenzaNamespace, row["Capitolo_CodiceClasse"]);
var typeChapter = Type.GetType(typeNameChapter);
if (typeChapter != null)
{
//Creo l'istanza passando al costruttore la DataGeometry:
Chapter chapther;
if (integrationLayout == null)
chapther = Activator.CreateInstance(typeChapter, environmentFacade, idCapitolo, Convert.ToBoolean(row["Capitolo_RipetiOgniPagina"])) as Chapter;
else
chapther = Activator.CreateInstance(typeChapter, environmentFacade, idCapitolo, Convert.ToBoolean(row["Capitolo_RipetiOgniPagina"]), integrationLayout) as Chapter;
//******* Determino l'esistenza del capitolo e sezione***********
exist = chapther.Exist;
if (chapther != null && exist)
{
// Imposto le propietà ChapterFacade
chapther.ChapterFacade.RepeatOnEachPage = chapther.RepeatOnEachPage;
//Accodo l'istanza alla collezione.
reportEntities.Add(chapther);
}
}
}
#endregion
#region Paragrafi
// Attualmente non è richiesta la gestione dei paragrafi
#endregion
#region Sezioni
var typeNameSection = string.Format("{0}.{1}, Consulenza.ReportWriter.Manager", row["Sezione_NameSpace"] + desinenzaNamespace, row["Sezione_CodiceClasse"]);
var typeSection = Type.GetType(typeNameSection);
//Creo l'istanza passando al costruttore la DataGeometry:
Section section;
if (integrationLayout == null)
section = Activator.CreateInstance(typeSection, environmentFacade, idSection) as Section;
else
section = Activator.CreateInstance(typeSection, environmentFacade, idSection, integrationLayout) as Section;
if (section != null && exist)
{
//Accodo l'istanza alla collezione.
reportEntities.Add(section);
}
#endregion
capitoloChiaveLayoutPrecedente = row["Capitolo_ChiaveLayout"].ToString();
}
return writerEntities.RenderEntities(reportEntities);
}
/// <summary>
/// Costruttore
/// </summary>
/// <param name="cliente">cliente</param>
/// <param name="privatebanker">privatebanker</param>
public ReportStructManager(Cliente cliente, PrivateBanker privatebanker, bool propostabaseCU)
{
_cliente = cliente;
_privatebanker = privatebanker;
_propostaBaseCU = propostabaseCU;
}
/// <summary>
/// Costruttore
/// </summary>
/// <param name="cliente">cliente</param>
/// <param name="privatebanker">privatebanker</param>
public ReportStructManager(Cliente cliente, PrivateBanker privatebanker)
{
_cliente = cliente;
_privatebanker = privatebanker;
}
public ReportStructManager(Cliente cliente, PrivateBanker privatebanker, Delegato privateDelegato)
{
_cliente = cliente;
_privatebanker = privatebanker;
_privateDelegato = privateDelegato;
}
/// <summary>
/// Costruttore
/// </summary>
/// <param name="nucleo">nucleo</param>
/// <param name="privatebanker">privatebanker</param>
public ReportStructManager(Nucleo nucleo, PrivateBanker privatebanker)
{
_nucleo = nucleo;
_privatebanker = privatebanker;
}
/// <summary>
/// Imposta o recupera il booleano che indica se proposta base è per CU o CB
/// </summary>
private bool _propostaBaseCU;
/// <summary>
/// Imposta o recupera il booleano che indica se immobiliare è evoluta o CU
/// </summary>
private bool _immobiliareCU;
/// <summary>
/// Imposta o recupera il Cliente del report
/// </summary>
private readonly Cliente _cliente;
/// <summary>
/// Imposta o recupera il PrivateBanker del report
/// </summary>
private readonly PrivateBanker _privatebanker;
private readonly Delegato _privateDelegato;
/// <summary>
/// La struttura del Report
/// </summary>
private DataTable _reportStructure;
/// <summary>
/// Gestore dell'ambiente generale di elaborazione (cliente, template, rete etc ...).
/// </summary>
private ReportEnvironment _reportEnvironment;
/// <summary>
/// Imposta o recupera le informazioni sul Nucleo
/// </summary>
private readonly Nucleo _nucleo;
#region CONSULENZA BASE
/// <summary>
/// Converte la rappresentazione interna del Report in un array binario costituente il documento PDF del Report.
/// </summary>
/// <param name="chiaveCliente">chiave del cliente (ChiaveClientePB)</param>
/// <param name="chiaveProposta">chiave della Proposta</param>
/// <param name="reportType">tipo di report che si vuol produrre</param>
/// <returns></returns>
public virtual byte[] CreateReport(long chiaveCliente, int chiaveProposta, ReportType reportType, bool unica)
{
#region Recupero l'idReport e idModello del report da stampare. Ogni tipologia di report avrà una logica di business diversa.
_propostaBaseCU = unica;
var idModel = 0;
var idReport = 0;
if (reportType == ReportType.Base_Proposta)
{
var reportStruct = new ReportStructBusiness();
idReport = reportStruct.GetIdReport();
idModel = reportStruct.GetIdModel(chiaveCliente, chiaveProposta, _propostaBaseCU);
}
if (idModel <= 0)
throw new Exception("Non è stato trovato l'id del modello per il report da produrre");
#endregion
#region Recupero la struttura del report (_reportStructure)
_reportStructure = GetStructure(idReport, idModel);
#endregion
#region lettura rappresentate legale/delegato
#endregion
#region Recupero le variabili di ambiente del report (_reportEnvironment)
_reportEnvironment = GetEnvironment(chiaveCliente, idReport, idModel, new Proposta { Chiave = chiaveProposta, PropostaCBUnica = _propostaBaseCU });
#endregion
return Draw();
}
/// <summary>
/// Recupera informazioni per la classe ReportEnvironment tra cui :Template del PDF da utilizzare.
/// </summary>
/// <param name="chiaveCliente">chiave del cliente (ChiaveClientePB)</param>
/// <param name="idReport">id del report da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Report]</param>
/// <param name="idModel">id del modello da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Modelli]</param>
/// <param name="proposta">info sulla proposta oggetto del report</param>
/// <returns>ReportEnvironment</returns>
private ReportEnvironment GetEnvironment(long chiaveCliente, int idReport, int idModel, Proposta proposta)
{
var e = new ReportEnvironment(chiaveCliente, proposta)
{
Cliente = _cliente,
PrivateBanker = _privatebanker,
PrivateDelegato = _privateDelegato
};
#region Imposto il template
switch (e.PrivateBanker.CodiceRete)
{
case "F":
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.proposta.cb.bf.copertina.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.proposta.cb.bf.pagina.pdf";
break;
case "S":
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.proposta.cb.spi.copertina.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.proposta.cb.spi.pagina6.pdf";
break;
default:
throw new Exception("Rete non valorizzata in Environment per PB:" + e.PrivateBanker.CodiceRete + e.PrivateBanker.Codice + " CLIENTE:" + e.Cliente.CodiceFiscale + " IDPROPOSTA:" + e.Proposta.Chiave + " CHIAVECLIENTEPB:" + chiaveCliente);
}
#endregion
#region Informazioni aggiuntive sulla Proposta
if (idModel.Equals(1))
e.Proposta.EsitoAdeguatezza = TipologiaEsitoAdeguatezza.Adeguata;
else if (idModel.Equals(2))
e.Proposta.EsitoAdeguatezza = TipologiaEsitoAdeguatezza.NonAdeguata;
#endregion
e.ReportId = idReport;
e.ModelId = idModel;
return e;
}
#endregion
#region IMMOBILIARE
/// <summary>
/// Ottiene un array binario del PDF del report di Immobiliare di Diagnosi di ConsulenzaEvoluta per un cliente identificato con chiaveClientePb.
/// </summary>
/// <param name="chiaveCliente">Chiave del cliente</param>
/// <param name="idImmobileCatasto">lista di id immobile al catasto. Corrisponde al campo chiaveProdottoTerzi della tabella ConsulenzaEvoluta.PatrimonioTerzi</param>
/// <param name="idSezione">lista delle sezioni. Campo:IdSezione, tabella:Sezioni, database:ReportModeler2</param>
public virtual byte[] CreaReport_ImmobiliareDiagnosi(long chiaveCliente, List<string> idImmobileCatasto, List<Int32> idSezione, bool unica)
{
#region idReport e idModello del report da stampare. Ogni tipologia di report avrà una logica di business diversa.
_immobiliareCU = unica;
var reportStruct = new Business.Immobiliare.Diagnosi.ReportStructBusiness();
var idReport = reportStruct.GetIdReport();
var idModel = reportStruct.GetIdModel();
#endregion
#region Recupero la struttura del report (_reportStructure)
_reportStructure = GetStructure(idReport, idModel, idSezione);
#endregion
#region Recupero le variabili di ambiente del report (_reportEnvironment)
_reportEnvironment = GetEnvironment(chiaveCliente, idReport, idModel, new Immobiliare { IdImmobileCatasto = idImmobileCatasto, IdSezione = idSezione, ImmobiliareCEUnica = unica });
#endregion
return Draw();
}
public virtual byte[] CreaReport_ImmobiliareMonitoraggio(long chiaveCliente, List<string> idImmobileCatasto, List<Int32> idSezione, bool bBatch = false)
{
#region idReport e idModello del report da stampare. Ogni tipologia di report avrà una logica di business diversa.
_immobiliareCU = true; // unica
var reportStruct = new Business.Immobiliare.Monitoraggio.ReportStructBusiness();
var idReport = reportStruct.GetIdReport();
var idModel = reportStruct.GetIdModel();
#endregion
#region Recupero la struttura del report (_reportStructure)
_reportStructure = GetStructure(idReport, idModel, idSezione);
#endregion
#region Recupero le variabili di ambiente del report (_reportEnvironment)
_reportEnvironment = GetEnvironment(chiaveCliente, idReport, idModel, new MonitoraggioImmobiliare { IdImmobileCatasto = idImmobileCatasto, IdSezione = idSezione });
#endregion
return Draw(bBatch);
}
public virtual byte[] CreaReport_ImmobiliareMonitoraggioNuclei(Nucleo nucleo, List<long> chiaviClientiPb, List<string> idImmobileCatasto, List<Int32> idSezione)
{
#region idReport e idModello del report da stampare. Ogni tipologia di report avrà una logica di business diversa.
_immobiliareCU = true;
var reportStruct = new Business.Immobiliare.MonitoraggioNuclei.ReportStructBusiness();
var idReport = reportStruct.GetIdReport();
var idModel = reportStruct.GetIdModel();
#endregion
#region Recupero la struttura del report (_reportStructure)
_reportStructure = GetStructure(idReport, idModel, idSezione);
#endregion
#region Recupero le variabili di ambiente del report (_reportEnvironment)
if (idImmobileCatasto.Count > 0 && idImmobileCatasto[0] != "")
{
nucleo.IdImmobileCatasto = idImmobileCatasto;
nucleo.ChiaviClientiPBImmobili = chiaviClientiPb;
}
nucleo.ImmobiliareCEUnica = true;
nucleo.IdSezione = idSezione;
_reportEnvironment = GetEnvironment(nucleo, idReport, idModel, new MonitoraggioImmobiliareNuclei { IdImmobileCatasto = idImmobileCatasto, IdSezione = idSezione });
#endregion
return Draw();
}
public virtual byte[] CreaReport_ImmobiliareMonitoraggioNucleiCU(Nucleo nucleo, List<long> chiaviClientiPb, List<string> idImmobileCatasto, ReportStruct strutturaReport)
{
#region idReport e idModello del report da stampare. Ogni tipologia di report avrà una logica di business diversa.
_immobiliareCU = true;
var reportStruct = new Business.Immobiliare.MonitoraggioNuclei.ReportStructBusiness();
var idReport = reportStruct.GetIdReport();
var idModel = reportStruct.GetIdModel();
#endregion
#region Recupero la struttura del report (_reportStructure)
_reportStructure = GetStructure(idReport, idModel, strutturaReport.Schede.Select(o => o.Id).ToList());
#endregion
#region Recupero le variabili di ambiente del report (_reportEnvironment)
if (idImmobileCatasto.Count > 0 && idImmobileCatasto[0] != "")
{
nucleo.IdImmobileCatasto = idImmobileCatasto;
nucleo.ChiaviClientiPBImmobili = chiaviClientiPb;
}
nucleo.ImmobiliareCEUnica = true;
nucleo.IdSezione = strutturaReport.Schede.Select(o => o.Id).ToList();
_reportEnvironment = GetEnvironment(nucleo, idReport, idModel, new MonitoraggioImmobiliareNuclei { IdImmobileCatasto = idImmobileCatasto, IdSezione = strutturaReport.Schede.Select(o => o.Id).ToList() });
#endregion
return Draw();
}
public virtual byte[] CreaReport_ImmobiliareMonitoraggioCU(long chiaveCliente, List<string> idImmobileCatasto, ReportStruct strutturaReport)
{
#region idReport e idModello del report da stampare. Ogni tipologia di report avrà una logica di business diversa.
_immobiliareCU = true; // unica
var reportStruct = new Business.Immobiliare.Monitoraggio.ReportStructBusiness();
var idReport = reportStruct.GetIdReport();
var idModel = reportStruct.GetIdModel();
#endregion
#region Recupero la struttura del report (_reportStructure)
_reportStructure = GetStructure(idReport, idModel, strutturaReport.Schede.Select(o => o.Id).ToList());
#endregion
#region Recupero le variabili di ambiente del report (_reportEnvironment)
_reportEnvironment = GetEnvironment(chiaveCliente, idReport, idModel, new MonitoraggioImmobiliare { IdImmobileCatasto = idImmobileCatasto, IdSezione = strutturaReport.Schede.Select(o => o.Id).ToList() });
#endregion
return Draw();
}
/// <summary>
/// Recupera informazioni per la classe ReportEnvironment tra cui :Template del PDF da utilizzare.
/// </summary>
/// <param name="chiaveCliente">chiave del cliente (ChiaveClientePB)</param>
/// <param name="idReport">id del report da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Report]</param>
/// <param name="idModel">id del modello da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Modelli]</param>
/// <param name="immobiliare">info su immobiliare oggetto del report</param>
/// <returns>ReportEnvironment</returns>
private ReportEnvironment GetEnvironment(long chiaveCliente, int idReport, int idModel, Immobiliare immobiliare)
{
var e = new ReportEnvironment(chiaveCliente, immobiliare)
{
Cliente = _cliente,
PrivateBanker = _privatebanker
};
#region Imposto il template
switch (e.PrivateBanker.CodiceRete)
{
//case "F":
// e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.copertina.pdf";
// e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.pagina2.pdf";
// break;
//case "S":
// e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.copertina3.pdf";
// e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.pagina2.pdf";
// break;
case "F":
if (e.Cliente.FlagMonitoraggioImmobiliare)
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.copertinaDiagnosiContrattualizzato.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.paginaDiagnosiContrattualizzato.pdf";
}
else
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.copertinaDiagnosi.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.paginaDiagnosi.pdf";
}
break;
case "S":
if (e.Cliente.FlagMonitoraggioImmobiliare)
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.copertinaDiagnosiContrattualizzato.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.paginaDiagnosiContrattualizzato.pdf";
}
else
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.copertinaDiagnosi.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.paginaDiagnosi.pdf";
}
break;
default:
throw new Exception("Rete non valorizzata in Environment per PB:" + e.PrivateBanker.CodiceRete + e.PrivateBanker.Codice + " CLIENTE:" + e.Cliente.CodiceFiscale + " IDIMMOBILECATASTO:" + e.Immobiliare.IdImmobileCatasto + " CHIAVECLIENTEPB:" + chiaveCliente);
}
#endregion
e.ReportId = idReport;
e.ModelId = idModel;
return e;
}
private ReportEnvironment GetEnvironment(long chiaveCliente, int idReport, int idModel, MonitoraggioImmobiliare immobiliare)
{
var e = new ReportEnvironment(chiaveCliente, immobiliare)
{
Cliente = _cliente,
PrivateBanker = _privatebanker
};
#region Imposto il template
switch (e.PrivateBanker.CodiceRete)
{
//case "F":
// e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.MonitoraggioImmobiliare.cover_page_f.pdf";
// e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.MonitoraggioImmobiliare.regular_page_f.pdf";
// break;
//case "S":
// e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.MonitoraggioImmobiliare.cover_page_s.pdf";
// e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.MonitoraggioImmobiliare.regular_page_s.pdf";
// break;
case "F":
if (e.Cliente.FlagMonitoraggioImmobiliare)
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.copertinaMonitoraggioContrattualizzato.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.paginaMonitoraggioContrattualizzato.pdf";
}
else
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.copertinaMonitoraggio.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.paginaMonitoraggio.pdf";
}
break;
case "S":
if (e.Cliente.FlagMonitoraggioImmobiliare)
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.copertinaMonitoraggioContrattualizzato.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.paginaMonitoraggioContrattualizzato.pdf";
}
else
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.copertinaMonitoraggio.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.paginaMonitoraggio.pdf";
}
break;
default:
throw new Exception("Rete non valorizzata in Environment per PB:" + e.PrivateBanker.CodiceRete + e.PrivateBanker.Codice + " CLIENTE:" + e.Cliente.CodiceFiscale + " IDIMMOBILECATASTO:" + e.Immobiliare.IdImmobileCatasto + " CHIAVECLIENTEPB:" + chiaveCliente);
}
#endregion
e.ReportId = idReport;
e.ModelId = idModel;
return e;
}
private ReportEnvironment GetEnvironment(Nucleo nucleo, int idReport, int idModel, MonitoraggioImmobiliareNuclei immobiliareMonitoraggioNuclei)
{
var e = new ReportEnvironment(nucleo.ChiaveNucleo, nucleo, immobiliareMonitoraggioNuclei)
{
NucleoImmobiliare = nucleo,
PrivateBanker = _privatebanker
};
#region Imposto il template
switch (e.PrivateBanker.CodiceRete)
{
case "F":
if (e.NucleoImmobiliare.HasServizioAggiuntivoImmobiliare)
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.copertinaMonitoraggioContrattualizzato.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.paginaMonitoraggioContrattualizzato.pdf";
}
else
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.copertinaMonitoraggio.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.paginaMonitoraggio.pdf";
}
break;
case "S":
if (e.NucleoImmobiliare.HasServizioAggiuntivoImmobiliare)
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.copertinaMonitoraggioContrattualizzato.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.paginaMonitoraggioContrattualizzato.pdf";
}
else
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.copertinaMonitoraggio.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.paginaMonitoraggio.pdf";
}
break;
default:
throw new Exception("Rete non valorizzata in Environment per PB:" + e.PrivateBanker.CodiceRete + e.PrivateBanker.Codice + " CLIENTE:" + e.Cliente.CodiceFiscale + " IDIMMOBILECATASTO:" + e.Immobiliare.IdImmobileCatasto + " CHIAVECLIENTEPB:" + nucleo.ChiaveClientePBPrincipale);
}
#endregion
e.ReportId = idReport;
e.ModelId = idModel;
return e;
}
/// <summary>
/// Ottiene un array binario del PDF del report di Immobiliare di Diagnosi di ConsulenzaEvoluta per un nucleo familiare.
/// </summary>
/// <param name="nucleo">Nucleo familiare</param>
/// <param name="idImmobileCatasto">lista di id immobile al catasto. Corrisponde al campo chiaveProdottoTerzi della tabella ConsulenzaEvoluta.PatrimonioTerzi</param>
/// <param name="chiaviClientiPb">lista di chiaveclientepb dei componenti del nucleo.</param>
/// <param name="idSezione">lista delle sezioni. Campo:IdSezione, tabella:Sezioni, database:ReportModeler2</param>
public virtual byte[] CreaReport_ImmobiliareDiagnosi_Nucleo(Nucleo nucleo, List<string> idImmobileCatasto, List<long> chiaviClientiPb, List<Int32> idSezione, bool unica)
{
#region idReport e idModello del report da stampare. Ogni tipologia di report avrà una logica di business diversa.
_immobiliareCU = unica;
var reportStruct = new Business.Immobiliare.Diagnosi.Nucleo.ReportStructBusiness();
var idReport = reportStruct.GetIdReport();
var idModel = reportStruct.GetIdModel();
#endregion
#region Recupero la struttura del report (_reportStructure)
_reportStructure = GetStructure(idReport, idModel, idSezione);
#endregion
#region Recupero le variabili di ambiente del report (_reportEnvironment)
if (idImmobileCatasto.Count > 0 && idImmobileCatasto[0] != "")
{
nucleo.IdImmobileCatasto = idImmobileCatasto;
nucleo.ChiaviClientiPBImmobili = chiaviClientiPb;
}
nucleo.ImmobiliareCEUnica = unica;
nucleo.IdSezione = idSezione;
_reportEnvironment = GetEnvironment(nucleo, idReport, idModel);
#endregion
return Draw();
}
/// <summary>
/// Recupera informazioni per la classe ReportEnvironment tra cui :Template del PDF da utilizzare.
/// </summary>
/// <param name="nucleo"></param>
/// <param name="idReport">id del report da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Report]</param>
/// <param name="idModel">id del modello da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Modelli]</param>
/// <returns></returns>
private ReportEnvironment GetEnvironment(Nucleo nucleo, int idReport, int idModel)
{
var e = new ReportEnvironment(nucleo.ChiaveNucleo, nucleo)
{
NucleoImmobiliare = nucleo,
PrivateBanker = _privatebanker
};
#region Imposto il template
switch (e.PrivateBanker.CodiceRete)
{
case "F":
if (e.NucleoImmobiliare.HasServizioAggiuntivoImmobiliare)
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.copertinaDiagnosiContrattualizzato.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.paginaDiagnosiContrattualizzato.pdf";
break;
}
else
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.copertinaDiagnosi.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.paginaDiagnosi.pdf";
break;
}
case "S":
if (e.NucleoImmobiliare.HasServizioAggiuntivoImmobiliare)
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.copertinaDiagnosiContrattualizzato.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.paginaDiagnosiContrattualizzato.pdf";
break;
}
else
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.copertinaDiagnosi.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.paginaDiagnosi.pdf";
break;
}
default:
throw new Exception("Rete non valorizzata in Environment per PB:" + e.PrivateBanker.CodiceRete + e.PrivateBanker.Codice + " CHIAVENUCLEO: " + nucleo.ChiaveNucleo);
}
#endregion
e.ReportId = idReport;
e.ModelId = idModel;
return e;
}
/// <summary>
/// Ottiene un array binario del PDF del report di Immobiliare di Mappatura preliminare di ConsulenzaEvoluta per un cliente identificato con chiaveClientePb.
/// </summary>
/// <param name="chiaveCliente">Chiave del cliente</param>
/// <param name="idImmobileCatasto">lista di id immobile al catasto. Corrisponde al campo chiaveProdottoTerzi della tabella ConsulenzaEvoluta.PatrimonioTerzi</param>
/// <param name="idSezione">lista delle sezioni. Campo:IdSezione, tabella:Sezioni, database:ReportModeler2</param>
public virtual byte[] CreaReport_MappaturaPreliminare(long chiaveCliente, List<string> idImmobileCatasto, List<Int32> idSezione, bool unica)
{
#region idReport e idModello del report da stampare. Ogni tipologia di report avrà una logica di business diversa.
_immobiliareCU = unica;
var reportStruct = new Business.MappaturaPreliminare.ReportStructBusiness();
var idReport = reportStruct.GetIdReport();
var idModel = reportStruct.GetIdModel();
#endregion
#region Recupero la struttura del report (_reportStructure)
_reportStructure = GetStructure(idReport, idModel, idSezione);
#endregion
#region Recupero le variabili di ambiente del report (_reportEnvironment)
_reportEnvironment = GetEnvironment(chiaveCliente, idReport, idModel, new MappaturaPreliminare { IdImmobileCatasto = idImmobileCatasto, IdSezione = idSezione, ImmobiliareCEUnica = _immobiliareCU });
#endregion
return Draw();
}
/// <summary>
/// Recupera informazioni per la classe ReportEnvironment tra cui :Template del PDF da utilizzare.
/// </summary>
/// <param name="chiaveCliente">chiave del cliente (ChiaveClientePB)</param>
/// <param name="idReport">id del report da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Report]</param>
/// <param name="idModel">id del modello da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Modelli]</param>
/// <param name="immobiliare">info su immobiliare oggetto del report</param>
/// <returns>ReportEnvironment</returns>
private ReportEnvironment GetEnvironment(long chiaveCliente, int idReport, int idModel, MappaturaPreliminare mappatura)
{
var e = new ReportEnvironment(chiaveCliente, mappatura)
{
Cliente = _cliente,
PrivateBanker = _privatebanker
};
#region Imposto il template
switch (e.PrivateBanker.CodiceRete)
{
//case "F":
// e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.mappaturapreliminare.bf.copertina2.pdf";
// e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.mappaturapreliminare.bf.pagina2.pdf";
// break;
//case "S":
// e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.mappaturapreliminare.spi.copertina3.pdf";
// e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.pagina2.pdf";
// break;
case "F":
if (e.Cliente.FlagMonitoraggioImmobiliare)
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.copertinaMappaturaContrattualizzato.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.paginaMappaturaContrattualizzato.pdf";
}
else
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.copertinaMappatura.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.paginaMappatura.pdf";
}
break;
case "S":
if (e.Cliente.FlagMonitoraggioImmobiliare)
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.copertinaMappaturaContrattualizzato.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.paginaMappaturaContrattualizzato.pdf";
}
else
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.copertinaMappatura.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.paginaMappatura.pdf";
}
break;
default:
throw new Exception("Rete non valorizzata in Environment per PB:" + e.PrivateBanker.CodiceRete + e.PrivateBanker.Codice + " CLIENTE:" + e.Cliente.CodiceFiscale + " IDIMMOBILECATASTO:" + e.Immobiliare.IdImmobileCatasto + " CHIAVECLIENTEPB:" + chiaveCliente);
}
#endregion
e.ReportId = idReport;
e.ModelId = idModel;
return e;
}
#endregion
#region CONSULENZA UNICA
/// <summary>
/// Converte la rappresentazione interna del Report in un array binario costituente il documento PDF del Report.
/// </summary>
/// <param name="chiaveCliente">chiave del cliente (ChiaveClientePB)</param>
/// <param name="struttura">struttura del report</param>
/// <returns></returns>
public virtual byte[] CreateReport_Diagnosi(Int64 chiaveCliente, ReportStruct struttura)
{
#region idReport e idModello del report da stampare. Ogni tipologia di report avrà una logica di business diversa.
var reportStruct = new Business.Unica.Diagnosi.ReportStructBusiness();
var idReport = reportStruct.GetIdReport();
var idModel = reportStruct.GetIdModel();
#endregion
#region Recupero la struttura del report (_reportStructure)
_reportStructure = GetStructure(idReport, idModel, struttura.Schede.Select(o => o.Id).ToList());
#endregion
#region Recupero le variabili di ambiente del report (_reportEnvironment)
_reportEnvironment = GetEnvironment(chiaveCliente, idReport, idModel, new Diagnosi());
_reportEnvironment.ReportStruct = struttura;
#endregion
return Draw();
}
/// <summary>
/// Recupera informazioni per la classe ReportEnvironment tra cui :Template del PDF da utilizzare.
/// </summary>
/// <param name="chiaveCliente">chiave del cliente (ChiaveClientePB)</param>
/// <param name="idReport">id del report da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Report]</param>
/// <param name="idModel">id del modello da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Modelli]</param>
/// <param name="diagnosi">info su diagnosi</param>
/// <returns>ReportEnvironment</returns>
private ReportEnvironment GetEnvironment(Int64 chiaveCliente, int idReport, int idModel, Diagnosi diagnosi)
{
var e = new ReportEnvironment(chiaveCliente, diagnosi)
{
Cliente = _cliente,
PrivateBanker = _privatebanker
};
#region Imposto il template
bool bSei = GetClienteSei(e.Cliente.TipologiaContratto.ToUpper(), e.Cliente.Chiave);
switch (e.PrivateBanker.CodiceRete)
{
case "F":
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.Templ_copertinaBF.pdf";
if (bSei)
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.Templ_BFreport1.pdf";
else
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.Templ_BFreport2.pdf";
break;
case "S":
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.Templ_copertinaSPUnica.pdf";
if (bSei)
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.Templ_SPreport3.pdf";
else
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.Templ_SPreport4.pdf";
break;
default:
throw new Exception("Rete non valorizzata in Environment per PB:" + e.PrivateBanker.CodiceRete + e.PrivateBanker.Codice + " CLIENTE:" + e.Cliente.CodiceFiscale + " IDIMMOBILECATASTO:" + e.Immobiliare.IdImmobileCatasto + " CHIAVECLIENTEPB:" + chiaveCliente);
}
#endregion
e.ReportId = idReport;
e.ModelId = idModel;
return e;
}
/// <summary>
/// Converte la rappresentazione interna del Report in un array binario costituente il documento PDF del Report.
/// </summary>
/// <param name="chiaveCliente">chiave del cliente (ChiaveClientePB)</param>
/// <param name="struttura">struttura del report</param>
/// <returns></returns>
public virtual byte[] CreateReport_Monitoraggio(Int64 chiaveCliente, ReportStruct struttura)
{
#region idReport e idModello del report da stampare. Ogni tipologia di report avrà una logica di business diversa.
var reportStruct = new Business.Unica.Monitoraggio.ReportStructBusiness();
var idReport = reportStruct.GetIdReport();
var idModel = reportStruct.GetIdModel();
#endregion
#region Recupero la struttura del report (_reportStructure)
_reportStructure = GetStructure(idReport, idModel, struttura.Schede.Select(o => o.Id).ToList());
#endregion
#region Recupero le variabili di ambiente del report (_reportEnvironment)
_reportEnvironment = GetEnvironment(chiaveCliente, idReport, idModel, new Monitoraggio());
_reportEnvironment.ReportStruct = struttura;
#endregion
return Draw();
}
/// <summary>
/// Recupera informazioni per la classe ReportEnvironment tra cui :Template del PDF da utilizzare.
/// </summary>
/// <param name="chiaveCliente">chiave del cliente (ChiaveClientePB)</param>
/// <param name="idReport">id del report da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Report]</param>
/// <param name="idModel">id del modello da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Modelli]</param>
/// <param name="monitoraggio">info su monitoraggio</param>
/// <returns>ReportEnvironment</returns>
private ReportEnvironment GetEnvironment(Int64 chiaveCliente, int idReport, int idModel, Monitoraggio monitoraggio)
{
var e = new ReportEnvironment(chiaveCliente, monitoraggio)
{
Cliente = _cliente,
PrivateBanker = _privatebanker
};
#region Imposto il template
bool bSei = GetClienteSei(e.Cliente.TipologiaContratto.ToUpper(), e.Cliente.Chiave);
switch (e.PrivateBanker.CodiceRete)
{
case "F":
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.Templ_copertinaBF.pdf";
if (bSei)
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.Templ_BFreport1.pdf";
else
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.Templ_BFreport2.pdf";
break;
case "S":
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.Templ_copertinaSPUnica.pdf";
if (bSei)
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.Templ_SPreport3.pdf";
else
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.Templ_SPreport4.pdf";
break;
default:
throw new Exception("Rete non valorizzata in Environment per PB:" + e.PrivateBanker.CodiceRete + e.PrivateBanker.Codice + " CLIENTE:" + e.Cliente.CodiceFiscale + " IDIMMOBILECATASTO:" + e.Immobiliare.IdImmobileCatasto + " CHIAVECLIENTEPB:" + chiaveCliente);
}
#endregion
e.ReportId = idReport;
e.ModelId = idModel;
return e;
}
/// <summary>
/// Converte la rappresentazione interna del Report in un array binario costituente il documento PDF del Report.
/// </summary>
/// <param name="chiaveCliente">chiave del cliente (ChiaveClientePB)</param>
/// <param name="struttura">struttura del report</param>
/// <returns></returns>
public virtual byte[] CreateReport_Proposta(Int64 chiaveCliente, ReportStruct struttura)
{
#region idReport e idModello del report da stampare. Ogni tipologia di report avrà una logica di business diversa.
var reportStruct = new Business.Unica.Proposta.ReportStructBusiness();
var idReport = reportStruct.GetIdReport();
var idModel = reportStruct.GetIdModel();
#endregion
#region Recupero la struttura del report (_reportStructure)
_reportStructure = GetStructure(idReport, idModel, struttura.Schede.Select(o => o.Id).ToList());
#endregion
#region Recupero le variabili di ambiente del report (_reportEnvironment)
_reportEnvironment = GetEnvironment(chiaveCliente, idReport, idModel, new PropostaUnica(), datiSeiUnico.flagAdeguatezzaPro());
_reportEnvironment.ReportStruct = struttura;
#endregion
return Draw();
}
/// <summary>
/// Recupera informazioni per la classe ReportEnvironment tra cui :Template del PDF da utilizzare.
/// </summary>
/// <param name="chiaveCliente">chiave del cliente (ChiaveClientePB)</param>
/// <param name="idReport">id del report da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Report]</param>
/// <param name="idModel">id del modello da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Modelli]</param>
/// <param name="proposta">info su proposta</param>
/// <returns>ReportEnvironment</returns>
private ReportEnvironment GetEnvironment(Int64 chiaveCliente, int idReport, int idModel, PropostaUnica proposta, bool adeguata)
{
var e = new ReportEnvironment(chiaveCliente, proposta, adeguata)
{
Cliente = _cliente,
PrivateBanker = _privatebanker
};
#region Imposto il template
bool bSei = GetClienteSei(e.Cliente.TipologiaContratto.ToUpper(), e.Cliente.Chiave);
switch (e.PrivateBanker.CodiceRete)
{
case "F":
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.Templ_copertinaBF.pdf";
if (bSei)
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.Templ_BFreport1.pdf";
else
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.Templ_BFreport2.pdf";
break;
case "S":
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.Templ_copertinaSPUnica.pdf";
if (bSei)
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.Templ_SPreport3.pdf";
else
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.Templ_SPreport4.pdf";
break;
default:
throw new Exception("Rete non valorizzata in Environment per PB:" + e.PrivateBanker.CodiceRete + e.PrivateBanker.Codice + " CLIENTE:" + e.Cliente.CodiceFiscale + " IDIMMOBILECATASTO:" + e.Immobiliare.IdImmobileCatasto + " CHIAVECLIENTEPB:" + chiaveCliente);
}
#endregion
e.ReportId = idReport;
e.ModelId = idModel;
return e;
}
/// <summary>
/// Converte la rappresentazione interna del Report in un array binario costituente il documento PDF del Report.
/// </summary>
/// <param name="chiaveCliente">chiave del cliente (ChiaveClientePB)</param>
/// <param name="struttura">struttura del report</param>
/// <returns></returns>
public virtual byte[] CreateReport_Nucleo(Int64 chiaveCliente, ReportStruct struttura)
{
#region idReport e idModello del report da stampare. Ogni tipologia di report avrà una logica di business diversa.
var reportStruct = new Business.Unica.Nucleo.ReportStructBusiness();
var idReport = reportStruct.GetIdReport();
var idModel = reportStruct.GetIdModel();
#endregion
#region Recupero la struttura del report (_reportStructure)
_reportStructure = GetStructure(idReport, idModel, struttura.Schede.Select(o => o.Id).ToList());
#endregion
#region Recupero le variabili di ambiente del report (_reportEnvironment)
_reportEnvironment = GetEnvironment(chiaveCliente, idReport, idModel, new NucleoUnica());
_reportEnvironment.ReportStruct = struttura;
#endregion
return Draw();
}
/// <summary>
/// Recupera informazioni per la classe ReportEnvironment tra cui :Template del PDF da utilizzare.
/// </summary>
/// <param name="chiaveCliente">chiave del cliente (ChiaveClientePB)</param>
/// <param name="idReport">id del report da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Report]</param>
/// <param name="idModel">id del modello da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Modelli]</param>
/// <param name="nucleo">info su nucleo</param>
/// <returns>ReportEnvironment</returns>
private ReportEnvironment GetEnvironment(Int64 chiaveCliente, int idReport, int idModel, NucleoUnica nucleo)
{
var e = new ReportEnvironment(chiaveCliente, nucleo)
{
Cliente = _cliente,
PrivateBanker = _privatebanker
};
#region Imposto il template
switch (e.PrivateBanker.CodiceRete)
{
case "F":
if (datiSeiUnico.flagNucleoContrattualizzato())
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.Templ_copertinaBF_NucleoContrattualizzato.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.Templ_BFreport_NucleoContrattualizzato.pdf";
//e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.Templ_SPreport_NucleoContrattualizzato.pdf";
}
else
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.Templ_copertinaBF_Nucleo.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.Templ_BFreport_Nucleo.pdf";
}
break;
case "S":
if (datiSeiUnico.flagNucleoContrattualizzato())
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.Templ_copertinaSP_NucleoContrattualizzato.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.Templ_SPreport_NucleoContrattualizzato.pdf";
}
else
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.Templ_copertinaSP_Nucleo.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.Templ_SPreport_Nucleo.pdf";
}
break;
default:
throw new Exception("Rete non valorizzata in Environment per PB:" + e.PrivateBanker.CodiceRete + e.PrivateBanker.Codice + " CLIENTE:" + e.Cliente.CodiceFiscale + " IDIMMOBILECATASTO:" + e.Immobiliare.IdImmobileCatasto + " CHIAVECLIENTEPB:" + chiaveCliente);
}
#endregion
e.ReportId = idReport;
e.ModelId = idModel;
return e;
}
#endregion
#region FINALITA' IMMOBILIARE
/// <summary>
/// Ottiene un array binario del PDF del report di Diagnosi di Finalità Immobiliare di ConsulenzaEvoluta per un cliente identificato con chiaveClientePb.
/// </summary>
/// <param name="chiaveCliente">Chiave del cliente</param>
/// <param name="idImmobileCatasto">lista di id immobile al catasto. Corrisponde al campo chiaveProdottoTerzi della tabella ConsulenzaEvoluta.PatrimonioTerzi</param>
/// <param name="idSezione">lista delle sezioni. Campo:IdSezione, tabella:Sezioni, database:ReportModeler2</param>
public virtual byte[] CreaReport_FinalitaImmobiliare(long chiaveCliente, List<string> idImmobileCatasto, List<Int32> idSezione, bool unica)
{
#region idReport e idModello del report da stampare. Ogni tipologia di report avrà una logica di business diversa.
var reportStruct = new Business.Immobiliare.Finalita.ReportStructBusiness();
_immobiliareCU = unica;
var idReport = reportStruct.GetIdReport();
var idModel = reportStruct.GetIdModel();
#endregion
#region Recupero la struttura del report (_reportStructure)
_reportStructure = GetStructure(idReport, idModel, idSezione);
#endregion
#region Recupero le variabili di ambiente del report (_reportEnvironment)
_reportEnvironment = GetEnvironment(chiaveCliente, idReport, idModel, new FinalitaImmobiliare { IdImmobileCatasto = idImmobileCatasto, IdSezione = idSezione, ImmobiliareCEUnica = _immobiliareCU });
#endregion
return Draw();
}
/// <summary>
/// Recupera informazioni per la classe ReportEnvironment tra cui :Template del PDF da utilizzare.
/// </summary>
/// <param name="chiaveCliente">chiave del cliente (ChiaveClientePB)</param>
/// <param name="idReport">id del report da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Report]</param>
/// <param name="idModel">id del modello da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Modelli]</param>
/// <param name="immobiliare">info su immobiliare oggetto del report</param>
/// <returns>ReportEnvironment</returns>
private ReportEnvironment GetEnvironment(long chiaveCliente, int idReport, int idModel, FinalitaImmobiliare finalitaimmobiliare)
{
var e = new ReportEnvironment(chiaveCliente, finalitaimmobiliare)
{
Cliente = _cliente,
PrivateBanker = _privatebanker
};
#region Imposto il template
switch (e.PrivateBanker.CodiceRete)
{
case "F":
if (e.Cliente.FlagMonitoraggioImmobiliare)
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.copertinaDiagnosiContrattualizzato.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.paginaDiagnosiContrattualizzato.pdf";
}
else
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.copertinaDiagnosi.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.BF.immobiliare.bf.paginaDiagnosi.pdf";
}
break;
case "S":
if (e.Cliente.FlagMonitoraggioImmobiliare)
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.copertinaDiagnosiContrattualizzato.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.paginaDiagnosiContrattualizzato.pdf";
}
else
{
e.ResourceNameCover = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.copertinaDiagnosi.pdf";
e.ResourceNameTemplate = "RisorseEmbeddedRM.PDFTemplates.SPI.immobiliare.spi.paginaDiagnosi.pdf";
}
break;
default:
throw new Exception("Rete non valorizzata in Environment per PB:" + e.PrivateBanker.CodiceRete + e.PrivateBanker.Codice + " CLIENTE:" + e.Cliente.CodiceFiscale + " IDIMMOBILECATASTO:" + e.Immobiliare.IdImmobileCatasto + " CHIAVECLIENTEPB:" + chiaveCliente);
}
#endregion
e.ReportId = idReport;
e.ModelId = idModel;
return e;
}
#endregion
/// <summary>
/// Recupero la struttura del report eseguendo la stored "CalcoloStrutturaDocumento"
/// del database di configurazione dei report [ReportModeler2] dati idReport e idModel passati in input.
/// </summary>
/// <param name="idReport">id del report. [ReportModeler2].[dbo].[Report]</param>
/// <param name="idModel">id del modello [ReportModeler2].[dbo].[Modelli]</param>
/// <returns></returns>
private DataTable GetStructure(int idReport, int idModel)
{
var parametri = new List<Parametro>
{
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int32,
ParameterName = "IdReport",
Value = idReport
},
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int32,
ParameterName = "IdModello",
Value = idModel
}
};
#region Definizione dei parametri
#endregion
return DataAccess.ExecuteDataTableStoredProcedure(DBProvider.SqlServerReportModeler, "CalcoloStrutturaDocumento", parametri);
}
/// <summary>
/// Recupero la struttura del report eseguendo la stored "CalcoloStrutturaDocumento"
/// del database di configurazione dei report [ReportModeler2] dati idReport e idModel passati in input,
/// filtrando e ordinando per idSectionList.
/// </summary>
/// <param name="idReport">id del report. [ReportModeler2].[dbo].[Report]</param>
/// <param name="idModel">id del modello [ReportModeler2].[dbo].[Modelli]</param>
/// <param name="idSectionList">lista delle sezioni da stampare.</param>
private DataTable GetStructure(int idReport, int idModel, List<int> idSectionList)
{
//Filtro e ordino solo le Schede(idSezione) selezionate e passate in input
var structure = GetStructure(idReport, idModel);
// Ordinamento: l'ordine è quello si selezione delle schede.
structure.Columns.Add("Ordine", typeof(Int32));
/****** FIX 13-05-2020 Quote Variate, non da mostrare per tutti, per futura revisione del processo - Pino **************/
//idSectionList.Remove(229);
//idSectionList.Remove(230);
//DataRow[] drr = structure.Select("Capitolo_CodiceClasse='S22'");
//foreach (DataRow row in structure.Rows)
//{
// if (row["Capitolo_CodiceClasse"].ToString() == "S22")
// {
// idSectionList.Remove((int)row["idSezione"]);
// structure.Rows.Remove(row);
// break;
// }
//}
/***********************************************************************************************************************/
var ordine = 1;
foreach (var sezione in idSectionList)
{
//recupero la riga tramite l'idSezione
structure.AsEnumerable().SingleOrDefault(r => r.Field<Int32>("IdSezione") == sezione)["Ordine"] = ordine;
ordine++;
}
// Filtro.
var query = from st in structure.AsEnumerable()
where idSectionList.Contains(st.Field<Int32>("IdSezione"))
orderby st.Field<Int32>("Ordine")
select st;
// Ritorno la struttura
return query.AsDataView().ToTable();
}
/// <summary>
/// Instanzia WriterEntities (passando Environment) e ritorna l'array binario del Report (costituito dalle sezioni).
/// </summary>
/// <returns></returns>
private byte[] Draw(bool bBatch = false)
{
var reportEntities = new List<EntityBase>();
string typeNameIntegration;
Type typeIntegration;
var environmentFacade = new EnvironmentFacade(_reportEnvironment);
var writerEntities = new WriterEntities(environmentFacade);
environmentFacade.datiSeiUnico = datiSeiUnico;
#region Logica di Integrazione di layout
var integrationLayoutRows = _reportStructure.Select("Integrazione_ChiaveLayout is not null");
foreach (var itemIntegrationLayout in integrationLayoutRows)
{
typeNameIntegration = string.Format("{0}.{1}, Consulenza.ReportWriter.Manager", itemIntegrationLayout["Integrazione_NameSpace"], itemIntegrationLayout["Integrazione_CodiceClasse"]);
typeIntegration = Type.GetType(typeNameIntegration);
if (typeIntegration != null)
{
//Creo l'istanza passando al costruttore la DataGeometry e recupero la nuova struttura del report. La struttura è definita dalle classi che ereditato IntegrationLayout
_reportStructure = ((IntegrationLayout)Activator.CreateInstance(typeIntegration, _reportStructure, itemIntegrationLayout, _reportEnvironment)).RecalculateStructure();
}
}
#endregion
var capitoloChiaveLayoutPrecedente = string.Empty;
if (_reportEnvironment.ReportType == ReportType.Immobiliare_Monitoraggio || _reportEnvironment.ReportType == ReportType.Immobiliare_MonitoraggioNuclei)
{
List<int> allSectionsIds = _reportStructure.Rows.OfType<DataRow>().Select(x => (int)x.ItemArray[3]).ToList();
MonitoraggioImmobiliarePageHeaderManager.AllSections = allSectionsIds;
//TODo
//creare classe MonitoraggioImmobiliareNucleiPageHeaderManager
//MonitoraggioImmobiliarePageHeaderManager.AllSections = allSectionsIds;
}
// News ES 20180315 per Ticket Kostaris
DataSet dsOriginal = null;
if (_reportEnvironment.ReportType == ReportType.Immobiliare_MappaturaPreliminare)
{
#region Definizione dei parametri
var parametri = new List<Parametro>
{
new Parametro
{
Direction = ParameterDirection.Input,
DbType = DbType.Int64,
ParameterName = "ChiaveClientePB",
Value = _reportEnvironment.Cliente.Chiave
},
};
#endregion
dsOriginal = _reportEnvironment.MappaturaPreliminare.ImmobiliareCEUnica ? DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaUnica, "REP_MappaturaPreliminare_S7_DettaglioAbitazioneTotale", parametri)
: DataAccess.ExecuteDataSetStoredProcedure(DBProvider.SqlServerConsulenzaEvoluta, "REP_MappaturaPreliminare_S7_DettaglioAbitazioneTotale", parametri);
if (dsOriginal.Tables[0].Rows.Count == 0) return null;
}
//
int iRow = 0;
foreach (DataRow row in _reportStructure.Rows)
{
var idCapitolo = Convert.ToInt32(row["idCapitolo"]);
var idSection = Convert.ToInt32(row["idSezione"]);
var exist = true; // determina l'esistenza e quindi la stampa del capitolo e sezione.
#region Integrazione Layout
typeNameIntegration = string.Format("{0}.{1}, Consulenza.ReportWriter.Manager", row["Integrazione_NameSpace"], row["Integrazione_CodiceClasse"]);
typeIntegration = Type.GetType(typeNameIntegration);
var integrationLayout = row["Integrazione_ChiaveLayout"] == DBNull.Value || typeIntegration == null ? null : ((IntegrationLayout)Activator.CreateInstance(typeIntegration, _reportStructure, row, _reportEnvironment));
var duplicazioneCapitolo = integrationLayout != null && integrationLayout.DuplicaCapitolo;
#endregion
#region Namespaces ConsulenzaUnica
string desinenzaNamespace = "";
switch (_reportEnvironment.ReportType)
{
case ReportType.Unica_Diagnosi:
desinenzaNamespace = ".Diagnosi";
break;
case ReportType.Unica_Monitoraggio:
desinenzaNamespace = ".Monitoraggio";
break;
case ReportType.Unica_Proposta:
desinenzaNamespace = ".Proposta";
break;
case ReportType.Unica_Nucleo:
desinenzaNamespace = ".Nucleo";
break;
}
#endregion
#region Capitoli
if (capitoloChiaveLayoutPrecedente != row["Capitolo_ChiaveLayout"].ToString() || duplicazioneCapitolo)
{
var typeNameChapter = string.Format("{0}.{1}, Consulenza.ReportWriter.Manager", row["Capitolo_NameSpace"] + desinenzaNamespace, row["Capitolo_CodiceClasse"]);
var typeChapter = Type.GetType(typeNameChapter);
if (typeChapter != null)
{
//Creo l'istanza passando al costruttore la DataGeometry:
Chapter chapther;
if (integrationLayout == null)
chapther = Activator.CreateInstance(typeChapter, environmentFacade, idCapitolo, Convert.ToBoolean(row["Capitolo_RipetiOgniPagina"])) as Chapter;
else
{
integrationLayout.iRow = iRow;
chapther = Activator.CreateInstance(typeChapter, environmentFacade, idCapitolo, Convert.ToBoolean(row["Capitolo_RipetiOgniPagina"]), integrationLayout) as Chapter;
iRow = iRow + 1;
}
//******* Determino l'esistenza del capitolo e sezione***********
exist = chapther.Exist;
if (chapther != null && exist)
{
// Imposto le propietà ChapterFacade
chapther.ChapterFacade.RepeatOnEachPage = chapther.RepeatOnEachPage;
//Accodo l'istanza alla collezione.
reportEntities.Add(chapther);
}
}
}
#endregion
#region Paragrafi
// Attualmente non è richiesta la gestione dei paragrafi
#endregion
#region Sezioni
var typeNameSection = "";
if (_reportEnvironment.ReportType == ReportType.Base_Proposta)
typeNameSection = string.Format("{0}.{1}, Consulenza.ReportWriter.Manager", row["Sezione_NameSpace"] + desinenzaNamespace, row["Sezione_CodiceClasse"]);
else
typeNameSection = string.Format("{0}.{1}, Consulenza.ReportWriter.Manager", row["Sezione_NameSpace"] + desinenzaNamespace, row["Sezione_CodiceClasse"].ToString().ToUpper());
var typeSection = Type.GetType(typeNameSection);
/*
var typeNameSection = string.Format("{0}.{1}, Consulenza.ReportWriter.Manager", row["Sezione_NameSpace"] + desinenzaNamespace, row["Sezione_CodiceClasse"].ToString().ToUpper());
var typeSection = Type.GetType(typeNameSection);
*/
//Creo l'istanza passando al costruttore la DataGeometry:
Section section;
if (integrationLayout == null)
{
if (idSection == 223 && bBatch)
section = Activator.CreateInstance(typeSection, environmentFacade, 999) as Section;
else
{
if (idSection == 222 && bBatch)
section = Activator.CreateInstance(typeSection, environmentFacade, 999) as Section;
else
{
if (idSection == 201 && bBatch)
section = Activator.CreateInstance(typeSection, environmentFacade, 999) as Section;
else
section = Activator.CreateInstance(typeSection, environmentFacade, idSection) as Section;
}
}
}
else
{
if (_reportEnvironment.ReportType == ReportType.Immobiliare_MappaturaPreliminare)
integrationLayout.ReportDs = dsOriginal;
section = Activator.CreateInstance(typeSection, environmentFacade, idSection, integrationLayout) as Section;
}
if (section != null && exist)
{
//Accodo l'istanza alla collezione.
reportEntities.Add(section);
}
#endregion
capitoloChiaveLayoutPrecedente = row["Capitolo_ChiaveLayout"].ToString();
}
return writerEntities.RenderEntities(reportEntities);
}
private bool GetClienteSei(string pStatoContratto, long chiave)
{
DataTable dtOriginal = null;
dtOriginal = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerConsulenzaUnica, "Select chiaveTipoContratto from DStatoContratto where UPPER(statoContratto) = '" + pStatoContratto + "'", null);
if (dtOriginal.Rows.Count > 0 && Convert.ToInt16(dtOriginal.Rows[0][0]) == 2) {
DataTable dtSospeso = null;
dtSospeso = DataAccess.ExecuteDataTableSqlStatement(DBProvider.SqlServerConsulenzaUnica, "Select flagRfaMinus from DettaglioClientePB where chiaveClientePB = '" + chiave + "'", null);
if (dtSospeso.Rows.Count > 0 && !DBNull.Value.Equals(dtSospeso.Rows[0][0]) && Convert.ToBoolean(dtSospeso.Rows[0][0])){//è sospeso si comporta come base+
return false;
}
else {
return true;
}
}
else {
return false;
}
}
}
}