import { Transform } from 'class-transformer' import { CardData } from '../services/n2b-payments' import { parseDate } from '../utils/date' import { BaseModel } from './base.model' import { PaymentProviders } from './enums' import { CardType } from './types' export type SubscriptionTransactionStatus = 'success' | 'failed' export class SubscriptionTransaction extends BaseModel { id: string patient_id: string installments: number amount: number discount: number fee: number card_number: string status: SubscriptionTransactionStatus subscription_id: string data: Record card_type: CardType payment_provider: PaymentProviders installment_number?: number payment_id: number error_code?: string error_message?: string @Transform(value => parseDate(value), { toClassOnly: true }) due_at: Date @Transform(value => parseDate(value), { toClassOnly: true }) paid_at: Date @Transform(value => parseDate(value), { toClassOnly: true }) created_at: Date @Transform(value => parseDate(value), { toClassOnly: true }) updated_at: Date get installment_price(): number { return this.amount / this.installments } get cardData(): CardData { return { kind: this.card_type, last4: this.card_number, } } }