import { ApiPropertyOptional } from '@nestjs/swagger';
import { IsDateString, IsIn, IsInt, IsOptional, IsString, IsUUID, Min } from 'class-validator';
import { Type } from 'class-transformer';
import { ESTADO_VIAJE } from '../viajes.constants';

export class ListViajesDto {
  @ApiPropertyOptional() @IsOptional() @IsDateString()
  fecha_desde?: string;

  @ApiPropertyOptional() @IsOptional() @IsDateString()
  fecha_hasta?: string;

  @ApiPropertyOptional() @IsOptional() @IsUUID()
  vendedor_id?: string;

  @ApiPropertyOptional() @IsOptional() @IsUUID()
  vehiculo_id?: string;

  @ApiPropertyOptional() @IsOptional() @IsString()
  zona?: string;

  @ApiPropertyOptional({ description: 'Texto para buscar en número o descripción' })
  @IsOptional() @IsString()
  search?: string;

  @ApiPropertyOptional({ enum: Object.values(ESTADO_VIAJE) })
  @IsOptional() @IsIn(Object.values(ESTADO_VIAJE))
  estado?: string;

  @ApiPropertyOptional() @IsOptional() @Type(() => Number) @IsInt() @Min(1)
  page?: number;

  @ApiPropertyOptional() @IsOptional() @Type(() => Number) @IsInt() @Min(1)
  limit?: number;
}
