Files
gridpilot.gg/apps/website/lib/builders/view-data/AdminUsersViewDataBuilder.ts
Marc Mintel d97f50ed72
Some checks failed
Contract Testing / contract-tests (pull_request) Failing after 6m4s
Contract Testing / contract-snapshot (pull_request) Has been skipped
view data fixes
2026-01-23 11:59:49 +01:00

31 lines
961 B
TypeScript

import { ViewData } from '@/lib/contracts/view-data/ViewData';
import type { UserListResponse } from '@/lib/types/admin';
import { AdminUsersViewData } from '@/lib/view-data/AdminUsersViewData';
import { ViewDataBuilder } from "../../contracts/builders/ViewDataBuilder";
export class AdminUsersViewDataBuilder implements ViewDataBuilder<any, any> {
build(input: any): any {
return AdminUsersViewDataBuilder.build(input);
}
static build(
public static build(apiDto: UserListResponse): AdminUsersViewData {
const users = apiDto.users.map(u => ({
...u,
joinedAt: new Date(u.joinedAt),
}));
return {
users,
total: apiDto.total,
page: apiDto.page,
limit: apiDto.limit,
totalPages: apiDto.totalPages,
// Pre-computed derived values for template
activeUserCount: users.filter(u => u.status === 'active').length,
adminCount: users.filter(u => u.isSystemAdmin).length,
};
}
}