32 lines
1.0 KiB
TypeScript
32 lines
1.0 KiB
TypeScript
import { ViewData } from '@/lib/contracts/view-data/ViewData';
|
|
import type { DashboardStats } from '@/lib/types/admin';
|
|
import type { AdminDashboardViewData } from '@/lib/view-data/AdminDashboardViewData';
|
|
|
|
/**
|
|
* AdminDashboardViewDataBuilder
|
|
*
|
|
* Transforms DashboardStats API DTO into AdminDashboardViewData for server-side rendering.
|
|
* Deterministic; side-effect free; no HTTP calls.
|
|
*/
|
|
import { ViewDataBuilder } from "../../contracts/builders/ViewDataBuilder";
|
|
|
|
export class AdminDashboardViewDataBuilder implements ViewDataBuilder<any, any> {
|
|
build(input: any): any {
|
|
return AdminDashboardViewDataBuilder.build(input);
|
|
}
|
|
|
|
static build(
|
|
static build(apiDto: DashboardStats): AdminDashboardViewData {
|
|
return {
|
|
stats: {
|
|
totalUsers: apiDto.totalUsers,
|
|
activeUsers: apiDto.activeUsers,
|
|
suspendedUsers: apiDto.suspendedUsers,
|
|
deletedUsers: apiDto.deletedUsers,
|
|
systemAdmins: apiDto.systemAdmins,
|
|
recentLogins: apiDto.recentLogins,
|
|
newUsersToday: apiDto.newUsersToday,
|
|
},
|
|
};
|
|
}
|
|
} |