using System; using System.Collections; using System.Collections.Generic; using Consulenza.ReportModeler.Manager; using System.Linq; using ceTe.DynamicPDF; using ceTe.DynamicPDF.Merger; using Consulenza.ReportCommon; using Consulenza.WebTemplateModeler.Entity; namespace Consulenza.Immobiliare.Business { public class GeneratorService { private readonly Int64 _chiaveClientePb; private readonly Cliente _cliente = new Cliente(); /// /// 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 byte[] CreaReport_ImmobiliareDiagnosi(long chiaveCliente, List idImmobileCatasto, List idSezione, bool unica) { var cliente = DataService.ClienteManager.RecuperaCliente(chiaveCliente, unica); var privateBanker = DataService.PrivateBankerManager.RecuperaPrivateBanker(chiaveCliente, unica); var generator = new ReportStructManager(cliente, privateBanker); return generator.CreaReport_ImmobiliareDiagnosi(chiaveCliente, idImmobileCatasto, idSezione, unica); } public byte[] CreaReport_MonitoraggioImmobiliare(long chiaveCliente, List idImmobileCatasto, List idSezione, bool bBatch = false) { if (bBatch == true) { var cliente = DataService.ClienteManager.RecuperaCliente(chiaveCliente, true); var privateBanker = DataService.PrivateBankerManager.RecuperaPrivateBanker(chiaveCliente, true); cliente.TipologiaContratto = privateBanker.CodiceRete; var generator = new ReportStructManager(cliente, privateBanker); return generator.CreaReport_ImmobiliareMonitoraggio(chiaveCliente, idImmobileCatasto, idSezione, bBatch); } else { var cliente = DataService.ClienteManager.RecuperaCliente(chiaveCliente, true); var privateBanker = DataService.PrivateBankerManager.RecuperaPrivateBanker(chiaveCliente, true); var generator = new ReportStructManager(cliente, privateBanker); generator.datiSeiUnico = _datiSeiUnico; return generator.CreaReport_ImmobiliareMonitoraggio(chiaveCliente, idImmobileCatasto, idSezione, bBatch); } } public byte[] CreaReport_MonitoraggioImmobiliareNucleiold(Nucleo nucleo, List chiaviClientiPB, List idImmobileCatasto, List idSezione) { Consulenza.Immobiliare.Business.GeneratorService generatorService = null; // var nucleo = DataService.NucleoManager.RecuperaNucleo(chiaveNucleo, true); long chiavePbPrincipale = nucleo.ChiaveClientePBPrincipale; var privateBanker = DataService.PrivateBankerManager.RecuperaPrivateBanker(chiavePbPrincipale, true); // #region lettura dati Unica // Consulenza.DataServices.DatiSeiUnico datiSeiUnico = null; // // lettura dati cliente // try // { // datiSeiUnico = new Consulenza.DataServices.DatiSeiUnico( // privateBanker.Codice, // chiavePbPrincipale.ToString(), // "", //todo verifica mandato // privateBanker.CodiceRete, // 0, // chiaveNucleo, // idSezione // ); // datiSeiUnico.Execute(); // generatorService = new Consulenza.Immobiliare.Business.GeneratorService(datiSeiUnico); // } // catch (Exception ex) // { // //mt.insertLog(modello.Id.ToString(), template.CodicePb, template.Id.ToString(), template.IsDefault, datiSeiUnico.UrlFideuramDati + " " + metodo, ex); // throw new Exception(datiSeiUnico.UrlFideuramDati + " " + ex.Message); // } //#endregion var generator = new ReportStructManager(nucleo, privateBanker); generator.datiSeiUnico = _datiSeiUnico; return generator.CreaReport_ImmobiliareMonitoraggioNuclei(nucleo, chiaviClientiPB, idImmobileCatasto, idSezione); //var nucleo = DataService.NucleoManager.RecuperaNucleo(chiaveNucleo, unica); //var privateBanker = DataService.PrivateBankerManager.RecuperaPrivateBanker(nucleo.AgenteNucleo, nucleo.ReteNucleo, unica); //var generator = new ReportStructManager(nucleo, privateBanker); //return generator.CreaReport_ImmobiliareDiagnosi_Nucleo(nucleo, idImmobileCatasto, chiaviClientiPb, idSezione, unica); } public byte[] CreaReport_MonitoraggioImmobiliareCU(long chiaveCliente, List idImmobileCatasto, ReportStruct reportStruttura) { var cliente = DataService.ClienteManager.RecuperaCliente(chiaveCliente, true); var privateBanker = DataService.PrivateBankerManager.RecuperaPrivateBanker(chiaveCliente, true); var generator = new ReportStructManager(cliente, privateBanker); generator.datiSeiUnico = _datiSeiUnico; return generator.CreaReport_ImmobiliareMonitoraggioCU(chiaveCliente, idImmobileCatasto, reportStruttura); } public byte[] CreaReport_MonitoraggioImmobiliareNuclei(long chiaveNucleo, List chiaviClientiPB, List idImmobileCatasto, List idSezione) { //Consulenza.Immobiliare.Business.GeneratorService generatorService = null; var nucleo = DataService.NucleoManager.RecuperaNucleo(chiaveNucleo, true); nucleo.HasServizioAggiuntivoImmobiliare = DataService.NucleoManager.HasServizioAggiuntivoImmobiliare(chiaveNucleo, true); long chiavePbPrincipale = nucleo.ChiaveClientePBPrincipale; //var privateBanker = DataService.PrivateBankerManager.RecuperaPrivateBanker(chiavePbPrincipale, true); var privateBanker = DataService.PrivateBankerManager.RecuperaPrivateBanker(nucleo.AgenteNucleo, nucleo.ReteNucleo, true); #region lettura dati Unica //Consulenza.DataServices.DatiSeiUnico datiSeiUnico = null; //// lettura dati cliente //try //{ // datiSeiUnico = new Consulenza.DataServices.DatiSeiUnico( // privateBanker.Codice, // chiavePbPrincipale.ToString(), // "", //todo verifica mandato // privateBanker.CodiceRete, // 0, // chiaveNucleo, // idSezione // ); // datiSeiUnico.Execute(); // generatorService = new Consulenza.Immobiliare.Business.GeneratorService(datiSeiUnico); //} //catch (Exception ex) //{ // //mt.insertLog(modello.Id.ToString(), template.CodicePb, template.Id.ToString(), template.IsDefault, datiSeiUnico.UrlFideuramDati + " " + metodo, ex); // throw new Exception(datiSeiUnico.UrlFideuramDati + " " + ex.Message); //} #endregion var generator = new ReportStructManager(nucleo, privateBanker); generator.datiSeiUnico = _datiSeiUnico; return generator.CreaReport_ImmobiliareMonitoraggioNuclei(nucleo, chiaviClientiPB, idImmobileCatasto, idSezione); //var nucleo = DataService.NucleoManager.RecuperaNucleo(chiaveNucleo, unica); //var privateBanker = DataService.PrivateBankerManager.RecuperaPrivateBanker(nucleo.AgenteNucleo, nucleo.ReteNucleo, unica); //var generator = new ReportStructManager(nucleo, privateBanker); //return generator.CreaReport_ImmobiliareDiagnosi_Nucleo(nucleo, idImmobileCatasto, chiaviClientiPb, idSezione, unica); } public byte[] CreaReport_MonitoraggioImmobiliareNucleiCU(long chiaveNucleo, List idImmobileCatasto, ReportStruct reportStruttura) { //Consulenza.Immobiliare.Business.GeneratorService generatorService = null; var nucleo = DataService.NucleoManager.RecuperaNucleo(chiaveNucleo, true); nucleo.HasServizioAggiuntivoImmobiliare = DataService.NucleoManager.HasServizioAggiuntivoImmobiliare(chiaveNucleo, true); long chiavePbPrincipale = nucleo.ChiaveClientePBPrincipale; //var privateBanker = DataService.PrivateBankerManager.RecuperaPrivateBanker(chiavePbPrincipale, true); var privateBanker = DataService.PrivateBankerManager.RecuperaPrivateBanker(nucleo.AgenteNucleo, nucleo.ReteNucleo, true); var generator = new ReportStructManager(nucleo, privateBanker); generator.datiSeiUnico = _datiSeiUnico; return generator.CreaReport_ImmobiliareMonitoraggioNucleiCU(nucleo, nucleo.ChiaviClientiPBImmobili, idImmobileCatasto, reportStruttura); //var cliente = DataService.ClienteManager.RecuperaCliente(chiaveCliente, true); //var privateBanker = DataService.PrivateBankerManager.RecuperaPrivateBanker(chiaveCliente, true); //var generator = new ReportStructManager(cliente, privateBanker); //generator.datiSeiUnico = _datiSeiUnico; //return generator.CreaReport_ImmobiliareMonitoraggioCU(chiaveCliente, idImmobileCatasto, reportStruttura); } /// /// Ottiene un array binario del PDF del report di Finalità 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 byte[] CreaReport_FinalitaImmobiliare(long chiaveCliente, List idImmobileCatasto, List idSezione, bool unica) { var cliente = DataService.ClienteManager.RecuperaCliente(chiaveCliente, unica); var privateBanker = DataService.PrivateBankerManager.RecuperaPrivateBanker(chiaveCliente, unica); var generator = new ReportStructManager(cliente, privateBanker); return generator.CreaReport_FinalitaImmobiliare(chiaveCliente, idImmobileCatasto, idSezione, unica); } /// /// Ottiene un array binario del PDF del report di Immobiliare di Diagnosi di ConsulenzaEvoluta per un nucleo familiare. /// /// Chiave del 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 byte[] CreaReport_ImmobiliareDiagnosi_Nucleo(long chiaveNucleo, List idImmobileCatasto, List chiaviClientiPb, List idSezione, bool unica) { var nucleo = DataService.NucleoManager.RecuperaNucleo(chiaveNucleo, unica); nucleo.HasServizioAggiuntivoImmobiliare = DataService.NucleoManager.HasServizioAggiuntivoImmobiliare(chiaveNucleo, true); var privateBanker = DataService.PrivateBankerManager.RecuperaPrivateBanker(nucleo.AgenteNucleo, nucleo.ReteNucleo, unica); var generator = new ReportStructManager(nucleo, privateBanker); return generator.CreaReport_ImmobiliareDiagnosi_Nucleo(nucleo, idImmobileCatasto, chiaviClientiPb, idSezione, unica); } /// /// Ottiene un array binario del PDF del report di Mappatura Preliminare (Immobiliare) 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 byte[] CreaReport_MappaturaPreliminare(long chiaveCliente, List idImmobileCatasto, List idSezione, bool unica) { //tutto ciò per avere due report separati, con due paginazioni separate. var cliente = DataService.ClienteManager.RecuperaCliente(chiaveCliente, unica); var privateBanker = DataService.PrivateBankerManager.RecuperaPrivateBanker(chiaveCliente, unica); List sezioniCliente = idSezione.Where(l => l != 135 && l != 136).ToList(); List sezioniPb = idSezione.Where(l => l == 135 || l == 136).ToList(); var generatorcli = new ReportStructManager(cliente, privateBanker); var generatorpb = new ReportStructManager(cliente, privateBanker); byte[] mappaturareport; if(sezioniCliente.Count>0 && sezioniPb.Count>0) mappaturareport = creaMappatura(generatorcli,generatorpb, chiaveCliente,idImmobileCatasto,sezioniCliente,sezioniPb, unica); else{ if( sezioniCliente.Count>0) mappaturareport = generatorcli.CreaReport_MappaturaPreliminare(chiaveCliente, idImmobileCatasto, idSezione,unica); else mappaturareport = generatorpb.CreaReport_MappaturaPreliminare(chiaveCliente, idImmobileCatasto, idSezione, unica); } return mappaturareport; } private byte[] creaMappatura(ReportStructManager cli, ReportStructManager pb, long chiaveCliente, List idImmobileCatasto, List sezioniCliente, List sezioniPb, bool unica) { PdfDocument pdfCliente = new PdfDocument(cli.CreaReport_MappaturaPreliminare(chiaveCliente, idImmobileCatasto, sezioniCliente, unica)); PdfDocument pdfPb = new PdfDocument(pb.CreaReport_MappaturaPreliminare(chiaveCliente, idImmobileCatasto, sezioniPb, unica)); return MergeDocument.Merge(pdfCliente, pdfPb).Draw(); } public Consulenza.DataServices.DatiSeiUnico _datiSeiUnico; public GeneratorService() { } public GeneratorService(Cliente _ClienteBatch, PrivateBanker _PBBatch) { _cliente = new Cliente { Chiave = _chiaveClientePb, CodiceFiscale = _ClienteBatch.CodiceFiscale, Cognome = _ClienteBatch.Cognome, Nome = _ClienteBatch.Nome, PartitaIva = _ClienteBatch.PartitaIva, DataSottoscrizioneContratto =_ClienteBatch.DataSottoscrizioneContratto, //TipologiaContratto = _ClienteBatch.TipologiaContratto, TipologiaContratto = _PBBatch.CodiceRete, DescrizioneProfilo = _ClienteBatch.DescrizioneProfilo, CodiceProfilo = _ClienteBatch.CodiceProfilo }; } public GeneratorService(Consulenza.DataServices.DatiSeiUnico datiSeiUnico) { _datiSeiUnico = datiSeiUnico; if (datiSeiUnico.all().clientePB != null) { _chiaveClientePb = datiSeiUnico.all().clientePB.chiaveClientePB; _cliente = new Cliente { Chiave = _chiaveClientePb, CodiceFiscale = _datiSeiUnico.clienteUnit().anagrafica.codiceFiscale, Cognome = _datiSeiUnico.clienteUnit().anagrafica.cognome, Nome = _datiSeiUnico.clienteUnit().anagrafica.nome, PartitaIva = _datiSeiUnico.clienteUnit().anagrafica.partitaIva, DataSottoscrizioneContratto = _datiSeiUnico.clienteUnit().anagrafica.dtSottoscrizione, TipologiaContratto = _datiSeiUnico.clienteUnit().anagrafica.contratto, DescrizioneProfilo = _datiSeiUnico.clienteUnit().anagrafica.descProfiloReport, CodiceProfilo = _datiSeiUnico.clienteUnit().anagrafica.codProfilo }; } else { _chiaveClientePb = 0; _cliente = new Cliente { Chiave = _datiSeiUnico.all().nucleiUnit.anagrafica.chiaveNucleo, CodiceFiscale = "", Cognome = _datiSeiUnico.nucleiUnit() == null ? "" : _datiSeiUnico.nucleiUnit().anagrafica.nomeNucleo, Nome = "", PartitaIva = "", TipologiaContratto = "", DescrizioneProfilo = "", CodiceProfilo = 0 }; } //_privateBanker = new PrivateBanker //{ // Cap = _datiSeiUnico.all().promotoreBancario.zipCode, // Citta = _datiSeiUnico.all().promotoreBancario.city, // Codice = _datiSeiUnico.all().promotoreBancario.codAge, // CodiceRete = _datiSeiUnico.all().promotoreBancario.network, // Indirizzo = _datiSeiUnico.all().promotoreBancario.address, // Livello = _datiSeiUnico.all().promotoreBancario.rank, // Nominativo = string.Format("{0} {1}", _datiSeiUnico.all().promotoreBancario.surname, _datiSeiUnico.all().promotoreBancario.name), // NumeroCivico = "", // PrefissoTelefono = _datiSeiUnico.all().promotoreBancario.phonePrefix, // Telefono = _datiSeiUnico.all().promotoreBancario.phoneNumber //}; } } }