1- import { Controller , Get , Post , Patch , Delete } from "@nestjs/common"
1+ import { Controller , Get , Post , Patch , Delete , Query , Param , Body } from "@nestjs/common"
2+ import { ApiTags , ApiOperation , ApiResponse , ApiParam , ApiQuery , ApiBody } from "@nestjs/swagger"
23import type { AssetAuditService } from "./asset-audit.service"
3- import type { CreateAssetAuditDto } from "./dto/create-asset-audit.dto"
4- import type { UpdateAssetAuditDto } from "./dto/update-asset-audit.dto"
4+ import { CreateAssetAuditDto } from "./dto/create-asset-audit.dto"
5+ import { UpdateAssetAuditDto } from "./dto/update-asset-audit.dto"
56import type { AuditReportQueryDto } from "./dto/audit-report.dto"
67import type { AssetCondition } from "./entities/asset-audit.entity"
8+ import { AssetAuditReportDto } from "./dto/audit-report.dto"
79
10+ @ApiTags ( 'Asset Audits' )
811@Controller ( "asset-audits" )
912export class AssetAuditController {
1013 constructor ( private readonly assetAuditService : AssetAuditService ) { }
1114
1215 @Post ( )
13- create ( createAssetAuditDto : CreateAssetAuditDto ) {
16+ @ApiOperation ( { summary : 'Create a new asset audit' } )
17+ @ApiResponse ( { status : 201 , description : 'Asset audit created successfully' } )
18+ @ApiResponse ( { status : 400 , description : 'Invalid input data' } )
19+ @ApiBody ( { type : CreateAssetAuditDto } )
20+ create ( @Body ( ) createAssetAuditDto : CreateAssetAuditDto ) {
1421 return this . assetAuditService . create ( createAssetAuditDto )
1522 }
1623
1724 @Get ( )
18- findAll ( page ?: string , limit ?: string ) {
25+ @ApiOperation ( { summary : 'Get all asset audits with pagination' } )
26+ @ApiQuery ( { name : 'page' , required : false , type : Number , description : 'Page number' } )
27+ @ApiQuery ( { name : 'limit' , required : false , type : Number , description : 'Items per page' } )
28+ @ApiResponse ( { status : 200 , description : 'List of asset audits retrieved successfully' } )
29+ findAll ( @Query ( 'page' ) page ?: string , @Query ( 'limit' ) limit ?: string ) {
1930 const pageNum = page ? Number . parseInt ( page , 10 ) : 1
2031 const limitNum = limit ? Number . parseInt ( limit , 10 ) : 10
2132 return this . assetAuditService . findAll ( pageNum , limitNum )
2233 }
2334
2435 @Get ( "reports" )
25- generateReport ( query : AuditReportQueryDto ) {
36+ @ApiOperation ( { summary : 'Generate comprehensive audit report' } )
37+ @ApiResponse ( { status : 200 , description : 'Audit report generated successfully' , type : AssetAuditReportDto } )
38+ generateReport ( @Query ( ) query : AuditReportQueryDto ) {
2639 return this . assetAuditService . generateReport ( query )
2740 }
2841
2942 @Get ( "overdue" )
30- getOverdueAudits ( daysPastDue ?: string ) {
43+ @ApiOperation ( { summary : 'Get overdue asset audits' } )
44+ @ApiQuery ( { name : 'daysPastDue' , required : false , type : Number , description : 'Number of days past due' } )
45+ @ApiResponse ( { status : 200 , description : 'Overdue audits retrieved successfully' } )
46+ getOverdueAudits ( @Query ( 'daysPastDue' ) daysPastDue ?: string ) {
3147 const days = daysPastDue ? Number . parseInt ( daysPastDue , 10 ) : 30
3248 return this . assetAuditService . getOverdueAudits ( days )
3349 }
3450
3551 @Get ( "date-range" )
36- getAuditsByDateRange ( startDate : string , endDate : string ) {
52+ @ApiOperation ( { summary : 'Get audits within date range' } )
53+ @ApiQuery ( { name : 'startDate' , required : true , type : String , description : 'Start date (ISO format)' } )
54+ @ApiQuery ( { name : 'endDate' , required : true , type : String , description : 'End date (ISO format)' } )
55+ @ApiResponse ( { status : 200 , description : 'Audits in date range retrieved successfully' } )
56+ getAuditsByDateRange ( @Query ( 'startDate' ) startDate : string , @Query ( 'endDate' ) endDate : string ) {
3757 return this . assetAuditService . getAuditsByDateRange ( startDate , endDate )
3858 }
3959
4060 @Get ( "asset/:assetId" )
41- findByAsset ( assetId : string ) {
61+ @ApiOperation ( { summary : 'Get audits for specific asset' } )
62+ @ApiParam ( { name : 'assetId' , type : String , description : 'Asset ID' } )
63+ @ApiResponse ( { status : 200 , description : 'Asset audits retrieved successfully' } )
64+ @ApiResponse ( { status : 404 , description : 'Asset not found' } )
65+ findByAsset ( @Param ( 'assetId' ) assetId : string ) {
4266 return this . assetAuditService . findByAsset ( assetId )
4367 }
4468
4569 @Get ( ":id" )
46- findOne ( id : string ) {
70+ @ApiOperation ( { summary : 'Get audit by ID' } )
71+ @ApiParam ( { name : 'id' , type : String , description : 'Audit ID' } )
72+ @ApiResponse ( { status : 200 , description : 'Audit retrieved successfully' } )
73+ @ApiResponse ( { status : 404 , description : 'Audit not found' } )
74+ findOne ( @Param ( 'id' ) id : string ) {
4775 return this . assetAuditService . findOne ( id )
4876 }
4977
5078 @Patch ( ":id" )
51- update ( id : string , updateAssetAuditDto : UpdateAssetAuditDto ) {
79+ @ApiOperation ( { summary : 'Update audit details' } )
80+ @ApiParam ( { name : 'id' , type : String , description : 'Audit ID' } )
81+ @ApiResponse ( { status : 200 , description : 'Audit updated successfully' } )
82+ @ApiResponse ( { status : 404 , description : 'Audit not found' } )
83+ @ApiBody ( { type : UpdateAssetAuditDto } )
84+ update ( @Param ( 'id' ) id : string , @Body ( ) updateAssetAuditDto : UpdateAssetAuditDto ) {
5285 return this . assetAuditService . update ( id , updateAssetAuditDto )
5386 }
5487
5588 @Patch ( ":id/complete" )
56- completeAudit ( id : string , condition : AssetCondition , remarks ?: string ) {
89+ @ApiOperation ( { summary : 'Complete an audit' } )
90+ @ApiParam ( { name : 'id' , type : String , description : 'Audit ID' } )
91+ @ApiQuery ( { name : 'condition' , required : true , description : 'Asset condition' } )
92+ @ApiQuery ( { name : 'remarks' , required : false , type : String , description : 'Completion remarks' } )
93+ @ApiResponse ( { status : 200 , description : 'Audit completed successfully' } )
94+ @ApiResponse ( { status : 404 , description : 'Audit not found' } )
95+ completeAudit (
96+ @Param ( 'id' ) id : string ,
97+ @Query ( 'condition' ) condition : AssetCondition ,
98+ @Query ( 'remarks' ) remarks ?: string
99+ ) {
57100 return this . assetAuditService . completeAudit ( id , condition , remarks )
58101 }
59102
60103 @Delete ( ":id" )
61- remove ( id : string ) {
104+ @ApiOperation ( { summary : 'Delete an audit' } )
105+ @ApiParam ( { name : 'id' , type : String , description : 'Audit ID' } )
106+ @ApiResponse ( { status : 200 , description : 'Audit deleted successfully' } )
107+ @ApiResponse ( { status : 404 , description : 'Audit not found' } )
108+ remove ( @Param ( 'id' ) id : string ) {
62109 return this . assetAuditService . remove ( id )
63110 }
64- }
111+ }
0 commit comments