import { IsEmail, IsString, MinLength, IsOptional, Matches } from "class-validator"; import { ApiProperty } from "@nestjs/swagger"; export class SignupDto { @ApiProperty({ example: "user@example.com" }) @IsEmail() email: string; @ApiProperty({ example: "SecurePassword123!", description: "Password must be at least 8 characters and contain uppercase, lowercase, number, and special character", }) @IsString() @MinLength(8, { message: "Password must be at least 8 characters long" }) @Matches(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]/, { message: "Password must contain at least one uppercase letter, one lowercase letter, one number, and one special character", }) password: string; @ApiProperty({ example: "John" }) @IsString() firstName: string; @ApiProperty({ example: "Doe" }) @IsString() lastName: string; @ApiProperty({ example: "Acme Corp", required: false }) @IsOptional() @IsString() company?: string; @ApiProperty({ example: "+1-555-123-4567", required: false }) @IsOptional() @IsString() phone?: string; }