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

export class PartyAssignmentFiltersDto {
  @ApiProperty({
    description: "Project ID",
    example: 1,
    required: false,
  })
  @IsOptional()
  @Transform(({ value }) => (value ? parseInt(value) : undefined))
  @IsInt({
    message: validationMessage(messageKey.field_type_validation_error, {
      ":field": "project_id",
      ":type": "integer",
    }),
  })
  project_id?: number

  @ApiProperty({
    description: "Party Type",
    example: "VENDOR",
    enum: PartyTypeCategory,
    required: false,
  })
  @IsOptional()
  @IsEnum(PartyTypeCategory, {
    message: validationMessage(messageKey.field_enum_validation_error, {
      ":field": "party_type",
      ":values": "CONSULTANT, CONTRACTOR, VENDOR",
    }),
  })
  party_type?: PartyTypeCategory
}
