import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { Type } from 'class-transformer';
import { IsIn, IsInt, IsOptional, IsString, Min } from 'class-validator';

/**
 * 任务完成凭证 DTO：仅允许图片或视频。
 */
export class TaskCompletionMaterialDto {
  @ApiProperty({
    description: '上传资产 ID',
    example: 1,
  })
  @Type(() => Number)
  @IsInt({ message: 'assetId 必须是整数' })
  @Min(1, { message: 'assetId 必须大于 0' })
  assetId!: number;

  @ApiProperty({
    description: '资料类型，仅支持图片或视频',
    enum: ['IMAGE', 'VIDEO'],
    example: 'IMAGE',
  })
  @IsIn(['IMAGE', 'VIDEO'], {
    message: 'type 必须是 IMAGE 或 VIDEO',
  })
  type!: 'IMAGE' | 'VIDEO';

  @ApiProperty({
    description: '资料访问地址',
    example: '/uploads/2026/03/20/20260320123000-proof.webp',
  })
  @IsString({ message: 'url 必须是字符串' })
  url!: string;

  @ApiPropertyOptional({
    description: '资料名称',
    example: '调压完成照片',
  })
  @IsOptional()
  @IsString({ message: 'name 必须是字符串' })
  name?: string;
}
