import { ApiProperty } from '@nestjs/swagger';
import { Type } from 'class-transformer';
import { ArrayMinSize, IsArray, IsInt, Min, ValidateNested } from 'class-validator';
import { TaskCompletionMaterialDto } from './task-completion-material.dto.js';

/**
 * 完成任务 DTO。
 */
export class CompleteTaskDto {
  @ApiProperty({ description: '任务 ID', example: 1 })
  @Type(() => Number)
  @IsInt({ message: 'taskId 必须是整数' })
  @Min(1, { message: 'taskId 必须大于 0' })
  taskId!: number;

  @ApiProperty({
    type: [TaskCompletionMaterialDto],
    description: '完成任务时上传的图片/视频凭证',
  })
  @IsArray({ message: 'completionMaterials 必须是数组' })
  @ArrayMinSize(1, { message: 'completionMaterials 至少上传 1 项' })
  @ValidateNested({ each: true })
  @Type(() => TaskCompletionMaterialDto)
  completionMaterials!: TaskCompletionMaterialDto[];
}
