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 { 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, }; } }