Skip to content

Commit 403cd32

Browse files
Merge branch 'main' into feat/fileUpload
2 parents 66be004 + d19a05e commit 403cd32

68 files changed

Lines changed: 2047 additions & 254 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

backend/package-lock.json

Lines changed: 31 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backend/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
"@nestjs/config": "^3.0.0",
2525
"@nestjs/core": "^10.0.0",
2626
"@nestjs/mapped-types": "*",
27-
"@nestjs/platform-express": "^10.4.20",
28-
"@nestjs/swagger": "^7.4.2",
27+
"@nestjs/platform-express": "^10.0.0",
28+
"@nestjs/swagger": "^7.3.0",
2929
"@nestjs/typeorm": "^10.0.2",
3030
"@types/multer": "^2.0.0",
3131
"@types/uuid": "^10.0.0",
@@ -38,8 +38,8 @@
3838
"pg": "^8.11.3",
3939
"reflect-metadata": "^0.2.0",
4040
"rxjs": "^7.8.1",
41-
"typeorm": "^0.3.27",
42-
"uuid": "^13.0.0"
41+
"swagger-ui-express": "^5.0.1",
42+
"typeorm": "^0.3.27"
4343
},
4444
"devDependencies": {
4545
"@nestjs/cli": "^10.0.0",

backend/src/app.module.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,7 @@ import { DepartmentsModule } from './departments/departments.module';
1010
import { Department } from './departments/department.entity';
1111
import { UsersModule } from './users/users.module';
1212
import { User } from './users/entities/user.entity';
13-
import { FileUploadsModule } from './file-uploads/file-uploads.module';
14-
import { FileUpload } from './file-uploads/entities/file-upload.entity';
15-
import { Asset } from './assets/entities/assest.entity';
16-
import { Supplier } from './suppliers/entities/supplier.entity';
17-
import { AssetTransfersModule } from './asset-transfers/asset-transfers.module';
13+
import { SearchModule } from './search/search.module';
1814

1915
@Module({
2016
imports: [
@@ -47,9 +43,9 @@ import { AssetTransfersModule } from './asset-transfers/asset-transfers.module';
4743
DepartmentsModule,
4844
AssetTransfersModule,
4945
UsersModule,
50-
FileUploadsModule,
46+
SearchModule,
5147
],
52-
controllers: [AppController],
53-
providers: [AppService],
48+
controllers: [AppController, NotificationsController],
49+
providers: [AppService, NotificationsService],
5450
})
5551
export class AppModule {}
Lines changed: 61 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,111 @@
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"
23
import 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"
56
import type { AuditReportQueryDto } from "./dto/audit-report.dto"
67
import type { AssetCondition } from "./entities/asset-audit.entity"
8+
import { AssetAuditReportDto } from "./dto/audit-report.dto"
79

10+
@ApiTags('Asset Audits')
811
@Controller("asset-audits")
912
export 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

Comments
 (0)