export * from "../Customer/Contact"; import { Expose, Type } from "class-transformer"; import ContactCustomer, { ECivility } from "../Customer/Contact"; import { IsEmail, IsNotEmpty, IsOptional, Matches, NotEquals, ValidateNested, } from "class-validator"; import Address from "./Address"; export default class Contact extends ContactCustomer { @Expose() public override uid?: string; @Expose() @IsOptional({ groups: ["updateCustomer"] }) @NotEquals(null || "", { groups: ["updateCustomer"], message: "Prénom ne peut pas être vide", }) @IsNotEmpty({ groups: ["createCustomer"], message: "Prénom ne peut pas être vide", }) public override first_name!: string; @Expose() @IsOptional({ groups: ["updateCustomer"] }) @NotEquals(null || "", { groups: ["updateCustomer"], message: "Nom ne peut pas être vide", }) @IsNotEmpty({ groups: ["createCustomer"], message: "Nom ne peut pas être vide", }) public override last_name!: string; @Expose() @IsOptional({ groups: ["updateCustomer"] }) @NotEquals(null || "", { groups: ["updateCustomer"], message: "Email ne peut pas être vide", }) @IsNotEmpty({ groups: ["createCustomer"], message: "Email ne peut pas être vide", }) @IsEmail( {}, { groups: ["createCustomer", "updateCustomer"], message: "Format de l'email incorrect", } ) public override email!: string; @Expose() @IsOptional({ groups: ["updateCustomer"] }) @NotEquals(null || "", { groups: ["updateCustomer"], message: "Numéro de téléphone ne peut pas être vide", }) @IsNotEmpty({ groups: ["createCustomer"], message: "Numéro de téléphone ne peut pas être vide", }) @Matches(/^\+[2-9]{2,3}[0-9]{9}$/, { groups: ["createCustomer", "updateCustomer"], message: "Le numéro de téléphone doit être au format 0X XX XX XX XX ou +33X XX XX XX XX", }) public override cell_phone_number!: string; @Expose() @IsOptional() public override phone_number?: string | null = null; @Expose() @IsOptional({ groups: ["updateCustomer"] }) @IsNotEmpty({ groups: ["createCustomer"], message: "Civility is required" }) public override civility!: ECivility | string; @Expose() @IsOptional({ groups: ["createCustomer", "updateCustomer"] }) @ValidateNested({ groups: ["createCustomer", "updateCustomer"] }) @Type(() => Address) public override address?: Address; }