view data fixes

This commit is contained in:
2026-01-24 00:52:27 +01:00
parent 62e8b768ce
commit ae59df61eb
321 changed files with 1157 additions and 2234 deletions

View File

@@ -1,19 +1,22 @@
import { ViewData } from '@/lib/contracts/view-data/ViewData';
import type { UserListResponse } from '@/lib/types/admin';
import { AdminUsersViewData } from '@/lib/view-data/AdminUsersViewData';
'use client';
import { ViewDataBuilder } from "../../contracts/builders/ViewDataBuilder";
import type { UserListResponseDTO } from '@/lib/types/generated/UserListResponseDTO';
import type { AdminUsersViewData } from '@/lib/view-data/AdminUsersViewData';
import type { ViewDataBuilder } from '@/lib/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 {
export class AdminUsersViewDataBuilder {
public static build(apiDto: UserListResponseDTO): AdminUsersViewData {
const users = apiDto.users.map(u => ({
...u,
joinedAt: new Date(u.joinedAt),
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 {
@@ -22,9 +25,10 @@ export class AdminUsersViewDataBuilder implements ViewDataBuilder<any, any> {
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,
};
}
}
AdminUsersViewDataBuilder satisfies ViewDataBuilder<UserListResponseDTO, AdminUsersViewData>;