108 lines
3.8 KiB
C#
108 lines
3.8 KiB
C#
using Consulenza.DataServices.fideuram.data.service;
|
|
using System.Linq;
|
|
|
|
namespace Consulenza.ReportWriter.Business
|
|
{
|
|
/// <summary>
|
|
/// Classe utilizzata per determinare il tipo di profilo (professionale, retail) di un Cliente o di un Nucleo e il grado di aggressività.
|
|
/// </summary>
|
|
public class Profiler
|
|
{
|
|
|
|
/// <summary>
|
|
/// Imposta o recupera l'informazione se il Cliente ha un profilo professionale.
|
|
/// </summary>
|
|
public bool ProfiloProfessionale { get; set; }
|
|
/// <summary>
|
|
/// Imposta o recupera l'informazione se il Cliente ha un profilo aggressivo.
|
|
/// </summary>
|
|
public bool ProfiloAggressivo { get; set; }
|
|
/// <summary>
|
|
/// Imposta o recupera l'informazione se il Cliente ha un profilo professionale aggressivo.
|
|
/// </summary>
|
|
public bool ProfiloProfessionaleAggressivo { get; set; }
|
|
|
|
private rsAnagraficaNucleo _rsAnagraficaNucleo;
|
|
private rsClienteAnagrafica _rsClienteAnagrafica;
|
|
|
|
private enum TipoReport { cliente, nucleo };
|
|
private TipoReport _tipo;
|
|
|
|
/// <summary>
|
|
/// Costruttore
|
|
/// </summary>
|
|
public Profiler()
|
|
{
|
|
|
|
}
|
|
/// <summary>
|
|
/// Costruttore
|
|
/// </summary>
|
|
/// <param name="rsAnagraficaNucleo">rsAnagraficaNucleo Anagrafica Nucleo</param>
|
|
public Profiler(rsAnagraficaNucleo rsAnagraficaNucleo)
|
|
{
|
|
_rsAnagraficaNucleo = rsAnagraficaNucleo;
|
|
_tipo = TipoReport.nucleo;
|
|
SetProfilo();
|
|
}
|
|
/// <summary>
|
|
/// Costruttore
|
|
/// </summary>
|
|
/// <param name="rsClienteAnagrafica">rsClienteAnagrafica Anagrafica Cliente</param>
|
|
public Profiler(rsClienteAnagrafica rsClienteAnagrafica)
|
|
{
|
|
_rsClienteAnagrafica = rsClienteAnagrafica;
|
|
_tipo = TipoReport.cliente;
|
|
SetProfilo();
|
|
}
|
|
/// <summary>
|
|
/// Imposta il profilo
|
|
/// </summary>
|
|
private void SetProfilo()
|
|
{
|
|
if (_tipo == TipoReport.nucleo)
|
|
{
|
|
ProfiloProfessionale = isNucleoProfessionale(_rsAnagraficaNucleo.listaClientiNucleo);
|
|
ProfiloAggressivo = isNucleoAggressivo(_rsAnagraficaNucleo.listaClientiNucleo);
|
|
|
|
}
|
|
else
|
|
{
|
|
//ProfiloProfessionale = _rsClienteAnagrafica.idTipoCliente == 1 ? true: false;
|
|
//a regime vanno letti da datiSeiUnico...
|
|
ProfiloProfessionale = _rsClienteAnagrafica.clienteProfile.clienteProfessionale;
|
|
ProfiloAggressivo = _rsClienteAnagrafica.codProfilo >= 5 ? true : false;
|
|
}
|
|
|
|
// indica che il cliente è professionale con profilo aggressivo (le modifiche sui valori di rischio etc si applicano su questa tipologia)
|
|
ProfiloProfessionaleAggressivo = ProfiloProfessionale && ProfiloAggressivo;
|
|
|
|
}
|
|
|
|
private bool isNucleoProfessionale(rsAnagraficaClienteNucleo[] listaClientiNucleo)
|
|
{
|
|
//In attesa di un valore indicativo sulla categoria Cliente
|
|
|
|
if (listaClientiNucleo.Where(x => x.tipoConsulenza != "P").ToList().Count() > 0)
|
|
return false;
|
|
else
|
|
return true;
|
|
//if (listaClientiNucleo.Where(x => x.clienteProfessionale == false).ToList().Count() > 0)
|
|
// return false;
|
|
//else
|
|
// return true;
|
|
|
|
}
|
|
//--Adriano
|
|
|
|
//Adriano: serve per determinare se tutti i clienti appartenenti al nucleo hanno un profilo aggressivo (codProfilo >=5)
|
|
private bool isNucleoAggressivo(rsAnagraficaClienteNucleo[] listaClientiNucleo)
|
|
{
|
|
if (listaClientiNucleo.Min(c => c.codProfilo) >= 5)
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
}
|
|
}
|