import { type AzioneAudit } from '@/shared/model/enumerations/azione-audit.model';
import { type TipoEntita } from '@/shared/model/enumerations/tipo-entita.model';
import { type IUtenteApp } from '@/shared/model/utente-app.model';

export interface IAuditLog {
  id?: number;
  entitaTipo?: keyof typeof TipoEntita | null;
  entitaId?: number | null;
  azione?: keyof typeof AzioneAudit | null;
  dettagli?: string | null;
  ipAddress?: string | null;
  createdAt?: Date | null;
  utente?: IUtenteApp | null;
}

export class AuditLog implements IAuditLog {
  constructor(
    public id?: number,
    public entitaTipo?: keyof typeof TipoEntita | null,
    public entitaId?: number | null,
    public azione?: keyof typeof AzioneAudit | null,
    public dettagli?: string | null,
    public ipAddress?: string | null,
    public createdAt?: Date | null,
    public utente?: IUtenteApp | null,
  ) {}
}
