import { ApiPropertyOptional } from '@nestjs/swagger';
import { IsIn, IsOptional, IsString, IsUUID } from 'class-validator';

/**
 * Filtros del listado. Todos opcionales. Paginado.
 */
export class ListarRendicionesDto {
  @ApiPropertyOptional() @IsOptional() @IsUUID() empleado_id?: string;

  @ApiPropertyOptional({
    description: 'BORRADOR | PENDIENTE_APROBACION | ADELANTO_PAGADO | SIN_ADELANTO | RENDIDA | CERRADA | ANULADA',
  })
  @IsOptional()
  @IsIn([
    'BORRADOR',
    'PENDIENTE_APROBACION',
    'ADELANTO_PAGADO',
    'SIN_ADELANTO',
    'RENDIDA',
    'CERRADA',
    'ANULADA',
  ])
  estado?: string;

  @ApiPropertyOptional({ description: 'YYYY-MM-DD' })
  @IsOptional()
  @IsString()
  fecha_desde?: string;

  @ApiPropertyOptional({ description: 'YYYY-MM-DD' })
  @IsOptional()
  @IsString()
  fecha_hasta?: string;

  @ApiPropertyOptional({ description: 'búsqueda por número o concepto' })
  @IsOptional()
  @IsString()
  search?: string;

  @ApiPropertyOptional({
    description: 'Solo pendientes con más de N días sin rendir (usar con estado ADELANTO_PAGADO/SIN_ADELANTO)',
  })
  @IsOptional()
  @IsString()
  dias_sin_rendir_min?: string;

  @ApiPropertyOptional() @IsOptional() @IsString() page?: string;
  @ApiPropertyOptional() @IsOptional() @IsString() limit?: string;
}
