34 lines
887 B
TypeScript
34 lines
887 B
TypeScript
import { IAllTeamsPresenter, AllTeamsResultDTO, AllTeamsViewModel, TeamListItemViewModel } from '@gridpilot/racing/application/presenters/IAllTeamsPresenter';
|
|
|
|
export class AllTeamsPresenter implements IAllTeamsPresenter {
|
|
private result: AllTeamsViewModel | null = null;
|
|
|
|
reset() {
|
|
this.result = null;
|
|
}
|
|
|
|
present(dto: AllTeamsResultDTO) {
|
|
const teams: TeamListItemViewModel[] = dto.teams.map(team => ({
|
|
id: team.id,
|
|
name: team.name,
|
|
tag: team.tag,
|
|
description: team.description,
|
|
memberCount: team.memberCount,
|
|
leagues: team.leagues || [],
|
|
}));
|
|
|
|
this.result = {
|
|
teams,
|
|
totalCount: teams.length,
|
|
};
|
|
}
|
|
|
|
getViewModel(): AllTeamsViewModel | null {
|
|
return this.result;
|
|
}
|
|
|
|
get viewModel(): AllTeamsViewModel {
|
|
if (!this.result) throw new Error('Presenter not presented');
|
|
return this.result;
|
|
}
|
|
} |