import { ApiPropertyOptional } from '@nestjs/swagger';
import { IsEnum, IsNumber, IsOptional, IsString, Min } from 'class-validator';
import { UserRole, UserStatus } from '../../../common/enum/UserRole.enum';

export class UserFilterDto {
  @ApiPropertyOptional({ example: 'john', description: 'Search by first or last name' })
  @IsOptional()
  @IsString()
  search?: string;

  @ApiPropertyOptional({ enum: UserRole, description: 'Filter by role' })
  @IsOptional()
  @IsEnum(UserRole)
  role?: UserRole;

  @ApiPropertyOptional({ enum: UserStatus, description: 'Filter by user status' })
  @IsOptional()
  @IsEnum(UserStatus)
  status?: UserStatus;

  @ApiPropertyOptional({ example: 1, description: 'Client ID to filter by' })
  @IsOptional()
  @IsNumber()
  clientId?: number;

  @ApiPropertyOptional({ example: 1, description: 'Page number for pagination' })
  @IsOptional()
  @IsNumber()
  @Min(1)
  page?: number;

  @ApiPropertyOptional({ example: 10, description: 'Number of records per page' })
  @IsOptional()
  @IsNumber()
  @Min(1)
  limit?: number;
}
