import {
  IsString,
  IsOptional,
  IsBoolean,
  IsArray,
  IsUUID,
} from 'class-validator';

// ==================== 360 评估模板 DTOs ====================

export class CreateEvaluation360TemplateDto {
  @IsString()
  name: string;

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

  @IsArray()
  dimensions: any[];

  @IsArray()
  relationshipTypes: string[];

  @IsOptional()
  @IsBoolean()
  isDefault?: boolean;

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

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

  @IsOptional()
  scope?: {
    scopeType: 'ALL' | 'DEPARTMENT' | 'LEVEL' | 'CUSTOM';
    departmentIds?: string[];
    minLevel?: number;
    userIds?: string[];
  };
}

export class UpdateEvaluation360TemplateDto {
  @IsOptional()
  @IsString()
  name?: string;

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

  @IsOptional()
  @IsArray()
  dimensions?: any[];

  @IsOptional()
  @IsArray()
  relationshipTypes?: string[];

  @IsOptional()
  @IsBoolean()
  isDefault?: boolean;

  @IsOptional()
  @IsBoolean()
  isActive?: boolean;

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

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

  @IsOptional()
  scope?: {
    scopeType: 'ALL' | 'DEPARTMENT' | 'LEVEL' | 'CUSTOM';
    departmentIds?: string[];
    minLevel?: number;
    userIds?: string[];
  };
}

export class QueryEvaluation360TemplateDto {
  @IsOptional()
  @IsUUID()
  organizationId?: string;
}
