2023-12-04 15:57:58 +01:00

93 lines
2.6 KiB
TypeScript

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;
}