import { Body, Controller, Get, Param, ParseUUIDPipe, Patch, Post, Query, 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 { ListVerificationPlanningQueryDto } from './dto/list-verification-planning-query.dto'; import { PlanVerificationVisitDto } from './dto/plan-verification-visit.dto'; import { RecordVerificationResultDto } from './dto/record-verification-result.dto'; import { InspectionVerificationsService } from './inspection-verifications.service'; @Controller('inspection-verifications') export class InspectionVerificationsController { constructor(private readonly verifications: InspectionVerificationsService) {} @Get() @RequirePermissions('inspection_findings.read') list(@Query() query: ListVerificationPlanningQueryDto) { return this.verifications.listQueue(query); } @Post('plan') @RequirePermissions('inspection_findings.read', 'inspection_verifications.plan') plan( @Body() dto: PlanVerificationVisitDto, @CurrentAuth() principal: AuthPrincipal, @Req() request: RequestWithContext, ) { return this.verifications.planVisit(dto, principal, request); } @Patch('visits/:visitId/findings/:findingId/result') @RequirePermissions('inspections.execute') recordResult( @Param('visitId', new ParseUUIDPipe({ version: '4' })) visitId: string, @Param('findingId', new ParseUUIDPipe({ version: '4' })) findingId: string, @Body() dto: RecordVerificationResultDto, @CurrentAuth() principal: AuthPrincipal, @Req() request: RequestWithContext, ) { return this.verifications.recordResult(visitId, findingId, dto, principal, request); } }