import { Controller, Get, Post, Body, Param, UseGuards, Request } from '@nestjs/common'; import { ApiTags, ApiBearerAuth } from '@nestjs/swagger'; import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard'; import { InvoicesService } from './invoices.service'; @ApiTags('invoices') @Controller('invoices') @ApiBearerAuth() @UseGuards(JwtAuthGuard) export class InvoicesController { constructor(private invoicesService: InvoicesService) {} @Get() findAll() { return this.invoicesService.findAll(); } @Get(':id') findOne(@Param('id') id: string) { return this.invoicesService.findOne(id); } @Post('generate-preview') generatePreview(@Body() dto: { month: number; year: number }) { return this.invoicesService.generatePreview(dto); } @Post('generate-bulk') generateBulk(@Body() dto: { month: number; year: number }, @Request() req: any) { return this.invoicesService.generateBulk(dto, req.user.sub); } @Post('apply-late-fees') applyLateFees(@Body() dto: { grace_period_days: number; late_fee_amount: number }, @Request() req: any) { return this.invoicesService.applyLateFees(dto, req.user.sub); } }