import { type IConferma } from '@/shared/model/conferma.model';
import { type TipoCanaleNotifica } from '@/shared/model/enumerations/tipo-canale-notifica.model';
import { type TipoEventoNotifica } from '@/shared/model/enumerations/tipo-evento-notifica.model';
export interface INotifica {
  id?: number;
  tipoCanale?: keyof typeof TipoCanaleNotifica | null;
  tipoEvento?: keyof typeof TipoEventoNotifica | null;
  messaggio?: string | null;
  inviata?: boolean | null;
  inviataAt?: Date | null;
  errore?: string | null;
  createdAt?: Date | null;
  conferma?: IConferma | null;
}

export class Notifica implements INotifica {
  constructor(
    public id?: number,
    public tipoCanale?: keyof typeof TipoCanaleNotifica | null,
    public tipoEvento?: keyof typeof TipoEventoNotifica | null,
    public messaggio?: string | null,
    public inviata?: boolean | null,
    public inviataAt?: Date | null,
    public errore?: string | null,
    public createdAt?: Date | null,
    public conferma?: IConferma | null,
  ) {
    this.inviata = this.inviata ?? false;
  }
}
