using StandManager.Domain.Entita.Base;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations.Schema;

namespace StandManager.Domain.Entita;

public class IscrizioneEvento : EntitaBase
{
    [ForeignKey(nameof(Evento))]
    public Guid? EventoId { get; set; }
    public Evento Evento{ get; set; }
    
    [ForeignKey(nameof(InvitoEvento))]
    public Guid? InvitoEventoId { get; set; }
    public InvitoEvento InvitoEvento { get; set; }

    [ForeignKey(nameof(Cliente))]
    public Guid? ClienteId { get; set; }
    public Cliente Cliente { get; set; }

    [ForeignKey(nameof(Destinazione))]
    public Guid? DestinazioneId { get; set; }
    public Destinazione Destinazione { get; set; }
    public int Partecipanti{ get; set; }
    public string? Note{ get; set; }
    public bool ScanCompleto{ get; set; }
    public DateTime? DataScan{ get; set; }
    public string? Nome{ get; set; }
    public string? Cognome{ get; set; }
    public string? Email { get; set; }
    public string? NumeroTelefono {  get; set; }
    [ForeignKey(nameof(Provincia))]
    public Guid? ProvinciaId { get; set; }
    public ProvinciaIstat Provincia { get; set; }
    [ForeignKey(nameof(Comune))]
    public Guid? ComuneId { get; set; }
    public ComuneIstat Comune { get; set; }
    public string? Cap { get; set; }
    public string? RagioneSociale { get; set; }
    [ForeignKey(nameof(TipologiaCliente))]
    public Guid? TipologiaClienteId { get; set; }
    public TipologiaCliente TipologiaCliente { get; set; }
    public string? EsperienzaConDAC { get; set; }
    public RuoloTipo Ruolo { get; set; }
    public string? PartitaIva { get; set; }
    public DateTime GiornoPresenza { get; set; }
}

public enum RuoloTipo
{
    [Description("Titolare dell'azienda")]
    Titolare = 0,
    [Description("Dipendente dell'azienda")]
    Dipendente = 10,
    [Description("Libera Professione")]
    LiberaProfessione = 100,

}