import { type IConferma } from '@/shared/model/conferma.model';
import { type StatoPrenotazione } from '@/shared/model/enumerations/stato-prenotazione.model';
import { type IStruttura } from '@/shared/model/struttura.model';
import { type IUtenteApp } from '@/shared/model/utente-app.model';

export interface IPrenotazione {
  id?: number;
  oraInizio?: Date | null;
  oraFine?: Date | null;
  stato?: keyof typeof StatoPrenotazione | null;
  motivoEvento?: string | null;
  numeroPartecipanti?: number | null;
  noteUtente?: string | null;
  conferma?: IConferma | null;
  utente?: IUtenteApp | null;
  struttura?: IStruttura | null;
}

export class Prenotazione implements IPrenotazione {
  constructor(
    public id?: number,
    public oraInizio?: Date | null,
    public oraFine?: Date | null,
    public stato?: keyof typeof StatoPrenotazione | null,
    public motivoEvento?: string | null,
    public numeroPartecipanti?: number | null,
    public noteUtente?: string | null,
    public conferma?: IConferma | null,
    public utente?: IUtenteApp | null,
    public struttura?: IStruttura | null,
  ) {}
}
