import { IsEnum, IsNotEmpty, IsOptional, ValidateNested, IsString, IsNumber } from 'class-validator' import { Type } from 'class-transformer' import { PaymentProviders } from '../../../../models/enums' import { SessionVariables } from '../../../../params' import { CardType, CardTypeEnum } from '../../../../models' import { OriginRequest } from '../../../../services' export class SubscriptionData { @IsOptional() @IsString() sales_channel: OriginRequest @IsOptional() @IsNumber() smartfit_unit_id: number } export class CardData { @IsString() @IsNotEmpty() token: string @IsString() @IsNotEmpty() @IsEnum(CardTypeEnum) kind: CardType } class SubscribeInput { @IsNotEmpty() @IsString() plan_id: string @IsOptional() @IsEnum(PaymentProviders) payment_provider?: PaymentProviders @IsOptional() @IsString() token?: string @IsOptional() @IsString() original_transaction?: string @IsOptional() @IsString() discount_coupon?: string @IsOptional() @ValidateNested() @Type(() => CardData) card?: CardData @IsOptional() @ValidateNested() @Type(() => SubscriptionData) data?: SubscriptionData } export class SubscribeParams { @IsNotEmpty() @ValidateNested() @Type(() => SubscribeInput) readonly input: SubscribeInput @IsNotEmpty() @ValidateNested() @Type(() => SessionVariables) readonly session_variables: SessionVariables }