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

export class DeletePartyAssignmentDto {
  @ApiProperty({
    description: "Project ID",
    example: 1,
  })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "project_id",
    }),
  })
  @IsInt({
    message: validationMessage(messageKey.field_type_validation_error, {
      ":field": "project_id",
      ":type": "integer",
    }),
  })
  project_id: number

  @ApiProperty({
    description: "Party ID",
    example: 1,
  })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "party_id",
    }),
  })
  @IsInt({
    message: validationMessage(messageKey.field_type_validation_error, {
      ":field": "party_id",
      ":type": "integer",
    }),
  })
  party_id: number

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