import type { ViewDataBuilder } from '@/lib/contracts/builders/ViewDataBuilder'; import type { UserListResponseDTO } from '@/lib/types/generated/UserListResponseDTO'; import type { AdminUsersViewData } from '@/lib/view-data/AdminUsersViewData'; export class AdminUsersViewDataBuilder { public static build(apiDto: UserListResponseDTO): AdminUsersViewData { const users = apiDto.users.map(u => ({ id: u.id, email: u.email, displayName: u.displayName, roles: u.roles, status: u.status, isSystemAdmin: u.isSystemAdmin, createdAt: u.createdAt, updatedAt: u.updatedAt, lastLoginAt: u.lastLoginAt, primaryDriverId: u.primaryDriverId, })); return { users, total: apiDto.total, page: apiDto.page, limit: apiDto.limit, totalPages: apiDto.totalPages, activeUserCount: users.filter(u => u.status === 'active').length, adminCount: users.filter(u => u.isSystemAdmin).length, }; } } AdminUsersViewDataBuilder satisfies ViewDataBuilder;