using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Text;
using System;
namespace Consulenza.ReportCommon
{
///
/// Gestore variabili d'ambiente del Report (Template, rete etc...) e repository delle variabili di chiamata
/// iniziale risolte dal livello Services.
///
public class ReportEnvironment
{
private readonly ReportType _reportType;
private FontFamily _fontfamily;
public FontFamily FontFamily { get { return _fontfamily ?? (_fontfamily = GetFontFamily()); } }
private ReportStruct _reportstruct = new ReportStruct();
private Cliente _cliente = new Cliente();
private PrivateBanker _privatebanker = new PrivateBanker();
private Delegato _privateDelegato = new Delegato();
private Proposta _proposta = new Proposta();
#region consulenza unica
private Diagnosi _diagnosi = new Diagnosi();
private Monitoraggio _monitoraggio = new Monitoraggio();
private NucleoUnica _nucleounica = new NucleoUnica();
private PropostaUnica _propostaunica = new PropostaUnica();
#endregion
private Immobiliare _immobiliare = new Immobiliare();
private Nucleo _nucleoimmobiliare = new Nucleo();
private MappaturaPreliminare _mappaturapreliminare = new MappaturaPreliminare();
private FinalitaImmobiliare _finalitaimmobiliare = new FinalitaImmobiliare();
private MonitoraggioImmobiliare _monitoraggioimmobiliare = new MonitoraggioImmobiliare();
private MonitoraggioImmobiliareNuclei _monitoraggioimmobiliarenuclei = new MonitoraggioImmobiliareNuclei();
public bool Adeguata = false;
///
/// Imposta o recupera il tipo di report.
///
public ReportType ReportType { get { return _reportType; } }
///
/// Imposta o recupera la struttura del report. E' il legame con la parte di "frontend"
///
public ReportStruct ReportStruct
{
get { return _reportstruct; }
set { _reportstruct = value; }
}
///
/// Imposta o recupera l'Id del modello da stampare
///
public int ModelId { get; set; }
///
/// Imposta o recupera l'Id del report da stampare
///
public int ReportId { get; set; }
///
/// Imposta o recupera il nome nella libreria RisorseEmbedded per il template di ciascuna pagina del report.
///
public string ResourceNameTemplate { get; set; }
///
/// Imposta o recupera il nome nella libreria RisorseEmbedded per il template per la copertina del report.
///
public string ResourceNameCover { get; set; }
///
/// Imposta o recupera le informazioni relative al Cliente.
///
public Cliente Cliente
{
get { return _cliente; }
set { _cliente = value; }
}
///
/// Imposta o recupera le informazioni relative al PrivateBanker.
///
public PrivateBanker PrivateBanker
{
get { return _privatebanker; }
set { _privatebanker = value; }
}
public Delegato PrivateDelegato
{
get { return _privateDelegato; }
set { _privateDelegato = value; }
}
///
/// Imposta o recupera le informazioni relative alla Proposta.
///
public Proposta Proposta
{
get { return _proposta; }
set { _proposta = value; }
}
///
/// Imposta o recupera le informazioni relative a Diagnosi.
///
public Diagnosi Diagnosi
{
get { return _diagnosi; }
set { _diagnosi = value; }
}
///
/// Imposta o recupera le informazioni relative a Diagnosi.
///
public Monitoraggio Monitoraggio
{
get { return _monitoraggio; }
set { _monitoraggio = value; }
}
///
/// Imposta o recupera le informazioni relative a Diagnosi.
///
public NucleoUnica NucleoUnica
{
get { return _nucleounica; }
set { _nucleounica = value; }
}
///
/// Imposta o recupera le informazioni relative a Diagnosi.
///
public PropostaUnica PropostaUnica
{
get { return _propostaunica; }
set { _propostaunica = value; }
}
public MonitoraggioImmobiliare MonitoraggioImmobiliare
{
get { return _monitoraggioimmobiliare; }
set { _monitoraggioimmobiliare = value; }
}
public MonitoraggioImmobiliareNuclei MonitoraggioImmobiliareNuclei
{
get { return _monitoraggioimmobiliarenuclei; }
set { _monitoraggioimmobiliarenuclei = value; }
}
///
/// Imposta o recupera le informazioni relative all' Immobiliare.
///
public Immobiliare Immobiliare
{
get { return _immobiliare; }
set { _immobiliare = value; }
}
///
/// Imposta o recupera le informazioni relative al nucleo Immobiliare.
///
public Nucleo NucleoImmobiliare
{
get { return _nucleoimmobiliare; }
set { _nucleoimmobiliare = value; }
}
///
/// Imposta o recupera le informazioni relative alla Mappatura preliminare del patrimonio Immobiliare.
///
public MappaturaPreliminare MappaturaPreliminare
{
get { return _mappaturapreliminare; }
set { _mappaturapreliminare = value; }
}
///
/// Imposta o recupera le informazioni relative alla Finalità del patrimonio Immobiliare.
///
public FinalitaImmobiliare FinalitaImmobiliare
{
get { return _finalitaimmobiliare; }
set { _finalitaimmobiliare = value; }
}
///
/// Costruttore.
///
/// Chiave del cliente
/// Tipo di report
/// Proposta
/// Immobiliare
public ReportEnvironment(Int64 chiaveCliente, Proposta proposta)
{
_cliente.Chiave = chiaveCliente;
if (proposta != null)
{
_proposta.Chiave = proposta.Chiave;
_proposta.PropostaCBUnica = proposta.PropostaCBUnica;
}
_reportType = ReportType.Base_Proposta;
}
///
/// Costruttore.
///
/// Chiave del cliente
/// Tipo di report
/// Proposta
/// Immobiliare
public ReportEnvironment(Int64 chiaveCliente, MonitoraggioImmobiliare monitoraggioImmobiliare)
{
_cliente.Chiave = chiaveCliente;
_reportType = ReportType.Immobiliare_Monitoraggio;
}
public ReportEnvironment(Int64 chiaveNucleo, Nucleo nucleoimmobiliare, MonitoraggioImmobiliareNuclei monitoraggioImmobiliareNuclei)
{
_cliente.Chiave = chiaveNucleo; ;
_reportType = ReportType.Immobiliare_MonitoraggioNuclei;
if (nucleoimmobiliare.IdImmobileCatasto != null)
{
_nucleoimmobiliare.IdImmobileCatasto = nucleoimmobiliare.IdImmobileCatasto;
}
}
///
/// Costruttore
///
///
///
public ReportEnvironment(Int64 chiaveCliente, Immobiliare immobiliare)
{
_cliente.Chiave = chiaveCliente;
if (immobiliare != null)
{
_immobiliare.IdImmobileCatasto = immobiliare.IdImmobileCatasto;
_immobiliare.IdSezione = immobiliare.IdSezione;
_immobiliare.ImmobiliareCEUnica = immobiliare.ImmobiliareCEUnica;
}
_reportType = ReportType.Immobiliare_Diagnosi;
}
///
/// Costruttore
///
///
///
public ReportEnvironment(Int64 chiaveCliente, FinalitaImmobiliare finalitaimmobiliare)
{
_cliente.Chiave = chiaveCliente;
if (finalitaimmobiliare != null)
{
_finalitaimmobiliare.IdImmobileCatasto = finalitaimmobiliare.IdImmobileCatasto;
_finalitaimmobiliare.IdSezione = finalitaimmobiliare.IdSezione;
_finalitaimmobiliare.ImmobiliareCEUnica = finalitaimmobiliare.ImmobiliareCEUnica;
}
_reportType = ReportType.Immobiliare_Finalita;
}
///
/// Costruttore
///
///
///
public ReportEnvironment(Int64 chiaveNucleo, Nucleo nucleoimmobiliare)
{
// _cliente.Chiave = chiaveCliente;
_nucleoimmobiliare.ChiaveNucleo = chiaveNucleo;
_nucleoimmobiliare.NomeNucleo = nucleoimmobiliare.NomeNucleo;
if (nucleoimmobiliare.IdImmobileCatasto != null)
{
_nucleoimmobiliare.IdImmobileCatasto = nucleoimmobiliare.IdImmobileCatasto;
_nucleoimmobiliare.ImmobiliareCEUnica = nucleoimmobiliare.ImmobiliareCEUnica;
}
//if (nucleoimmobiliare.ChiaviClientiPBImmobili != null)
// _nucleo.ChiaviClientiPBImmobili = nucleoimmobiliare.ChiaviClientiPBImmobili;
_reportType = ReportType.Immobiliare_DiagnosiNucleo;
}
///
/// Costruttore
///
///
///
public ReportEnvironment(Int64 chiaveCliente, MappaturaPreliminare mappatura)
{
_cliente.Chiave = chiaveCliente;
if (mappatura != null)
{
_mappaturapreliminare.IdImmobileCatasto = mappatura.IdImmobileCatasto;
_mappaturapreliminare.IdSezione = mappatura.IdSezione;
_mappaturapreliminare.ImmobiliareCEUnica = mappatura.ImmobiliareCEUnica;
}
_reportType = ReportType.Immobiliare_MappaturaPreliminare;
}
///
/// Costruttore
///
///
///
public ReportEnvironment(Int64 chiaveCliente, Diagnosi diagnosi)
{
_cliente.Chiave = chiaveCliente;
_reportType = ReportType.Unica_Diagnosi;
}
///
/// Costruttore
///
///
///
public ReportEnvironment(Int64 chiaveCliente, Monitoraggio monitoraggio)
{
_cliente.Chiave = chiaveCliente;
_reportType = ReportType.Unica_Monitoraggio;
}
///
/// Costruttore
///
///
///
public ReportEnvironment(Int64 chiaveCliente, PropostaUnica propostaunica, bool adeguata)
{
_cliente.Chiave = chiaveCliente;
_reportType = ReportType.Unica_Proposta;
Adeguata = adeguata;
}
///
/// Costruttore
///
///
///
public ReportEnvironment(Int64 chiaveCliente, NucleoUnica nucleounica)
{
_cliente.Chiave = chiaveCliente;
_reportType = ReportType.Unica_Nucleo;
}
///
/// Recupera il FontFamily.
///
///
private FontFamily GetFontFamily()
{
var regular = _reportType == ReportType.Base_Proposta ? new OpenTypeFont("arial.TTF") : new OpenTypeFont("verdana.TTF");
var bold = _reportType == ReportType.Base_Proposta ? new OpenTypeFont("arialbd.TTF") : new OpenTypeFont("verdanab.TTF");
var boldItalic = _reportType == ReportType.Base_Proposta ? new OpenTypeFont("arialbi.TTF") : new OpenTypeFont("verdanaz.TTF");
var italic = _reportType == ReportType.Base_Proposta ? new OpenTypeFont("ariali.TTF") : new OpenTypeFont("verdanai.TTF");
var fontFamily = new FontFamily("FontFamily", regular, bold, italic, boldItalic);
//var regular = _reportType == ReportType.ConsulenzaEvolutaImmobiliare ? new OpenTypeFont("verdana.TTF") : new OpenTypeFont("arial.TTF");
//var bold = _reportType == ReportType.ConsulenzaEvolutaImmobiliare ? new OpenTypeFont("verdanab.TTF") : new OpenTypeFont("arialbd.TTF");
//var boldItalic = _reportType == ReportType.ConsulenzaEvolutaImmobiliare ? new OpenTypeFont("verdanaz.TTF") : new OpenTypeFont("arialbi.TTF");
//var italic = _reportType == ReportType.ConsulenzaEvolutaImmobiliare ? new OpenTypeFont("verdanai.TTF") : new OpenTypeFont("ariali.TTF");
//var fontFamily = new FontFamily("FontFamily", regular, bold, italic, boldItalic);
return fontFamily;
}
}
}