// update-inspection-questions.dto.ts
import {
  IsString,
  IsNotEmpty,
  IsArray,
  ValidateNested,
  ArrayMinSize,
} from "class-validator"
import { Type } from "class-transformer"
import { ApiProperty } from "@nestjs/swagger"
import { validationMessage } from "src/utils/helpers"
import { messageKey } from "src/constants/message-keys"
import { UpdateAnswerOptionDto } from "./update-answer-option.dto"

export class UpdateInspectionQuestionsDto {
  @ApiProperty({ example: "Are seatbelts functional in all seats?" })
  @IsString()
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "question text",
    }),
  })
  question_text: string

  @ApiProperty({
    example: [{ id: 1, option_text: "Yes" }, { option_text: "No" }],
    description: "List of answer options (id is optional for new ones)",
    type: [UpdateAnswerOptionDto],
  })
  @IsArray()
  @ArrayMinSize(1, {
    message: validationMessage(messageKey.field_required, {
      ":field": "answer options",
    }),
  })
  @ValidateNested({ each: true })
  @Type(() => UpdateAnswerOptionDto)
  answer_options: UpdateAnswerOptionDto[]
}
