add staff user list endpoint

This commit is contained in:
Marshal
2026-08-03 12:32:10 +00:00
parent c12108d953
commit 106b07a02b
4 changed files with 133 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
import { ApiPropertyOptional } from '@nestjs/swagger';
import { EUserStatus, EUserType } from '@tria-plc/api-common/utils/enums/user.enum';
import { Transform, TransformFnParams } from 'class-transformer';
import { IsBoolean, IsEnum, IsIn, IsOptional } from 'class-validator';
import { PaginationQueryDto } from '../../../common/dto/pagination-query.dto';
/** Query-string booleans arrive as strings; implicit conversion is off app-wide. */
const toOptionalBoolean = ({ value }: TransformFnParams): boolean | undefined =>
value === undefined || value === null || value === ''
? undefined
: value === true || value === 'true';
export class ListUsersQueryDto extends PaginationQueryDto {
@ApiPropertyOptional({ enum: EUserType })
@IsOptional()
@IsEnum(EUserType)
userType?: EUserType;
@ApiPropertyOptional({ enum: EUserStatus })
@IsOptional()
@IsEnum(EUserStatus)
userStatus?: EUserStatus;
@ApiPropertyOptional({ description: 'Filter by active flag.' })
@IsOptional()
@Transform(toOptionalBoolean)
@IsBoolean()
isActive?: boolean;
@ApiPropertyOptional({
enum: ['username', 'email', 'createdAt'],
default: 'username',
})
@IsOptional()
@IsIn(['username', 'email', 'createdAt'])
sortBy?: string;
}