28 lines
1000 B
TypeScript
28 lines
1000 B
TypeScript
import type { ViewDataBuilder } from '../../contracts/builders/ViewDataBuilder';
|
|
import type { DashboardStatsResponseDTO } from '../../types/generated/DashboardStatsResponseDTO';
|
|
import type { AdminDashboardViewData } from '../../view-data/AdminDashboardViewData';
|
|
|
|
export class AdminDashboardViewDataBuilder {
|
|
/**
|
|
* Transform API DTO to ViewData
|
|
*
|
|
* @param apiDto - The DTO from the service
|
|
* @returns ViewData for the admin dashboard
|
|
*/
|
|
public static build(apiDto: DashboardStatsResponseDTO): AdminDashboardViewData {
|
|
return {
|
|
stats: {
|
|
totalUsers: apiDto.totalUsers,
|
|
activeUsers: apiDto.activeUsers,
|
|
suspendedUsers: apiDto.suspendedUsers,
|
|
deletedUsers: apiDto.deletedUsers,
|
|
systemAdmins: apiDto.systemAdmins,
|
|
recentLogins: apiDto.recentLogins,
|
|
newUsersToday: apiDto.newUsersToday,
|
|
},
|
|
};
|
|
}
|
|
}
|
|
|
|
AdminDashboardViewDataBuilder satisfies ViewDataBuilder<DashboardStatsResponseDTO, AdminDashboardViewData>;
|