import { Type } from 'class-transformer'; import { IsArray, IsDateString, IsInt, IsNumber, IsOptional, IsString, MaxLength, Min, ValidateNested, } from 'class-validator'; export class PredictionValueDto { @IsString() fieldId!: string; @IsOptional() @IsString() @MaxLength(200) valueText?: string; @IsOptional() @IsNumber() valueNumber?: number; @IsOptional() @IsDateString() valueDate?: string; } export class UpsertPredictionEntryDto { @IsOptional() @IsInt() @Min(1) selectedBabyIndex?: number; @IsArray() @ValidateNested({ each: true }) @Type(() => PredictionValueDto) values!: PredictionValueDto[]; } export class OutcomeValueDto { @IsString() fieldId!: string; @IsOptional() @IsString() @MaxLength(200) valueText?: string; @IsOptional() @IsNumber() valueNumber?: number; @IsOptional() @IsDateString() valueDate?: string; } export class SetOutcomesDto { @IsOptional() @IsInt() @Min(1) selectedBabyIndex?: number; @IsArray() @ValidateNested({ each: true }) @Type(() => OutcomeValueDto) values!: OutcomeValueDto[]; } export class ValidateScoreItemDto { @IsString() fieldId!: string; @IsOptional() @IsInt() @Min(0) awardedPoints?: number; @IsOptional() @IsString() @MaxLength(300) note?: string; } export class ValidateScoresDto { @IsArray() @ValidateNested({ each: true }) @Type(() => ValidateScoreItemDto) scores!: ValidateScoreItemDto[]; }