import { ApiProperty } from "@nestjs/swagger"
import { IsOptional, IsInt } from "class-validator"
import { validationMessage } from "../../../utils/helpers"
import { messageKey } from "../../../constants/message-keys"

export class ProjectAnalyticsFiltersDto {
  @ApiProperty({
    description: "Starting month (1-12)",
    example: 3,
    required: false,
  })
  @IsOptional()
  @IsInt({
    message: validationMessage(messageKey.field_type_validation_error, {
      ":field": "from_month",
      ":type": "integer",
    }),
  })
  from_month?: number

  @ApiProperty({
    description: "Starting year",
    example: 2025,
    required: false,
  })
  @IsOptional()
  @IsInt({
    message: validationMessage(messageKey.field_type_validation_error, {
      ":field": "from_year",
      ":type": "integer",
    }),
  })
  from_year?: number

  @ApiProperty({
    description: "Ending month (1-12)",
    example: 3,
    required: false,
  })
  @IsOptional()
  @IsInt({
    message: validationMessage(messageKey.field_type_validation_error, {
      ":field": "to_month",
      ":type": "integer",
    }),
  })
  to_month?: number

  @ApiProperty({
    description: "Ending year",
    example: 2025,
    required: false,
  })
  @IsOptional()
  @IsInt({
    message: validationMessage(messageKey.field_type_validation_error, {
      ":field": "to_year",
      ":type": "integer",
    }),
  })
  to_year?: number

  @ApiProperty({
    description: "Company ID",
    example: 1,
    required: false,
  })
  @IsOptional()
  @IsInt({
    message: validationMessage(messageKey.field_type_validation_error, {
      ":field": "company_id",
      ":type": "integer",
    }),
  })
  company_id?: number
}
