import { ApiProperty } from "@nestjs/swagger"
import { IsNotEmpty, IsOptional, IsString, IsEnum } from "class-validator"
import { validationMessage } from "../../../utils/helpers"
import { messageKey } from "../../../constants/message-keys"
import { LeaveRequestStatus } from "../entities/leave-request.entity"

export class UpdateLeaveRequestStatusDto {
  @ApiProperty({
    description: "Leave Request Status",
    example: "approved",
    enum: LeaveRequestStatus,
  })
  @IsNotEmpty({
    message: validationMessage(messageKey.field_required, {
      ":field": "status",
    }),
  })
  @IsEnum(LeaveRequestStatus, {
    message: validationMessage(messageKey.field_enum_validation_error, {
      ":field": "status",
      ":values": Object.values(LeaveRequestStatus).join(", "),
    }),
  })
  status: LeaveRequestStatus

  @ApiProperty({
    description: "Comments",
    example: "Approved for medical reasons",
    required: false,
  })
  @IsOptional()
  @IsString({
    message: validationMessage(messageKey.field_type_validation_error, {
      ":field": "comments",
      ":type": "string",
    }),
  })
  comments?: string
}
