using System;
namespace Consulenza.ReportCommon
{
    /// <summary>
    /// Rappresentazione del cliente.
    /// </summary>
    public class Cliente
    {
        /// <summary>
        /// Imposta o recupera il nome del cliente.
        /// </summary>
        public string Nome { get; set; }

        /// <summary>
        /// Imposta o recupera il cognome del cliente.
        /// </summary>
        public string Cognome { get; set; }

        /// <summary>
        /// Imposta o recupera il codice fiscale del cliente.
        /// </summary>
        public string CodiceFiscale { get; set; }

        /// <summary>
        /// Imposta o recupera il la partita iva del cliente.
        /// </summary>
        public string PartitaIva { get; set; }

        /// <summary>
        /// Imposta o recupera la chiave del cliente.
        /// </summary>
        public Int64 Chiave { get; set; }

        /// <summary>
        /// Imposta o recupera la tipologia del contratto sottoscritto dal cliente.
        /// </summary>
        public string TipologiaContratto { get; set; }

        /// <summary>
        /// Imposta o recupera la data in cui il cliente ha sottoscritto il contratto.
        /// </summary>
        public DateTime DataSottoscrizioneContratto { get; set; }

        /// <summary>
        /// Imposta o recupera la descrizione del profilo del cliente. (aggressivo, ...)
        /// </summary>
        public string DescrizioneProfilo { get; set; }

        /// <summary>
        /// Imposta o recupera il codice del profilo del cliente. (1,2,3...)
        /// </summary>
        public int CodiceProfilo { get; set; }

        /// <summary>
        /// Ritorna la tipologia di cliente. Fisico (codicefiscale) o Giuridico(partitaiva).
        /// </summary>
        public ClienteType Tipo
        {
            get { return string.IsNullOrEmpty(PartitaIva) ? ClienteType.Fisico : ClienteType.Giuridico; }
        }

        /// <summary>
        /// Ritorna informazione sull'attivazione servizio aggiuntivo Nucleo Contrattualizzato
        /// </summary>
        public bool FlagNucleo { get; set; }

        /// <summary>
        /// Ritorna informazione sull'attivazione servizio aggiuntivo Monitoraggio Immobiliare
        /// </summary>
        public bool FlagMonitoraggioImmobiliare { get; set; }

        /// <summary>
        /// Ritorna informazione sull'attivazione servizio aggiuntivo Pianificazione Successoria
        /// </summary>
        public bool FlagPianificazioneSuccessoria { get; set; }

    }

}
