import { Controller, Get, Query, Req, UnauthorizedException, Inject } from '@nestjs/common'; import { ApiTags, ApiResponse, ApiOperation, ApiQuery } from '@nestjs/swagger'; import { DashboardService } from './DashboardService'; import { DashboardOverviewDTO } from './dtos/DashboardOverviewDTO'; type AuthenticatedRequest = { user?: { userId: string }; }; @ApiTags('dashboard') @Controller('dashboard') export class DashboardController { constructor(@Inject(DashboardService) private readonly dashboardService: DashboardService) {} @Get('overview') @ApiOperation({ summary: 'Get dashboard overview' }) @ApiQuery({ name: 'driverId', description: 'Driver ID' }) @ApiResponse({ status: 200, description: 'Dashboard overview', type: DashboardOverviewDTO }) async getDashboardOverview( @Query('driverId') _driverId: string, @Req() req: AuthenticatedRequest, ): Promise { const userId = req.user?.userId; if (!userId) { throw new UnauthorizedException('Unauthorized'); } return this.dashboardService.getDashboardOverview(userId); } }