'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(dto: UserDto): AdminUserViewModel { return new AdminUserViewModel(dto); } /** * Map an array of user DTOs to View Models */ static mapUsers(dtos: UserDto[]): AdminUserViewModel[] { return dtos.map(dto => this.mapUser(dto)); } /** * Map dashboard stats DTO to View Model */ static mapDashboardStats(dto: DashboardStats): DashboardStatsViewModel { return new DashboardStatsViewModel(dto); } /** * Map user list response to View Model */ static mapUserList(response: UserListResponse): UserListViewModel { return new UserListViewModel({ users: response.users, total: response.total, page: response.page, limit: response.limit, totalPages: response.totalPages, }); } }