From 5e14ffda17870445cae715704d9899755af05c42 Mon Sep 17 00:00:00 2001 From: enlineawork Date: Mon, 7 Sep 2026 21:19:42 -0300 Subject: [PATCH] F4: expose explicit inspection lifecycle endpoints --- .../inspection-visits.controller.ts | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/api-v3/src/inspection-visits/inspection-visits.controller.ts b/api-v3/src/inspection-visits/inspection-visits.controller.ts index 5fb0c86..4ded255 100644 --- a/api-v3/src/inspection-visits/inspection-visits.controller.ts +++ b/api-v3/src/inspection-visits/inspection-visits.controller.ts @@ -13,7 +13,7 @@ import { 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 { ChangeInspectionVisitStatusDto } from './dto/change-inspection-visit-status.dto'; +import { CancelInspectionVisitDto } from './dto/cancel-inspection-visit.dto'; import { CloseInspectionVisitDto } from './dto/close-inspection-visit.dto'; import { CreateInspectionVisitDto } from './dto/create-inspection-visit.dto'; import { ExcludeInspectionVisitAssetDto } from './dto/exclude-inspection-visit-asset.dto'; @@ -21,11 +21,15 @@ import { ListInspectionVisitsQueryDto } from './dto/list-inspection-visits-query import { ReplaceInspectionVisitAssetsDto } from './dto/replace-inspection-visit-assets.dto'; import { ReplaceInspectionVisitTeamDto } from './dto/replace-inspection-visit-team.dto'; import { UpdateInspectionVisitDto } from './dto/update-inspection-visit.dto'; +import { InspectionVisitLifecycleService } from './inspection-visit-lifecycle.service'; import { InspectionVisitsService } from './inspection-visits.service'; @Controller('inspection-visits') export class InspectionVisitsController { - constructor(private readonly visits: InspectionVisitsService) {} + constructor( + private readonly visits: InspectionVisitsService, + private readonly lifecycle: InspectionVisitLifecycleService, + ) {} @Get() @RequirePermissions('inspections.read') @@ -135,15 +139,14 @@ export class InspectionVisitsController { return this.visits.replaceTeam(id, dto, principal, request); } - @Put(':id/status') + @Post(':id/plan') @RequirePermissions('inspections.manage') - changeStatus( + plan( @Param('id', new ParseUUIDPipe({ version: '4' })) id: string, - @Body() dto: ChangeInspectionVisitStatusDto, @CurrentAuth() principal: AuthPrincipal, @Req() request: RequestWithContext, ) { - return this.visits.changeStatus(id, dto, principal, request); + return this.lifecycle.plan(id, principal, request); } @Post(':id/start') @@ -153,7 +156,7 @@ export class InspectionVisitsController { @CurrentAuth() principal: AuthPrincipal, @Req() request: RequestWithContext, ) { - return this.visits.start(id, principal, request); + return this.lifecycle.start(id, principal, request); } @Post(':id/close') @@ -164,6 +167,17 @@ export class InspectionVisitsController { @CurrentAuth() principal: AuthPrincipal, @Req() request: RequestWithContext, ) { - return this.visits.close(id, dto, principal, request); + return this.lifecycle.close(id, dto, principal, request); + } + + @Post(':id/cancel') + @RequirePermissions('inspections.manage') + cancel( + @Param('id', new ParseUUIDPipe({ version: '4' })) id: string, + @Body() dto: CancelInspectionVisitDto, + @CurrentAuth() principal: AuthPrincipal, + @Req() request: RequestWithContext, + ) { + return this.lifecycle.cancel(id, dto, principal, request); } }