import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { IsIn, IsNumber, IsOptional, IsString, Min, MinLength } from 'class-validator'; export class RequestChangesDto { @ApiProperty({ description: 'Staff note explaining what the customer must fix' }) @IsString() @MinLength(1) note!: string; } export class StaffRejectDto { @ApiProperty() @IsString() @MinLength(1) reason!: string; } export class ApproveStepDto { @ApiProperty({ description: 'LINE_STAFF | DIRECTOR | CEO' }) @IsString() requiredRole!: string; } export class RejectStepDto { @ApiProperty() @IsString() @MinLength(1) reason!: string; } export class CancelBookingDto { @ApiProperty() @IsString() @MinLength(1) reason!: string; } export class RejectBookingDto { @ApiPropertyOptional({ description: 'Optional reason the customer rejected the price estimate', }) @IsOptional() @IsString() reason?: string; } export class AdjustPriceDto { @ApiPropertyOptional({ description: 'New total price. Omit or send null to clear a previous adjustment.', }) @IsOptional() @IsNumber() @Min(0) amount?: number | null; @ApiPropertyOptional({ description: 'Reason for the adjustment' }) @IsOptional() @IsString() reason?: string; } export class ReviewDocumentDto { @ApiProperty({ description: 'The document fileKey being reviewed' }) @IsString() @MinLength(1) fileKey!: string; @ApiProperty({ enum: ['APPROVED', 'QUERIED'] }) @IsIn(['APPROVED', 'QUERIED']) status!: 'APPROVED' | 'QUERIED'; @ApiPropertyOptional({ description: 'Required when querying a document' }) @IsOptional() @IsString() note?: string; }