import { Exclude } from "class-transformer";
import { IsIn } from "class-validator";
import { defaultDateGeneratorHelper } from "src/common/helpers/default-date-genarate";
import { Otp } from "src/gestion-utilisateurs/otp/entities/otp.entity";
import { Profil } from "src/gestion-utilisateurs/profils/entities/profil.entity";
import { Column, Entity, Index, JoinColumn, ManyToOne, OneToMany, PrimaryGeneratedColumn } from "typeorm";

export type Roles= "admin" | "maker" | "checker";
export type Entite= "OBA" | "PARTNER";
export type Statut= "enable" | "disabled";

@Entity('t_utilisateurs')
export class Utilisateur extends defaultDateGeneratorHelper{
    @PrimaryGeneratedColumn()
    id: number;

    @Index()
    @Column({ unique: true })
    email: string;

    @Index()
    @Column()
    nom: string;

    @Column({name: 'r_prenoms', length: 35, type: 'character varying'})
    prenoms: string;

    @Exclude()
    @Column({name: 'r_mot_de_passe', nullable: true})
    mot_de_passe: string;

    @ManyToOne(type => Profil, (profil) => profil.utilisateur, {eager: true, nullable: true})
    profil: Profil;

    @OneToMany(type=> Otp, (otps)=> otps.user)
    otps: Otp[];

    @Column({name: 'r_updated_pwd', default: false})
    updated_pwd: boolean;

    @Column({name: 'r_statut', nullable: true, default: 'enable'})
    statut: Statut;

    @Column({ name: 'tempPasswordExpiresAt', type: 'timestamp', nullable: true })
    tempPasswordExpiresAt: Date;

}
