Files
lcbp3/backend/src/modules/drawing/drawing-master-data.controller.ts
T
admin f13861f02e
Build and Deploy / deploy (push) Failing after 2m19s
260316:1347 Refactor to NestJS 11 #2
2026-03-16 13:47:35 +07:00

255 lines
8.7 KiB
TypeScript

import {
Controller,
Get,
Post,
Patch,
Delete,
Body,
Param,
Query,
UseGuards,
ParseIntPipe,
Logger,
} from '@nestjs/common';
import {
ApiTags,
ApiOperation,
ApiBearerAuth,
ApiQuery,
} from '@nestjs/swagger';
import { DrawingMasterDataService } from './drawing-master-data.service';
import { JwtAuthGuard } from '../../common/guards/jwt-auth.guard';
import { RbacGuard } from '../../common/guards/rbac.guard';
import { RequirePermission } from '../../common/decorators/require-permission.decorator';
@ApiTags('Drawing Master Data')
@ApiBearerAuth()
@UseGuards(JwtAuthGuard, RbacGuard)
@Controller('drawings/master-data')
export class DrawingMasterDataController {
private readonly logger = new Logger(DrawingMasterDataController.name);
constructor(private readonly masterDataService: DrawingMasterDataService) {}
// =====================================================
// Contract Drawing Volumes
// =====================================================
@Get('contract/volumes')
@ApiOperation({ summary: 'List Contract Drawing Volumes' })
@ApiQuery({ name: 'projectId', required: true, type: String })
@RequirePermission('document.view')
getVolumes(@Query('projectId') projectId: string | number) {
return this.masterDataService.findAllVolumes(projectId);
}
@Post('contract/volumes')
@ApiOperation({ summary: 'Create Volume' })
@RequirePermission('master_data.drawing_category.manage')
createVolume(@Body() body: any) {
return this.masterDataService.createVolume(body);
}
@Patch('contract/volumes/:id')
@ApiOperation({ summary: 'Update Volume' })
@RequirePermission('master_data.drawing_category.manage')
updateVolume(
@Param('id', ParseIntPipe) id: number,
@Body() body: any
) {
return this.masterDataService.updateVolume(id, body);
}
@Delete('contract/volumes/:id')
@ApiOperation({ summary: 'Delete Volume' })
@RequirePermission('master_data.drawing_category.manage')
deleteVolume(@Param('id', ParseIntPipe) id: number) {
return this.masterDataService.deleteVolume(id);
}
// =====================================================
// Contract Drawing Categories
// =====================================================
@Get('contract/categories')
@ApiOperation({ summary: 'List Contract Drawing Categories' })
@ApiQuery({ name: 'projectId', required: true, type: String })
@RequirePermission('document.view')
getCategories(@Query('projectId') projectId: string | number) {
return this.masterDataService.findAllCategories(projectId);
}
@Post('contract/categories')
@ApiOperation({ summary: 'Create Category' })
@RequirePermission('master_data.drawing_category.manage')
createCategory(@Body() body: any) {
return this.masterDataService.createCategory(body);
}
@Patch('contract/categories/:id')
@ApiOperation({ summary: 'Update Category' })
@RequirePermission('master_data.drawing_category.manage')
updateCategory(
@Param('id', ParseIntPipe) id: number,
@Body() body: any
) {
return this.masterDataService.updateCategory(id, body);
}
@Delete('contract/categories/:id')
@ApiOperation({ summary: 'Delete Category' })
@RequirePermission('master_data.drawing_category.manage')
deleteCategory(@Param('id', ParseIntPipe) id: number) {
return this.masterDataService.deleteCategory(id);
}
// =====================================================
// Contract Drawing Sub-Categories
// =====================================================
@Get('contract/sub-categories')
@ApiOperation({ summary: 'List Contract Drawing Sub-Categories' })
@ApiQuery({ name: 'projectId', required: true, type: String })
@RequirePermission('document.view')
getContractSubCats(@Query('projectId') projectId: string | number) {
return this.masterDataService.findAllContractSubCats(projectId);
}
@Post('contract/sub-categories')
@ApiOperation({ summary: 'Create Contract Sub-Category' })
@RequirePermission('master_data.drawing_category.manage')
createContractSubCat(@Body() body: any) {
return this.masterDataService.createContractSubCat(body);
}
@Patch('contract/sub-categories/:id')
@ApiOperation({ summary: 'Update Contract Sub-Category' })
@RequirePermission('master_data.drawing_category.manage')
updateContractSubCat(
@Param('id', ParseIntPipe) id: number,
@Body() body: any
) {
return this.masterDataService.updateContractSubCat(id, body);
}
@Delete('contract/sub-categories/:id')
@ApiOperation({ summary: 'Delete Contract Sub-Category' })
@RequirePermission('master_data.drawing_category.manage')
deleteContractSubCat(@Param('id', ParseIntPipe) id: number) {
return this.masterDataService.deleteContractSubCat(id);
}
// =====================================================
// Contract Drawing Mappings
// =====================================================
@Get('contract/mappings')
@ApiOperation({ summary: 'List Contract Drawing Mappings' })
@ApiQuery({ name: 'projectId', required: true, type: String })
@ApiQuery({ name: 'categoryId', required: false, type: Number })
@RequirePermission('document.view')
getContractMappings(
@Query('projectId') projectId: string | number,
@Query('categoryId') categoryId?: number
) {
return this.masterDataService.findContractMappings(
projectId,
categoryId ? Number(categoryId) : undefined
);
}
@Post('contract/mappings')
@ApiOperation({ summary: 'Create Contract Drawing Mapping' })
@RequirePermission('master_data.drawing_category.manage')
createContractMapping(@Body() body: any) {
return this.masterDataService.createContractMapping(body);
}
@Delete('contract/mappings/:id')
@ApiOperation({ summary: 'Delete Contract Drawing Mapping' })
@RequirePermission('master_data.drawing_category.manage')
deleteContractMapping(@Param('id', ParseIntPipe) id: number) {
return this.masterDataService.deleteContractMapping(id);
}
// =====================================================
// Shop Drawing Main Categories
// =====================================================
@Get('shop/main-categories')
@ApiOperation({ summary: 'List Shop Drawing Main Categories' })
@ApiQuery({ name: 'projectId', required: true, type: String })
@RequirePermission('document.view')
getShopMainCats(@Query('projectId') projectId: string | number) {
return this.masterDataService.findAllShopMainCats(projectId);
}
@Post('shop/main-categories')
@ApiOperation({ summary: 'Create Shop Main Category' })
@RequirePermission('master_data.drawing_category.manage')
createShopMainCat(@Body() body: any) {
return this.masterDataService.createShopMainCat(body);
}
@Patch('shop/main-categories/:id')
@ApiOperation({ summary: 'Update Shop Main Category' })
@RequirePermission('master_data.drawing_category.manage')
updateShopMainCat(
@Param('id', ParseIntPipe) id: number,
@Body() body: any
) {
return this.masterDataService.updateShopMainCat(id, body);
}
@Delete('shop/main-categories/:id')
@ApiOperation({ summary: 'Delete Shop Main Category' })
@RequirePermission('master_data.drawing_category.manage')
deleteShopMainCat(@Param('id', ParseIntPipe) id: number) {
return this.masterDataService.deleteShopMainCat(id);
}
// =====================================================
// Shop Drawing Sub-Categories
// =====================================================
@Get('shop/sub-categories')
@ApiOperation({ summary: 'List Shop Drawing Sub-Categories' })
@ApiQuery({ name: 'projectId', required: true, type: String })
@ApiQuery({ name: 'mainCategoryId', required: false, type: Number })
@RequirePermission('document.view')
getShopSubCats(
@Query('projectId') projectId: string | number,
@Query('mainCategoryId') mainCategoryId?: number
) {
return this.masterDataService.findAllShopSubCats(
projectId,
mainCategoryId ? Number(mainCategoryId) : undefined
);
}
@Post('shop/sub-categories')
@ApiOperation({ summary: 'Create Shop Sub-Category' })
@RequirePermission('master_data.drawing_category.manage')
createShopSubCat(@Body() body: any) {
return this.masterDataService.createShopSubCat(body);
}
@Patch('shop/sub-categories/:id')
@ApiOperation({ summary: 'Update Shop Sub-Category' })
@RequirePermission('master_data.drawing_category.manage')
updateShopSubCat(
@Param('id', ParseIntPipe) id: number,
@Body() body: any
) {
return this.masterDataService.updateShopSubCat(id, body);
}
@Delete('shop/sub-categories/:id')
@ApiOperation({ summary: 'Delete Shop Sub-Category' })
@RequirePermission('master_data.drawing_category.manage')
deleteShopSubCat(@Param('id', ParseIntPipe) id: number) {
return this.masterDataService.deleteShopSubCat(id);
}
}