'use client'; import type { UserDto, DashboardStats, UserListResponse } from '@/lib/api/admin/AdminApiClient'; import { AdminUserViewModel, DashboardStatsViewModel, UserListViewModel } from './AdminUserViewModel'; /** * AdminViewModelPresenter * * Presenter layer for transforming API DTOs to ViewModels. * Runs in client code only ('use client'). * Deterministic, side-effect free transformations. */ export class AdminViewModelPresenter { /** * Map a single user DTO to a View Model */ static mapUser(apiDto: UserDto): AdminUserViewModel { return new AdminUserViewModel(apiDto); } /** * Map an array of user DTOs to View Models */ static mapUsers(apiDtos: UserDto[]): AdminUserViewModel[] { return apiDtos.map(apiDto => this.mapUser(apiDto)); } /** * Map dashboard stats DTO to View Model */ static mapDashboardStats(apiDto: DashboardStats): DashboardStatsViewModel { return new DashboardStatsViewModel(apiDto); } /** * Map user list response to View Model */ static mapUserList(viewData: UserListResponse): UserListViewModel { return new UserListViewModel({ users: viewData.users, total: viewData.total, page: viewData.page, limit: viewData.limit, totalPages: viewData.totalPages, }); } }