view data fixes
This commit is contained in:
@@ -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>;
|
||||
|
||||
Reference in New Issue
Block a user