chore: normalize the payment and payment transaction

This commit is contained in:
mahyargdz
2025-02-06 13:08:51 +03:30
parent f3f47a80a1
commit e216937dd9
23 changed files with 547 additions and 90 deletions
@@ -0,0 +1,36 @@
import { ApiProperty } from "@nestjs/swagger";
import { IsBoolean, IsNotEmpty, IsNumberString, IsString, Length } from "class-validator";
import { PaymentMessage } from "../../../common/enums/message.enum";
export class CreateBankAccountDto {
@IsNotEmpty({ message: PaymentMessage.CARD_NUMBER_REQUIRED })
@IsNumberString({ no_symbols: true }, { message: PaymentMessage.CARD_NUMBER_NUMBER_STRING })
@Length(16, 16, { message: PaymentMessage.CARD_NUMBER_LENGTH })
@ApiProperty({ description: "card number", example: "1234567812345678" })
cardNumber: string;
@IsNotEmpty({ message: PaymentMessage.IBAN_REQUIRED })
@IsNumberString({ no_symbols: true }, { message: PaymentMessage.IBAN_NUMBER_STRING })
// @IsIBAN({ message: PaymentMessage.IBAN_INVALID })
@Length(24, 24, { message: PaymentMessage.IBAN_INVALID })
@ApiProperty({ description: "IBAN number", example: "123456789012345678901234" })
IBan: string;
@IsNotEmpty({ message: PaymentMessage.BANK_NAME_REQUIRED })
@IsString({ message: PaymentMessage.BANK_NAME_STRING })
@Length(2, 100, { message: PaymentMessage.BANK_NAME_LENGTH })
@ApiProperty({ description: "bank name", example: "Example Bank" })
bankName: string;
@IsNotEmpty({ message: PaymentMessage.ACCOUNT_OWNER_NAME_REQUIRED })
@IsString({ message: PaymentMessage.ACCOUNT_OWNER_NAME_STRING })
@Length(3, 150, { message: PaymentMessage.ACCOUNT_OWNER_NAME_LENGTH })
@ApiProperty({ description: "account owner name", example: "John Doe" })
accountOwnerName: string;
@IsNotEmpty({ message: PaymentMessage.IS_ACTIVE_REQUIRED })
@IsBoolean({ message: PaymentMessage.IS_ACTIVE_BOOLEAN })
@ApiProperty({ description: "specify that bank account is active", example: true })
isActive: boolean;
}
+17 -11
View File
@@ -2,7 +2,7 @@ import { ApiProperty } from "@nestjs/swagger";
import { IsEnum, IsInt, IsNotEmpty, IsUUID, IsUrl, Min } from "class-validator";
import { WalletMessage } from "../../../common/enums/message.enum";
import { GatewayEnum } from "../enums/gateway.enum";
import { TransferMethod } from "../enums/payment-type.enum";
export class DepositDto {
@IsNotEmpty({ message: WalletMessage.AMOUNT_REQUIRED })
@@ -13,24 +13,30 @@ export class DepositDto {
}
export class GatewayDepositDto extends DepositDto {
// @IsNotEmpty({ message: WalletMessage.GATEWAY_REQUIRED })
// @IsEnum(GatewayEnum)
// @ApiProperty({ description: "Gateway to use", example: "zarinpal" })
// gateway: GatewayEnum;
@IsNotEmpty({ message: WalletMessage.GATEWAY_REQUIRED })
@IsEnum(GatewayEnum)
@ApiProperty({ description: "Gateway to use", example: "zarinpal" })
gateway: GatewayEnum;
@IsUUID("4", { message: WalletMessage.GATEWAY_ID_SHOULD_BE_UUID })
@ApiProperty({ description: "Gateway id to pay", example: "e6fdce2a-9f91-47c4-8561-48368fc275b5" })
gatewayId: string;
}
export class CardToCardDepositDto extends DepositDto {
export class TransferDepositDto extends DepositDto {
@IsNotEmpty({ message: WalletMessage.RECEIPT_URL_REQUIRED })
@IsUrl({ protocols: ["http", "https"], require_protocol: true }, { message: WalletMessage.RECEIPT_URL_SHOULD_BE_URL })
@ApiProperty({ description: "the " })
@ApiProperty({ description: "the transferReceipt url", example: "https://example.com/image.png" })
transferReceiptUrl: string;
@IsNotEmpty({ message: WalletMessage.BANK_ACCOUNT_ID_REQUIRED })
@IsUUID("4", { message: WalletMessage.BANK_ACCOUNT_ID_SHOULD_BE_UUID })
@ApiProperty({ description: "bank account id", example: "e6fdce2a-9f91-47c4-8561-48368fc275b5" })
bankAccountId: string;
}
// @IsNotEmpty({ message: WalletMessage.DEPOSIT_TYPE_REQUIRED })
// @IsEnum(DepositType)
// @ApiProperty({ description: "Deposit type", example: DepositType.GATEWAY })
// depositType: DepositType;
@IsNotEmpty({ message: WalletMessage.TRANSFER_METHOD_REQUIRED })
@IsEnum(TransferMethod)
@ApiProperty({ description: "transfer method", example: TransferMethod.CARD_TO_CARD, enum: TransferMethod })
method: TransferMethod;
}
@@ -0,0 +1,27 @@
import { ApiPropertyOptional } from "@nestjs/swagger";
import { IsDateString, IsEnum, IsOptional, IsString } from "class-validator";
import { PaginationDto } from "../../../common/DTO/pagination.dto";
import { PaymentStatus } from "../enums/payment-status.enum";
export class SearchTransactionQueryDto extends PaginationDto {
@IsOptional()
@IsString()
@ApiPropertyOptional({ description: "user name or family or ...", example: "mamad" })
user?: string;
@IsOptional()
@IsDateString()
@ApiPropertyOptional({ description: "the date string", example: "2024-01-25" })
date?: string;
@IsOptional()
@IsEnum(PaymentStatus)
@ApiPropertyOptional({ enum: PaymentStatus, description: "payment status", example: PaymentStatus.PENDING })
status?: PaymentStatus;
@IsOptional()
@IsString()
@ApiPropertyOptional({ description: "search quey", example: "harchi" })
q?: string;
}
@@ -0,0 +1,5 @@
import { PartialType } from "@nestjs/swagger";
import { CreateBankAccountDto } from "./create-bankaccount.dto";
export class UpdateBankAccountDto extends PartialType(CreateBankAccountDto) {}