using Apollinare.Domain.Enums;

namespace Apollinare.Domain.Entities;

public class Evento : BaseEntity
{
    public string? Codice { get; set; }
    public DateTime DataEvento { get; set; }
    public TimeSpan? OraInizio { get; set; }
    public TimeSpan? OraFine { get; set; }
    public int? ClienteId { get; set; }
    public int? LocationId { get; set; }
    public int? TipoEventoId { get; set; }
    public StatoEvento Stato { get; set; } = StatoEvento.Scheda;
    public string? Descrizione { get; set; }
    public int? NumeroOspiti { get; set; }
    public int? NumeroOspitiAdulti { get; set; }
    public int? NumeroOspitiBambini { get; set; }
    public int? NumeroOspitiSeduti { get; set; }
    public int? NumeroOspitiBuffet { get; set; }
    public decimal? CostoTotale { get; set; }
    public decimal? CostoPersona { get; set; }
    public decimal? TotaleAcconti { get; set; }
    public decimal? Saldo { get; set; }
    public DateTime? DataScadenzaPreventivo { get; set; }
    public string? NoteInterne { get; set; }
    public string? NoteCliente { get; set; }
    public string? NoteCucina { get; set; }
    public string? NoteAllestimento { get; set; }
    public bool Confermato { get; set; }

    public Cliente? Cliente { get; set; }
    public Location? Location { get; set; }
    public TipoEvento? TipoEvento { get; set; }

    public ICollection<EventoDettaglioOspiti> DettagliOspiti { get; set; } = new List<EventoDettaglioOspiti>();
    public ICollection<EventoDettaglioPrelievo> DettagliPrelievo { get; set; } = new List<EventoDettaglioPrelievo>();
    public ICollection<EventoDettaglioRisorsa> DettagliRisorse { get; set; } = new List<EventoDettaglioRisorsa>();
    public ICollection<EventoAcconto> Acconti { get; set; } = new List<EventoAcconto>();
    public ICollection<EventoAltroCosto> AltriCosti { get; set; } = new List<EventoAltroCosto>();
    public ICollection<EventoAllegato> Allegati { get; set; } = new List<EventoAllegato>();
    public ICollection<EventoDegustazione> Degustazioni { get; set; } = new List<EventoDegustazione>();
}
