import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; import { Type } from "class-transformer"; import { IsArray, IsNotEmpty, IsOptional, IsString, ValidateNested, } from "class-validator"; import { AdditionalFieldDto } from "./cbe-query-request.dto"; /** * CBE → us, POST /cbe/payment (AAFDA spec §3.5). Mandatory fields per spec; the optional tail * (payer identity, channel) mirrors the reference implementation pending the Q1 sample files. */ export class CbePaymentRequestDto { @ApiProperty() @IsString() @IsNotEmpty() Destination_Api_Name!: string; @ApiProperty() @IsString() @IsNotEmpty() End_To_End_Txn_Id!: string; @ApiProperty() @IsString() @IsNotEmpty() Cbe_Txn_Ref!: string; @ApiProperty() @IsString() @IsNotEmpty() Timestamp!: string; @ApiProperty() @IsString() @IsNotEmpty() Bill_Id!: string; @ApiProperty() @IsString() @IsNotEmpty() Amount!: string; @ApiProperty() @IsString() Currency!: string; @ApiPropertyOptional() @IsOptional() @IsString() Phone_No?: string; @ApiPropertyOptional() @IsOptional() @IsString() Credit_Acct_Number?: string; @ApiPropertyOptional() @IsOptional() @IsString() First_Name?: string; @ApiPropertyOptional() @IsOptional() @IsString() Last_Name?: string; @ApiPropertyOptional() @IsOptional() @IsString() Full_Name?: string; @ApiPropertyOptional() @IsOptional() @IsString() Tin_Number?: string; @ApiPropertyOptional() @IsOptional() @IsString() Cheque_No?: string; @ApiPropertyOptional() @IsOptional() @IsString() Bank_Code?: string; @ApiPropertyOptional() @IsOptional() @IsString() Payment_Method?: string; @ApiPropertyOptional({ type: [AdditionalFieldDto] }) @IsOptional() @IsArray() @ValidateNested({ each: true }) @Type(() => AdditionalFieldDto) Additional_Fields?: AdditionalFieldDto[]; }