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

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

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

  @IsUUID()
  cycleId: string;

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

  @IsOptional()
  @IsInt()
  @Min(0)
  seq?: number;

  // organizationId 已移除：组织通过 cycle 派生

  @IsOptional()
  @IsArray()
  @IsUUID('4', { each: true })
  assigneeIds?: string[];
}

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

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

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

  @IsOptional()
  @IsInt()
  @Min(0)
  seq?: number;
}

export class AssignStrategicObjectiveDto {
  @IsArray()
  @IsUUID('4', { each: true })
  assigneeIds: string[];
}

export class QueryStrategicObjectiveDto {
  @IsOptional()
  @IsUUID()
  cycleId?: string;

  // organizationId 已移除：组织通过 cycle 派生

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

  @IsOptional()
  @Type(() => Number)
  @IsInt()
  @Min(1)
  @Max(100)
  pageSize?: number = 20;
}
