/**
 * 表单版本审核 DTOs
 * 符合 API 文档规范 - 版本审核管理
 */

import {
  IsString,
  IsOptional,
  IsBoolean,
  IsInt,
  IsEnum,
  IsUUID,
  Min,
} from 'class-validator';
import { Type } from 'class-transformer';

// ============================================
// 提交审核
// ============================================

export class SubmitForReviewDto {
  @IsOptional()
  @IsString()
  comment?: string;
}

// ============================================
// 审核版本（通过/驳回）
// ============================================

export enum ReviewAction {
  APPROVE = 'approve',
  REJECT = 'reject',
}

export class ReviewVersionDto {
  @IsEnum(ReviewAction)
  action: ReviewAction;

  @IsOptional()
  @IsString()
  comment?: string;

  @IsOptional()
  @IsBoolean()
  setAsDefault?: boolean;
}

// ============================================
// 查询待审核列表
// ============================================

export class QueryPendingReviewDto {
  @IsOptional()
  @IsString()
  category?: string;

  @IsOptional()
  @IsUUID()
  submittedBy?: string;

  @IsOptional()
  @Type(() => Number)
  @IsInt()
  @Min(1)
  page?: number;

  @IsOptional()
  @Type(() => Number)
  @IsInt()
  @Min(1)
  limit?: number;
}

// ============================================
// 查询我提交的审核
// ============================================

export enum ReviewSubmissionStatus {
  PENDING = 'pending',
  APPROVED = 'approved',
  REJECTED = 'rejected',
}

export class QueryMySubmissionsDto {
  @IsOptional()
  @IsEnum(ReviewSubmissionStatus)
  status?: ReviewSubmissionStatus;

  @IsOptional()
  @Type(() => Number)
  @IsInt()
  @Min(1)
  page?: number;

  @IsOptional()
  @Type(() => Number)
  @IsInt()
  @Min(1)
  limit?: number;
}
