import { ApiPropertyOptional } from "@nestjs/swagger"
import { Transform } from "class-transformer"
import { IsDateString, IsOptional } from "class-validator"

const emptyToUndefined = ({ value }: { value: unknown }) =>
  value === "" || value === null || value === undefined ? undefined : value

export class GetDashboardStatsDto {
  @ApiPropertyOptional({
    description:
      "Start date for filtering (ISO 8601 format). Omit for counts across all time.",
    example: "2023-01-01T00:00:00.000Z",
  })
  @Transform(emptyToUndefined)
  @IsOptional()
  @IsDateString()
  startDate?: string

  @ApiPropertyOptional({
    description:
      "End date for filtering (ISO 8601 format). Omit for counts across all time.",
    example: "2023-12-31T23:59:59.999Z",
  })
  @Transform(emptyToUndefined)
  @IsOptional()
  @IsDateString()
  endDate?: string
}
