import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { Type } from 'class-transformer'; import { IsDateString, IsInt, IsOptional, Max, Min, ValidateNested, } from 'class-validator'; import { UpdateContractDocumentDto } from './contract-document.dto'; export class AcceptContractDto { @ApiProperty({ description: 'How many days the contract stays valid, counted from the accept date. ' + 'The contract is valid from now through now + validityDays.', minimum: 1, maximum: 3650, example: 365, }) @IsInt() @Min(1) @Max(3650) validityDays!: number; /** * Explicit validity window picked by staff in the accept dialog. When both are * present they win over `validityDays` (which is then only the derived span) * and the configured-period check is skipped — staff may enter any range. */ @ApiPropertyOptional({ description: 'Validity start (ISO date)' }) @IsOptional() @IsDateString() validFrom?: string; @ApiPropertyOptional({ description: 'Validity end (ISO date)' }) @IsOptional() @IsDateString() validUntil?: string; /** * Optional per-contract document override edited by staff in the accept * dialog. When present its articles are frozen onto THIS contract; when * omitted the live template is snapshotted as-is. Never edits the shared * six templates. */ @ApiPropertyOptional({ type: UpdateContractDocumentDto }) @IsOptional() @ValidateNested() @Type(() => UpdateContractDocumentDto) documentSnapshot?: UpdateContractDocumentDto; }