mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-08-25 13:49:40 +00:00
57 lines
1.6 KiB
TypeScript
57 lines
1.6 KiB
TypeScript
import { ApiProperty } from '@nestjs/swagger';
|
|
import { Card } from '~/card/entities';
|
|
import { CardScheme, CardStatus, CustomerType } from '~/card/enums';
|
|
import { CardStatusDescriptionMapper } from '~/card/mappers/card-status-description.mapper';
|
|
import { UserLocale } from '~/core/enums';
|
|
|
|
export class CardResponseDto {
|
|
@ApiProperty({
|
|
example: 'b34df8c2-5d3e-4b1a-9c2f-7e3b1a2d3f4e',
|
|
})
|
|
id!: string;
|
|
|
|
@ApiProperty({
|
|
example: '123456',
|
|
description: 'The first six digits of the card number.',
|
|
})
|
|
firstSixDigits!: string;
|
|
|
|
@ApiProperty({ example: '7890', description: 'The last four digits of the card number.' })
|
|
lastFourDigits!: string;
|
|
|
|
@ApiProperty({
|
|
enum: CardScheme,
|
|
description: 'The card scheme (e.g., VISA, MASTERCARD).',
|
|
})
|
|
scheme!: CardScheme;
|
|
|
|
@ApiProperty({
|
|
enum: CardStatus,
|
|
description: 'The current status of the card (e.g., ACTIVE, PENDING).',
|
|
})
|
|
status!: CardStatus;
|
|
|
|
@ApiProperty({
|
|
example: 'The card is active',
|
|
description: 'A description of the card status.',
|
|
})
|
|
statusDescription!: string;
|
|
|
|
@ApiProperty({
|
|
example: 2000.0,
|
|
description: 'The credit limit of the card.',
|
|
})
|
|
balance!: number;
|
|
|
|
constructor(card: Card) {
|
|
this.id = card.id;
|
|
this.firstSixDigits = card.firstSixDigits;
|
|
this.lastFourDigits = card.lastFourDigits;
|
|
this.scheme = card.scheme;
|
|
this.status = card.status;
|
|
this.statusDescription = CardStatusDescriptionMapper[card.statusDescription][UserLocale.ENGLISH].description;
|
|
this.balance =
|
|
card.customerType === CustomerType.CHILD ? Math.min(card.limit, card.account.balance) : card.account.balance;
|
|
}
|
|
}
|