This commit is contained in:
2025-12-16 15:42:38 +01:00
parent 29410708c8
commit 362894d1a5
147 changed files with 780 additions and 375 deletions

View File

@@ -0,0 +1,43 @@
import {
ITeamJoinRequestsPresenter,
TeamJoinRequestsResultDTO,
TeamJoinRequestsViewModel,
TeamJoinRequestViewModel,
} from '@core/racing/application/presenters/ITeamJoinRequestsPresenter';
export class TeamJoinRequestsPresenter implements ITeamJoinRequestsPresenter {
private result: TeamJoinRequestsViewModel | null = null;
reset() {
this.result = null;
}
present(dto: TeamJoinRequestsResultDTO) {
const { requests, driverNames, avatarUrls } = dto;
const requestViewModels: TeamJoinRequestViewModel[] = requests.map((request) => ({
requestId: request.id,
driverId: request.driverId,
driverName: driverNames[request.driverId] || 'Unknown',
teamId: request.teamId,
status: 'pending' as const,
requestedAt: request.requestedAt.toISOString(),
avatarUrl: avatarUrls[request.driverId] || '',
}));
this.result = {
requests: requestViewModels,
pendingCount: requestViewModels.length,
totalCount: requestViewModels.length,
};
}
getViewModel(): TeamJoinRequestsViewModel | null {
return this.result;
}
get viewModel(): TeamJoinRequestsViewModel {
if (!this.result) throw new Error('Presenter not presented');
return this.result;
}
}