Files
edr-platform/apps/edr-payment-api/src/modules/cbe-bill/dto/cbe-payment-request.dto.ts
2026-07-31 07:50:10 +00:00

103 lines
1.9 KiB
TypeScript

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