import { Body, Controller, Delete, Get, Param, ParseUUIDPipe, Post, Req, } from '@nestjs/common'; import { CurrentAuth } from '../auth/decorators/current-auth.decorator'; import { RequirePermissions } from '../authorization/decorators/require-permissions.decorator'; import type { AuthPrincipal, RequestWithContext } from '../common/http/request-context'; import { SetFindingRecurrenceDto } from './dto/set-finding-recurrence.dto'; import { FindingRecurrenceService } from './finding-recurrence.service'; @Controller('inspection-findings') export class FindingRecurrenceController { constructor(private readonly recurrence: FindingRecurrenceService) {} @Get(':id/recurrence') @RequirePermissions('inspection_findings.read') state(@Param('id', new ParseUUIDPipe({ version: '4' })) id: string) { return this.recurrence.state(id); } @Get(':id/recurrence-candidates') @RequirePermissions('inspection_findings.read') candidates(@Param('id', new ParseUUIDPipe({ version: '4' })) id: string) { return this.recurrence.candidates(id); } @Post(':id/recurrence') @RequirePermissions('inspection_findings.update') link( @Param('id', new ParseUUIDPipe({ version: '4' })) id: string, @Body() dto: SetFindingRecurrenceDto, @CurrentAuth() principal: AuthPrincipal, @Req() request: RequestWithContext, ) { return this.recurrence.link(id, dto, principal, request); } @Delete(':id/recurrence') @RequirePermissions('inspection_findings.update') clear( @Param('id', new ParseUUIDPipe({ version: '4' })) id: string, @CurrentAuth() principal: AuthPrincipal, @Req() request: RequestWithContext, ) { return this.recurrence.clear(id, principal, request); } }