import {
  IsOptional,
  IsString,
  IsDateString,
  IsEnum,
  IsInt,
  Min,
} from "class-validator"
import { Transform } from "class-transformer"
import { SubscriptionStatus } from "../entities/company-subscription.entity"

export class SubscriptionHistoryFiltersDto {
  @IsOptional()
  @IsString()
  search?: string

  @IsOptional()
  @Transform(({ value }) => parseInt(value))
  @IsInt()
  @Min(1)
  company_id?: number

  @IsOptional()
  @IsDateString()
  from_date?: string

  @IsOptional()
  @IsDateString()
  to_date?: string

  @IsOptional()
  @IsEnum(SubscriptionStatus)
  status?: SubscriptionStatus

  @IsOptional()
  @Transform(({ value }) => parseInt(value))
  @IsInt()
  @Min(1)
  page?: number = 1

  @IsOptional()
  @Transform(({ value }) => parseInt(value))
  @IsInt()
  @Min(1)
  limit?: number = 10

  @IsOptional()
  @IsString()
  column_name?: string

  @IsOptional()
  @IsString()
  order?: string = "DESC"

  @IsOptional()
  @Transform(({ value }) => parseInt(value))
  @IsInt()
  @Min(0)
  skip?: number

  @IsOptional()
  @Transform(({ value }) => parseInt(value))
  @IsInt()
  @Min(1)
  take?: number
}
