From 76b688ac8202726d16cb1e700e03d4d6176d6c7f Mon Sep 17 00:00:00 2001 From: enlineawork Date: Mon, 7 Sep 2026 14:43:43 -0300 Subject: [PATCH] =?UTF-8?q?F3.1:=20usar=20familia=20t=C3=A9cnica=20y=20exp?= =?UTF-8?q?oner=20merge=20de=20cat=C3=A1logo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../finding-catalog.controller.ts | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/api-v3/src/inspection-findings/finding-catalog.controller.ts b/api-v3/src/inspection-findings/finding-catalog.controller.ts index 178cee3..57833fd 100644 --- a/api-v3/src/inspection-findings/finding-catalog.controller.ts +++ b/api-v3/src/inspection-findings/finding-catalog.controller.ts @@ -6,15 +6,22 @@ import { CreateFindingCatalogItemDto } from './dto/create-finding-catalog-item.d import { CreateFindingCategoryDto } from './dto/create-finding-category.dto'; import { ListFindingCatalogProposalsQueryDto } from './dto/list-finding-catalog-proposals-query.dto'; import { ListFindingCatalogQueryDto } from './dto/list-finding-catalog-query.dto'; +import { MergeFindingCatalogItemDto } from './dto/merge-finding-catalog-item.dto'; import { ReplaceFindingCatalogSelectionDto } from './dto/replace-finding-catalog-selection.dto'; import { ReviewFindingCatalogProposalDto } from './dto/review-finding-catalog-proposal.dto'; import { UpdateFindingCatalogItemDto } from './dto/update-finding-catalog-item.dto'; import { UpdateFindingCategoryDto } from './dto/update-finding-category.dto'; +import { F3FindingCatalogResolverService } from './f3-finding-catalog-resolver.service'; +import { FindingCatalogMergeService } from './finding-catalog-merge.service'; import { FindingCatalogService } from './finding-catalog.service'; @Controller('finding-catalog') export class FindingCatalogController { - constructor(private readonly catalog: FindingCatalogService) {} + constructor( + private readonly catalog: FindingCatalogService, + private readonly applicableCatalog: F3FindingCatalogResolverService, + private readonly catalogMerges: FindingCatalogMergeService, + ) {} @Get() @RequirePermissions('finding_catalog.read') @@ -27,8 +34,8 @@ export class FindingCatalogController { applicable( @Param('assetId', new ParseUUIDPipe({ version: '4' })) assetId: string, @Query() query: ListFindingCatalogQueryDto, - ) { - return this.catalog.listApplicableForAsset(assetId, query); + ): Promise { + return this.applicableCatalog.listApplicableForAsset(assetId, query); } @Get('admin') @@ -123,6 +130,25 @@ export class FindingCatalogController { return this.catalog.createItem(dto, principal, request); } + @Get('items/:id/merge-status') + @RequirePermissions('finding_catalog.manage') + mergeStatus( + @Param('id', new ParseUUIDPipe({ version: '4' })) id: string, + ): Promise { + return this.catalogMerges.status(id); + } + + @Post('items/:id/merge') + @RequirePermissions('finding_catalog.manage') + mergeItem( + @Param('id', new ParseUUIDPipe({ version: '4' })) id: string, + @Body() dto: MergeFindingCatalogItemDto, + @CurrentAuth() principal: AuthPrincipal, + @Req() request: RequestWithContext, + ): Promise { + return this.catalogMerges.merge(id, dto, principal, request); + } + @Patch('items/:id') @RequirePermissions('finding_catalog.manage') updateItem(