import { Expose, Transform } from 'class-transformer' import { isNil } from 'lodash' import { LanguageCountryCode, parseISO } from '../utils' import { SmartfitHelper } from '../services/smartfit/helpers' enum CountryLanguageCode { BRASIL = LanguageCountryCode.PT_BR, MÉXICO = LanguageCountryCode.ES_MX, EQUADOR = LanguageCountryCode.ES_EC, } export class SubscriptionSmartfit { @Transform(value => (!isNil(value) ? value.toString() : null), { toClassOnly: true }) str_addon_id: string @Expose({ name: 'str_addon' }) addonDescription: string @Expose({ name: 'str_cpf' }) documentNumber: string @Expose({ name: 'str_email' }) email: string @Expose({ name: 'str_pais' }) @Transform((value: string) => CountryLanguageCode[value.toLocaleUpperCase()], { toClassOnly: true, }) countryCode: LanguageCountryCode @Expose({ name: 'date_compra_addon' }) @Transform(value => parseISO(value), { toClassOnly: true }) purchasedAt: Date @Expose({ name: 'date_cancelamento_addon' }) @Transform(value => parseISO(value), { toClassOnly: true }) cancelledAt: Date @Expose({ name: 'date_fim_trial_real' }) @Transform(value => parseISO(value), { toClassOnly: true }) trialExpiresAt: Date @Expose({ name: 'date_solicitacao_cancelamento_addon' }) @Transform(value => parseISO(value), { toClassOnly: true }) cancellationRequestedAt: Date get addonId(): string { return this.str_addon_id || new SmartfitHelper().getAddonIdByDescription(this.addonDescription).toString() } constructor(args?: Partial) { Object.assign(this, args) } }