Files
psp_api/src/modules/tspProviders/switch/nama/nama-provider.dto.ts
T

262 lines
4.7 KiB
TypeScript
Raw Normal View History

import { TspProviderResponseStatus } from '@/generated/prisma/enums'
import { ApiProperty } from '@nestjs/swagger'
import { Type } from 'class-transformer'
import {
IsArray,
IsEnum,
IsNumber,
IsOptional,
IsString,
Min,
ValidateNested,
} from 'class-validator'
export enum NamaProviderResponseStatus {
POSTED = 'SUCCESS',
PENDING = 'PENDING',
IN_PROGRESS = 'IN_PROGRESS',
SUCCESS = 'SUCCESS',
FAILED = 'FAILED',
}
export class NamaProviderPaymentInfoDto {
@ApiProperty({ required: true, description: 'روش پرداخت' })
@IsNumber()
pmt: number
@ApiProperty({ required: true, description: 'مبلغ پرداختی' })
@IsNumber()
@Min(10_000)
pv: number
@ApiProperty({ required: false, description: 'شماره‌ی پیگیری' })
@IsOptional()
@IsString()
trn?: string
@ApiProperty({ required: false, description: 'شماره‌ی کارت پرداخت کننده‌ی صورت‌حساب' })
@IsOptional()
@IsString()
pcn?: string
@ApiProperty({ required: false, description: 'تاریخ و زمان پرداخت صورت‌حساب unix' })
@IsOptional()
@IsNumber()
pdt?: string
}
export class NamaProviderBodyItemDto {
@ApiProperty()
@IsString()
sstid: string
@ApiProperty()
@IsString()
vra: string
// @ApiProperty()
// @IsString()
// sstt: string
@ApiProperty()
@IsString()
fee: string
@ApiProperty()
@IsString()
dis: string
@ApiProperty()
@IsString()
mu: string
@ApiProperty()
@IsString()
am: string
@ApiProperty()
@IsString()
consfee: string
@ApiProperty()
@IsString()
bros: string
@ApiProperty()
@IsString()
spro: string
}
export class NamaProviderHeaderDto {
@ApiProperty({ required: true })
@IsString()
ins: string
@ApiProperty()
@IsString()
inp: string
@ApiProperty({ required: true })
@IsString()
inty: string
// @ApiProperty({required: true})
// @IsString()
// unique_tax_code: string
@ApiProperty({ required: true })
@IsString()
inno: string
@ApiProperty({ required: true })
@IsString()
tins: string
@ApiProperty({ required: true })
@IsString()
indatim: string
@ApiProperty({ required: true })
@IsString()
name: string
@ApiProperty({ required: true })
@IsString()
tob: string
@ApiProperty()
@IsOptional()
@IsString()
address?: string
@ApiProperty()
@IsOptional()
@IsString()
mobile?: string
@ApiProperty()
@IsString()
bid: string
@ApiProperty({ required: true })
@IsString()
setm: string
}
export class NamaProviderRequestDto {
@ApiProperty({ type: [NamaProviderBodyItemDto] })
@IsArray()
@ValidateNested({ each: true })
@Type(() => NamaProviderBodyItemDto)
body: NamaProviderBodyItemDto[]
@ApiProperty({ type: [NamaProviderPaymentInfoDto] })
@IsArray()
@ValidateNested({ each: true })
@Type(() => NamaProviderPaymentInfoDto)
payment: NamaProviderPaymentInfoDto[]
@ApiProperty({ type: NamaProviderHeaderDto })
@ValidateNested()
@Type(() => NamaProviderHeaderDto)
header: NamaProviderHeaderDto
@ApiProperty()
@IsString()
uuid: string
@ApiProperty()
@IsString()
economic_code: string
@ApiProperty()
@IsString()
fiscal_id: string
}
export class NamaProviderApiErrorItemDto {
@ApiProperty()
@IsString()
code: string
@ApiProperty()
@IsString()
message: string
}
export class NamaProviderApiErrorResponseDto {
@ApiProperty({ type: [NamaProviderApiErrorItemDto], required: false })
@IsOptional()
@IsArray()
@ValidateNested({ each: true })
@Type(() => NamaProviderApiErrorItemDto)
error?: NamaProviderApiErrorItemDto
}
export class NamaProviderSendItemResponseDto {
@ApiProperty()
@IsString()
uuid: string
@ApiProperty()
@IsString()
message: string
@ApiProperty()
@IsString()
status: NamaProviderResponseStatus
@ApiProperty()
@IsString()
tax_id: string
@ApiProperty()
@IsString()
inno: string
@ApiProperty({ required: true })
@IsString()
reference_number: string
@ApiProperty({ type: () => NamaProviderApiErrorResponseDto, required: false })
@IsOptional()
@ValidateNested()
@Type(() => NamaProviderApiErrorResponseDto)
tax_api_response?: NamaProviderApiErrorResponseDto
@ApiProperty({ required: false })
@IsOptional()
@IsString()
tsp_update_time: string
}
export class NamaProviderGetResponseDto {
@ApiProperty()
@IsString()
uuid: string
@ApiProperty()
@IsString()
message: string
@ApiProperty({ enum: TspProviderResponseStatus })
@IsEnum(TspProviderResponseStatus)
status: TspProviderResponseStatus
@ApiProperty()
@IsString()
tax_id: string
@ApiProperty()
@IsString()
inno: string
@ApiProperty()
@IsString()
reference_number: string
@ApiProperty()
@IsString()
tsp_update_time: string
}