import {
  IsOptional,
  IsInt,
  IsDateString,
  IsString,
  IsNumber,
  IsArray,
  ValidateNested,
} from 'class-validator';
import { Type } from 'class-transformer';

export class CreateEstimateItemDto {
  @IsString()
  description: string;

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

  @IsOptional()
  @IsInt()
  quantity?: number;

  @IsNumber()
  unitPrice: number;

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

  @IsOptional()
  @IsInt()
  sortOrder?: number;
}

export class CreateEstimateDto {
  @IsOptional()
  @IsInt()
  projectId?: number;

  @IsOptional()
  @IsInt()
  clientId?: number;

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

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

  @IsDateString()
  issueDate: string;

  @IsOptional()
  @IsInt()
  validDays?: number;

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

  @IsOptional()
  @IsInt()
  templateId?: number;

  @IsArray()
  @ValidateNested({ each: true })
  @Type(() => CreateEstimateItemDto)
  items: CreateEstimateItemDto[];
}
