import { Body, Controller, Get, Post, UseGuards } from '@nestjs/common'; import { ApiBearerAuth, ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; import { CurrentUser } from '../../common/decorators/current-user.decorator'; import { Roles } from '../../common/decorators/roles.decorator'; import { JwtAuthGuard } from '../../common/guards/jwt-auth.guard'; import { RolesGuard } from '../../common/guards/roles.guard'; import { CreateReportDto } from './dto/create-report.dto'; import { ReportDto } from './dto/report-response.dto'; import { ReportsService } from './reports.service'; @ApiTags('reports') @ApiBearerAuth() @UseGuards(JwtAuthGuard) @Controller('reports') export class ReportsController { constructor(private readonly reportsService: ReportsService) {} @Post() @ApiOperation({ summary: 'Submit a report' }) @ApiResponse({ status: 201, type: ReportDto }) create(@CurrentUser('id') userId: string, @Body() dto: CreateReportDto) { return this.reportsService.create(userId, dto); } @Get() @Roles('admin', 'moderator') @UseGuards(RolesGuard) @ApiOperation({ summary: 'Get all reports (admin/moderator)' }) @ApiResponse({ status: 200, type: [ReportDto] }) getAll() { return this.reportsService.getAll(); } }