admin area
This commit is contained in:
80
apps/api/src/domain/admin/dto/DashboardStatsResponseDto.ts
Normal file
80
apps/api/src/domain/admin/dto/DashboardStatsResponseDto.ts
Normal file
@@ -0,0 +1,80 @@
|
||||
import { ApiProperty } from '@nestjs/swagger';
|
||||
|
||||
class UserGrowthDto {
|
||||
@ApiProperty({ description: 'Label for the time period' })
|
||||
label!: string;
|
||||
|
||||
@ApiProperty({ description: 'Number of new users' })
|
||||
value!: number;
|
||||
|
||||
@ApiProperty({ description: 'Color class for the bar' })
|
||||
color!: string;
|
||||
}
|
||||
|
||||
class RoleDistributionDto {
|
||||
@ApiProperty({ description: 'Role name' })
|
||||
label!: string;
|
||||
|
||||
@ApiProperty({ description: 'Number of users with this role' })
|
||||
value!: number;
|
||||
|
||||
@ApiProperty({ description: 'Color class for the bar' })
|
||||
color!: string;
|
||||
}
|
||||
|
||||
class StatusDistributionDto {
|
||||
@ApiProperty({ description: 'Number of active users' })
|
||||
active!: number;
|
||||
|
||||
@ApiProperty({ description: 'Number of suspended users' })
|
||||
suspended!: number;
|
||||
|
||||
@ApiProperty({ description: 'Number of deleted users' })
|
||||
deleted!: number;
|
||||
}
|
||||
|
||||
class ActivityTimelineDto {
|
||||
@ApiProperty({ description: 'Date label' })
|
||||
date!: string;
|
||||
|
||||
@ApiProperty({ description: 'Number of new users' })
|
||||
newUsers!: number;
|
||||
|
||||
@ApiProperty({ description: 'Number of logins' })
|
||||
logins!: number;
|
||||
}
|
||||
|
||||
export class DashboardStatsResponseDto {
|
||||
@ApiProperty({ description: 'Total number of users' })
|
||||
totalUsers!: number;
|
||||
|
||||
@ApiProperty({ description: 'Number of active users' })
|
||||
activeUsers!: number;
|
||||
|
||||
@ApiProperty({ description: 'Number of suspended users' })
|
||||
suspendedUsers!: number;
|
||||
|
||||
@ApiProperty({ description: 'Number of deleted users' })
|
||||
deletedUsers!: number;
|
||||
|
||||
@ApiProperty({ description: 'Number of system admins' })
|
||||
systemAdmins!: number;
|
||||
|
||||
@ApiProperty({ description: 'Number of recent logins (last 24h)' })
|
||||
recentLogins!: number;
|
||||
|
||||
@ApiProperty({ description: 'Number of new users today' })
|
||||
newUsersToday!: number;
|
||||
|
||||
@ApiProperty({ type: [UserGrowthDto], description: 'User growth over last 7 days' })
|
||||
userGrowth!: UserGrowthDto[];
|
||||
|
||||
@ApiProperty({ type: [RoleDistributionDto], description: 'Distribution of user roles' })
|
||||
roleDistribution!: RoleDistributionDto[];
|
||||
|
||||
@ApiProperty({ type: StatusDistributionDto, description: 'Distribution of user statuses' })
|
||||
statusDistribution!: StatusDistributionDto;
|
||||
|
||||
@ApiProperty({ type: [ActivityTimelineDto], description: 'Activity timeline for last 7 days' })
|
||||
activityTimeline!: ActivityTimelineDto[];
|
||||
}
|
||||
Reference in New Issue
Block a user