presenter refactoring

This commit is contained in:
2025-12-20 17:06:11 +01:00
parent 92be9d2e1b
commit e9d6f90bb2
109 changed files with 4159 additions and 1283 deletions

View File

@@ -22,7 +22,8 @@ export class TeamController {
@ApiOperation({ summary: 'Get all teams' })
@ApiResponse({ status: 200, description: 'List of all teams', type: GetAllTeamsOutputDTO })
async getAll(): Promise<GetAllTeamsOutputDTO> {
return this.teamService.getAll();
const presenter = await this.teamService.getAll();
return presenter.viewModel;
}
@Get(':teamId')
@@ -31,21 +32,24 @@ export class TeamController {
@ApiResponse({ status: 404, description: 'Team not found' })
async getDetails(@Param('teamId') teamId: string, @Req() req: Request): Promise<GetTeamDetailsOutputDTO | null> {
const userId = req['user']?.userId;
return this.teamService.getDetails(teamId, userId);
const presenter = await this.teamService.getDetails(teamId, userId);
return presenter.getViewModel();
}
@Get(':teamId/members')
@ApiOperation({ summary: 'Get team members' })
@ApiResponse({ status: 200, description: 'Team members', type: GetTeamMembersOutputDTO })
async getMembers(@Param('teamId') teamId: string): Promise<GetTeamMembersOutputDTO> {
return this.teamService.getMembers(teamId);
const presenter = await this.teamService.getMembers(teamId);
return presenter.getViewModel()!;
}
@Get(':teamId/join-requests')
@ApiOperation({ summary: 'Get team join requests' })
@ApiResponse({ status: 200, description: 'Team join requests', type: GetTeamJoinRequestsOutputDTO })
async getJoinRequests(@Param('teamId') teamId: string): Promise<GetTeamJoinRequestsOutputDTO> {
return this.teamService.getJoinRequests(teamId);
const presenter = await this.teamService.getJoinRequests(teamId);
return presenter.getViewModel()!;
}
@Post()
@@ -53,7 +57,8 @@ export class TeamController {
@ApiResponse({ status: 201, description: 'Team created', type: CreateTeamOutputDTO })
async create(@Body() input: CreateTeamInputDTO, @Req() req: Request): Promise<CreateTeamOutputDTO> {
const userId = req['user']?.userId;
return this.teamService.create(input, userId);
const presenter = await this.teamService.create(input, userId);
return presenter.viewModel;
}
@Patch(':teamId')
@@ -61,7 +66,8 @@ export class TeamController {
@ApiResponse({ status: 200, description: 'Team updated', type: UpdateTeamOutputDTO })
async update(@Param('teamId') teamId: string, @Body() input: UpdateTeamInputDTO, @Req() req: Request): Promise<UpdateTeamOutputDTO> {
const userId = req['user']?.userId;
return this.teamService.update(teamId, input, userId);
const presenter = await this.teamService.update(teamId, input, userId);
return presenter.viewModel;
}
@Get('driver/:driverId')
@@ -69,14 +75,16 @@ export class TeamController {
@ApiResponse({ status: 200, description: 'Driver\'s team', type: GetDriverTeamOutputDTO })
@ApiResponse({ status: 404, description: 'Team not found' })
async getDriverTeam(@Param('driverId') driverId: string): Promise<GetDriverTeamOutputDTO | null> {
return this.teamService.getDriverTeam(driverId);
const presenter = await this.teamService.getDriverTeam(driverId);
return presenter.getViewModel();
}
@Get(':teamId/members/:driverId')
@ApiOperation({ summary: 'Get team membership for a driver' })
@ApiResponse({ status: 200, description: 'Team membership', type: GetTeamMembershipOutputDTO })
@ApiResponse({ status: 404, description: 'Membership not found' })
async getMembership(@Param('teamId') teamId: string, @Param('driverId') driverId: string): Promise<GetTeamMembershipOutputDTO | null> {
return this.teamService.getMembership(teamId, driverId);
const presenter = await this.teamService.getMembership(teamId, driverId);
return presenter.viewModel;
}
}