diff --git a/api-v3/src/inspection-findings/finding-recurrence.controller.ts b/api-v3/src/inspection-findings/finding-recurrence.controller.ts new file mode 100644 index 0000000..c06e773 --- /dev/null +++ b/api-v3/src/inspection-findings/finding-recurrence.controller.ts @@ -0,0 +1,47 @@ +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-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); + } +}