import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; import { Type } from "class-transformer"; import { ArrayMinSize, IsArray, IsOptional, IsString, IsUUID, Length, ValidateNested } from "class-validator"; export class BulkCancelEimsItemDto { @ApiProperty({ description: "Invoice ID to cancel." }) @IsUUID() invoiceId!: string; @ApiProperty({ description: 'Numeric reason code, e.g. "1" (Duplicate), "6" (Calculation Error).', example: "1", }) @IsString() @Length(1, 8) reasonCode!: string; @ApiPropertyOptional({ description: "Free-text cancellation note.", example: "Duplicate submission" }) @IsOptional() @IsString() @Length(0, 500) remark?: string; } /** `POST invoices/eims/bulk-cancel` body — see `EimsCancellationService.cancelBulkWithEims`. */ export class BulkCancelEimsRegistrationDto { @ApiProperty({ type: [BulkCancelEimsItemDto] }) @IsArray() @ArrayMinSize(1) @ValidateNested({ each: true }) @Type(() => BulkCancelEimsItemDto) items!: BulkCancelEimsItemDto[]; }