import { ApiProperty } from '@nestjs/swagger';
import { Transform, Type } from 'class-transformer';
import { IsBoolean, IsInt, IsOptional, IsString, IsUUID, Min } from 'class-validator';

export class WorklistQueryDto {
  @ApiProperty({ required: false })
  @IsOptional()
  @IsUUID()
  cliente_id?: string;

  @ApiProperty({ required: false })
  @IsOptional()
  @IsUUID()
  cobrador_id?: string;

  @ApiProperty({
    required: false,
    description: 'Solo cuentas asignadas al cobrador del usuario actual',
  })
  @IsOptional()
  @Transform(({ value }) => value === 'true' || value === true)
  @IsBoolean()
  solo_mis_clientes?: boolean;

  @ApiProperty({ required: false, description: 'Filtrar por días mínimos de mora' })
  @IsOptional()
  @Type(() => Number)
  @IsInt()
  @Min(0)
  min_dias_mora?: number;

  @ApiProperty({ required: false })
  @IsOptional()
  @IsString()
  search?: string;

  @ApiProperty({ required: false, default: 1 })
  @IsOptional()
  @Type(() => Number)
  @IsInt()
  @Min(1)
  page?: number;

  @ApiProperty({ required: false, default: 50 })
  @IsOptional()
  @Type(() => Number)
  @IsInt()
  @Min(1)
  page_size?: number;
}
