import { type Ruolo } from '@/shared/model/enumerations/ruolo.model';
import { type IUser } from '@/shared/model/user.model';

export interface IUtenteApp {
  id?: number;
  username?: string;
  email?: string;
  telefono?: string | null;
  ruolo?: keyof typeof Ruolo;
  attivo?: boolean;
  nome?: string | null;
  cognome?: string | null;
  luogoNascita?: string | null;
  dataNascita?: string | null;
  residente?: string | null;
  societa?: string | null;
  sede?: string | null;
  codfiscale?: string | null;
  telefonoSoc?: string | null;
  emailSoc?: string | null;
  internalUser?: IUser | null;
}

export class UtenteApp implements IUtenteApp {
  constructor(
    public id?: number,
    public username?: string,
    public email?: string,
    public telefono?: string | null,
    public ruolo?: keyof typeof Ruolo,
    public attivo?: boolean,
    public nome?: string | null,
    public cognome?: string | null,
    public luogoNascita?: string | null,
    public dataNascita?: string | null,
    public residente?: string | null,
    public societa?: string | null,
    public sede?: string | null,
    public codfiscale?: string | null,
    public telefonoSoc?: string | null,
    public emailSoc?: string | null,
    public internalUser?: IUser | null,
  ) {
    this.attivo = this.attivo ?? false;
  }
}
