import { ApiProperty } from "@nestjs/swagger"
import { IsNotEmpty, IsString, IsEnum } from "class-validator"
import { validationMessage } from "../../../utils/helpers"
import { messageKey } from "../../../constants/message-keys"
import { PartyTypeCategory } from "../entities/party-type.entity"

export class CreatePartyTypeDto {
  @ApiProperty({
    description: "Party Type Name",
    example: "Technical Consultant",
  })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "type_name",
    }),
  })
  @IsString({
    message: validationMessage(messageKey.field_type_validation_error, {
      ":field": "type_name",
      ":type": "string",
    }),
  })
  type_name: string

  @ApiProperty({
    description: "Party Type Category",
    example: "CONSULTANT",
    enum: PartyTypeCategory,
  })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "type_category",
    }),
  })
  @IsEnum(PartyTypeCategory, {
    message: validationMessage(messageKey.field_enum_validation_error, {
      ":field": "type_category",
      ":values": "CONSULTANT, CONTRACTOR, VENDOR",
    }),
  })
  type_category: PartyTypeCategory
}
