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(