import { Controller, Get, Query, UseGuards } from '@nestjs/common'; import { JwtAuthGuard } from '@modules/auth/guards/jwt-auth.guard'; import { CurrentUser } from '@modules/auth/decorators/current-user.decorator'; import { CommissionsDashboardService } from '../services'; import { CommissionsDashboardDto, UserEarningsDto, EntriesByStatusDto, EntriesBySchemeDto, EntriesByUserDto, } from '../dto'; interface RequestUser { id: string; tenant_id: string; email: string; role: string; } @Controller('commissions/dashboard') @UseGuards(JwtAuthGuard) export class CommissionsDashboardController { constructor(private readonly dashboardService: CommissionsDashboardService) {} @Get() async getSummary(@CurrentUser() user: RequestUser): Promise { return this.dashboardService.getDashboardSummary(user.tenant_id); } @Get('my-earnings') async getMyEarnings(@CurrentUser() user: RequestUser): Promise { return this.dashboardService.getUserEarnings(user.tenant_id, user.id); } @Get('entries-by-status') async getEntriesByStatus(@CurrentUser() user: RequestUser): Promise { return this.dashboardService.getEntriesByStatus(user.tenant_id); } @Get('entries-by-scheme') async getEntriesByScheme(@CurrentUser() user: RequestUser): Promise { return this.dashboardService.getEntriesByScheme(user.tenant_id); } @Get('entries-by-user') async getEntriesByUser(@CurrentUser() user: RequestUser): Promise { return this.dashboardService.getEntriesByUser(user.tenant_id); } @Get('top-earners') async getTopEarners( @CurrentUser() user: RequestUser, @Query('limit') limit?: number, ): Promise { return this.dashboardService.getTopEarners(user.tenant_id, limit || 10); } }