import { IsNotEmpty, IsNumber, IsOptional, IsString, ValidateNested, ValidateIf, IsBoolean } from 'class-validator' import { Type } from 'class-transformer' import { CancellationsReasons } from '../../../../models/enums' import { SessionVariables } from '../../../../params' import { isNotBlank } from '../../../../utils/string' class CancelSubscriptionInput { @IsNotEmpty() @IsString() patient_id: string @ValidateIf(input => isNotBlank(input.cancellation_reason_id)) @IsString() cancellation_reason_id: CancellationsReasons @ValidateIf(input => isNotBlank(input.cancellation_other_reason)) @IsString() cancellation_other_reason: string @IsOptional() @IsNumber() amountToRefund?: number @IsOptional() @IsBoolean() ignore_trial?: boolean @IsNotEmpty() @IsString() cancellation_requested_by_patient_at: string } export class CancelSubscriptionParams { @IsNotEmpty() @ValidateNested() @Type(() => CancelSubscriptionInput) readonly input: CancelSubscriptionInput @IsNotEmpty() @ValidateNested() @Type(() => SessionVariables) readonly session_variables: SessionVariables }