import { ApiPropertyOptional } from "@nestjs/swagger";
import { Type } from "class-transformer";
import {
  IsDateString,
  IsEnum,
  IsInt,
  IsOptional,
  IsString,
  Min,
} from "class-validator";
import { EstadoOT } from "../entities/orden-trabajo.entity";

export class SearchOtDto {
  @ApiPropertyOptional({ description: "Filtrar por estado", enum: EstadoOT })
  @IsOptional()
  @IsEnum(EstadoOT)
  estado?: EstadoOT;

  @ApiPropertyOptional({ description: "Filtrar por tarjeta de cliente" })
  @IsOptional()
  @IsString()
  clienteTarjeta?: string;

  @ApiPropertyOptional({ description: "Filtrar por placa" })
  @IsOptional()
  @IsString()
  placa?: string;

  @ApiPropertyOptional({ description: "Fecha desde (ISO)" })
  @IsOptional()
  @IsDateString()
  fechaDesde?: string;

  @ApiPropertyOptional({ description: "Fecha hasta (ISO)" })
  @IsOptional()
  @IsDateString()
  fechaHasta?: string;

  @ApiPropertyOptional({ description: "Página", default: 1 })
  @IsOptional()
  @Type(() => Number)
  @IsInt()
  @Min(1)
  page?: number = 1;

  @ApiPropertyOptional({ description: "Límite", default: 20 })
  @IsOptional()
  @Type(() => Number)
  @IsInt()
  @Min(1)
  limit?: number = 20;
}
