347 lines
18 KiB
C#

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();
/// <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 byte[] CreaReport_ImmobiliareDiagnosi(long chiaveCliente, List<string> idImmobileCatasto, List<Int32> 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<string> idImmobileCatasto, List<Int32> 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<Int64> chiaviClientiPB, List<string> idImmobileCatasto, List<Int32> 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<string> 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<Int64> chiaviClientiPB, List<string> idImmobileCatasto, List<Int32> 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<string> 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);
}
/// <summary>
/// Ottiene un array binario del PDF del report di Finalità 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 byte[] CreaReport_FinalitaImmobiliare(long chiaveCliente, List<string> idImmobileCatasto, List<Int32> 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);
}
/// <summary>
/// Ottiene un array binario del PDF del report di Immobiliare di Diagnosi di ConsulenzaEvoluta per un nucleo familiare.
/// </summary>
/// <param name="chiaveNucleo">Chiave del 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 byte[] CreaReport_ImmobiliareDiagnosi_Nucleo(long chiaveNucleo, List<string> idImmobileCatasto, List<long> chiaviClientiPb, List<Int32> 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);
}
/// <summary>
/// Ottiene un array binario del PDF del report di Mappatura Preliminare (Immobiliare) 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 byte[] CreaReport_MappaturaPreliminare(long chiaveCliente, List<string> idImmobileCatasto, List<Int32> 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<Int32> sezioniCliente = idSezione.Where(l => l != 135 && l != 136).ToList();
List<Int32> 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<string> idImmobileCatasto, List<Int32> sezioniCliente, List<Int32> 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
//};
}
}
}