import { ApiPropertyOptional } from '@nestjs/swagger';
import { IsEnum, IsInt, IsOptional, IsString, Min } from 'class-validator';
import { RoleType } from '../entities/role.entity';

export class FilterRoleDto {
  @ApiPropertyOptional({ example: 'Manager', description: 'Search by name' })
  @IsOptional()
  @IsString()
  name?: string;

  @ApiPropertyOptional({
    enum: RoleType,
    example: RoleType.CLIENT_ROLE,
    description: `Filter by role type (${RoleType.ADMIN_ROLE} , ${RoleType.CLIENT_ROLE})`,
  })
  @IsOptional()
  @IsEnum(RoleType)
  roleType?: RoleType;

  @ApiPropertyOptional({ example: 1, description: 'Filter by client ID' })
  @IsOptional()
  @IsInt()
  @Min(1)
  clientId?: number;

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

  @ApiPropertyOptional({ example: 10, description: 'Items per page for pagination' })
  @IsOptional()
  @IsInt()
  @Min(1)
  limit?: number;
}
