refactor core presenters
This commit is contained in:
@@ -1,43 +1,30 @@
|
||||
import {
|
||||
ITeamJoinRequestsPresenter,
|
||||
TeamJoinRequestsResultDTO,
|
||||
TeamJoinRequestsViewModel,
|
||||
TeamJoinRequestViewModel,
|
||||
} from '@core/racing/application/presenters/ITeamJoinRequestsPresenter';
|
||||
import type { TeamJoinRequestsOutputPort } from '@core/racing/application/ports/output/TeamJoinRequestsOutputPort';
|
||||
import type { GetTeamJoinRequestsOutputDTO } from '../dtos/GetTeamJoinRequestsOutputDTO';
|
||||
|
||||
export class TeamJoinRequestsPresenter implements ITeamJoinRequestsPresenter {
|
||||
private result: TeamJoinRequestsViewModel | null = null;
|
||||
export class TeamJoinRequestsPresenter {
|
||||
private result: GetTeamJoinRequestsOutputDTO | 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] || '',
|
||||
}));
|
||||
|
||||
async present(outputPort: TeamJoinRequestsOutputPort): Promise<void> {
|
||||
this.result = {
|
||||
requests: requestViewModels,
|
||||
pendingCount: requestViewModels.length,
|
||||
totalCount: requestViewModels.length,
|
||||
requests: outputPort.requests.map(request => ({
|
||||
requestId: request.requestId,
|
||||
driverId: request.driverId,
|
||||
driverName: request.driverName,
|
||||
teamId: request.teamId,
|
||||
status: request.status,
|
||||
requestedAt: request.requestedAt.toISOString(),
|
||||
avatarUrl: request.avatarUrl,
|
||||
})),
|
||||
pendingCount: outputPort.pendingCount,
|
||||
totalCount: outputPort.totalCount,
|
||||
};
|
||||
}
|
||||
|
||||
getViewModel(): TeamJoinRequestsViewModel | null {
|
||||
return this.result;
|
||||
}
|
||||
|
||||
get viewModel(): TeamJoinRequestsViewModel {
|
||||
if (!this.result) throw new Error('Presenter not presented');
|
||||
getViewModel(): GetTeamJoinRequestsOutputDTO | null {
|
||||
return this.result;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user