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 { /// /// 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). /// 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(); 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); } /// /// Costruttore /// /// cliente /// privatebanker public ReportStructManager(Cliente cliente, PrivateBanker privatebanker, bool propostabaseCU) { _cliente = cliente; _privatebanker = privatebanker; _propostaBaseCU = propostabaseCU; } /// /// Costruttore /// /// cliente /// privatebanker public ReportStructManager(Cliente cliente, PrivateBanker privatebanker) { _cliente = cliente; _privatebanker = privatebanker; } public ReportStructManager(Cliente cliente, PrivateBanker privatebanker, Delegato privateDelegato) { _cliente = cliente; _privatebanker = privatebanker; _privateDelegato = privateDelegato; } /// /// Costruttore /// /// nucleo /// privatebanker public ReportStructManager(Nucleo nucleo, PrivateBanker privatebanker) { _nucleo = nucleo; _privatebanker = privatebanker; } /// /// Imposta o recupera il booleano che indica se proposta base è per CU o CB /// private bool _propostaBaseCU; /// /// Imposta o recupera il booleano che indica se immobiliare è evoluta o CU /// private bool _immobiliareCU; /// /// Imposta o recupera il Cliente del report /// private readonly Cliente _cliente; /// /// Imposta o recupera il PrivateBanker del report /// private readonly PrivateBanker _privatebanker; private readonly Delegato _privateDelegato; /// /// La struttura del Report /// private DataTable _reportStructure; /// /// Gestore dell'ambiente generale di elaborazione (cliente, template, rete etc ...). /// private ReportEnvironment _reportEnvironment; /// /// Imposta o recupera le informazioni sul Nucleo /// private readonly Nucleo _nucleo; #region CONSULENZA BASE /// /// Converte la rappresentazione interna del Report in un array binario costituente il documento PDF del Report. /// /// chiave del cliente (ChiaveClientePB) /// chiave della Proposta /// tipo di report che si vuol produrre /// 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(); } /// /// Recupera informazioni per la classe ReportEnvironment tra cui :Template del PDF da utilizzare. /// /// chiave del cliente (ChiaveClientePB) /// id del report da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Report] /// id del modello da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Modelli] /// info sulla proposta oggetto del report /// ReportEnvironment 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 /// /// Ottiene un array binario del PDF del report di Immobiliare di Diagnosi di ConsulenzaEvoluta per un cliente identificato con chiaveClientePb. /// /// Chiave del cliente /// lista di id immobile al catasto. Corrisponde al campo chiaveProdottoTerzi della tabella ConsulenzaEvoluta.PatrimonioTerzi /// lista delle sezioni. Campo:IdSezione, tabella:Sezioni, database:ReportModeler2 public virtual byte[] CreaReport_ImmobiliareDiagnosi(long chiaveCliente, List idImmobileCatasto, List 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 idImmobileCatasto, List 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 chiaviClientiPb, List idImmobileCatasto, List 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 chiaviClientiPb, List 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 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(); } /// /// Recupera informazioni per la classe ReportEnvironment tra cui :Template del PDF da utilizzare. /// /// chiave del cliente (ChiaveClientePB) /// id del report da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Report] /// id del modello da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Modelli] /// info su immobiliare oggetto del report /// ReportEnvironment 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; } /// /// Ottiene un array binario del PDF del report di Immobiliare di Diagnosi di ConsulenzaEvoluta per un nucleo familiare. /// /// Nucleo familiare /// lista di id immobile al catasto. Corrisponde al campo chiaveProdottoTerzi della tabella ConsulenzaEvoluta.PatrimonioTerzi /// lista di chiaveclientepb dei componenti del nucleo. /// lista delle sezioni. Campo:IdSezione, tabella:Sezioni, database:ReportModeler2 public virtual byte[] CreaReport_ImmobiliareDiagnosi_Nucleo(Nucleo nucleo, List idImmobileCatasto, List chiaviClientiPb, List 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(); } /// /// Recupera informazioni per la classe ReportEnvironment tra cui :Template del PDF da utilizzare. /// /// /// id del report da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Report] /// id del modello da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Modelli] /// 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; } /// /// Ottiene un array binario del PDF del report di Immobiliare di Mappatura preliminare di ConsulenzaEvoluta per un cliente identificato con chiaveClientePb. /// /// Chiave del cliente /// lista di id immobile al catasto. Corrisponde al campo chiaveProdottoTerzi della tabella ConsulenzaEvoluta.PatrimonioTerzi /// lista delle sezioni. Campo:IdSezione, tabella:Sezioni, database:ReportModeler2 public virtual byte[] CreaReport_MappaturaPreliminare(long chiaveCliente, List idImmobileCatasto, List 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(); } /// /// Recupera informazioni per la classe ReportEnvironment tra cui :Template del PDF da utilizzare. /// /// chiave del cliente (ChiaveClientePB) /// id del report da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Report] /// id del modello da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Modelli] /// info su immobiliare oggetto del report /// ReportEnvironment 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 /// /// Converte la rappresentazione interna del Report in un array binario costituente il documento PDF del Report. /// /// chiave del cliente (ChiaveClientePB) /// struttura del report /// 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(); } /// /// Recupera informazioni per la classe ReportEnvironment tra cui :Template del PDF da utilizzare. /// /// chiave del cliente (ChiaveClientePB) /// id del report da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Report] /// id del modello da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Modelli] /// info su diagnosi /// ReportEnvironment 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; } /// /// Converte la rappresentazione interna del Report in un array binario costituente il documento PDF del Report. /// /// chiave del cliente (ChiaveClientePB) /// struttura del report /// 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(); } /// /// Recupera informazioni per la classe ReportEnvironment tra cui :Template del PDF da utilizzare. /// /// chiave del cliente (ChiaveClientePB) /// id del report da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Report] /// id del modello da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Modelli] /// info su monitoraggio /// ReportEnvironment 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; } /// /// Converte la rappresentazione interna del Report in un array binario costituente il documento PDF del Report. /// /// chiave del cliente (ChiaveClientePB) /// struttura del report /// 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(); } /// /// Recupera informazioni per la classe ReportEnvironment tra cui :Template del PDF da utilizzare. /// /// chiave del cliente (ChiaveClientePB) /// id del report da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Report] /// id del modello da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Modelli] /// info su proposta /// ReportEnvironment 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; } /// /// Converte la rappresentazione interna del Report in un array binario costituente il documento PDF del Report. /// /// chiave del cliente (ChiaveClientePB) /// struttura del report /// 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(); } /// /// Recupera informazioni per la classe ReportEnvironment tra cui :Template del PDF da utilizzare. /// /// chiave del cliente (ChiaveClientePB) /// id del report da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Report] /// id del modello da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Modelli] /// info su nucleo /// ReportEnvironment 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 /// /// Ottiene un array binario del PDF del report di Diagnosi di Finalità Immobiliare di ConsulenzaEvoluta per un cliente identificato con chiaveClientePb. /// /// Chiave del cliente /// lista di id immobile al catasto. Corrisponde al campo chiaveProdottoTerzi della tabella ConsulenzaEvoluta.PatrimonioTerzi /// lista delle sezioni. Campo:IdSezione, tabella:Sezioni, database:ReportModeler2 public virtual byte[] CreaReport_FinalitaImmobiliare(long chiaveCliente, List idImmobileCatasto, List 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(); } /// /// Recupera informazioni per la classe ReportEnvironment tra cui :Template del PDF da utilizzare. /// /// chiave del cliente (ChiaveClientePB) /// id del report da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Report] /// id del modello da stampare. Campo id del DataBase di configurazione : [ReportModeler2].[dbo].[Modelli] /// info su immobiliare oggetto del report /// ReportEnvironment 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 /// /// Recupero la struttura del report eseguendo la stored "CalcoloStrutturaDocumento" /// del database di configurazione dei report [ReportModeler2] dati idReport e idModel passati in input. /// /// id del report. [ReportModeler2].[dbo].[Report] /// id del modello [ReportModeler2].[dbo].[Modelli] /// private DataTable GetStructure(int idReport, int idModel) { var parametri = new List { 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); } /// /// 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. /// /// id del report. [ReportModeler2].[dbo].[Report] /// id del modello [ReportModeler2].[dbo].[Modelli] /// lista delle sezioni da stampare. private DataTable GetStructure(int idReport, int idModel, List 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("IdSezione") == sezione)["Ordine"] = ordine; ordine++; } // Filtro. var query = from st in structure.AsEnumerable() where idSectionList.Contains(st.Field("IdSezione")) orderby st.Field("Ordine") select st; // Ritorno la struttura return query.AsDataView().ToTable(); } /// /// Instanzia WriterEntities (passando Environment) e ritorna l'array binario del Report (costituito dalle sezioni). /// /// private byte[] Draw(bool bBatch = false) { var reportEntities = new List(); 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 allSectionsIds = _reportStructure.Rows.OfType().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 { 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; } } } }