diff --git a/backend/src/change-equipment-status/change-equipment-status.controller.ts b/backend/src/change-equipment-status/change-equipment-status.controller.ts new file mode 100644 index 0000000..f22be32 --- /dev/null +++ b/backend/src/change-equipment-status/change-equipment-status.controller.ts @@ -0,0 +1,51 @@ +import { Controller, Get, Post, Body, Patch, Param, Delete, Query, UseGuards } from '@nestjs/common'; +import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; +import { ChangeEquipmentStatusService } from './change-equipment-status.service'; +import { CreateChangeEquipmentStatusDto } from './dto/create-change-equipment-status.dto'; +import { UpdateChangeEquipmentStatusDto } from './dto/update-change-equipment-status.dto'; +import { JwtAuthGuard } from '../auth/jwt-auth.guard'; +import { EquipmentStatus } from '@prisma/client'; + +@ApiTags('change-equipment-status') +@ApiBearerAuth() +@UseGuards(JwtAuthGuard) +@Controller('change-equipment-status') +export class ChangeEquipmentStatusController { + constructor(private readonly changeEquipmentStatusService: ChangeEquipmentStatusService) {} + + @Get() + async findAll(@Query('skip') skip?: number, @Query('take') take?: number) { + const [data, total] = await Promise.all([ + this.changeEquipmentStatusService.findAll({ skip: +skip || 0, take: +take || 25 }), + this.changeEquipmentStatusService.count(), + ]); + return { data, total }; + } + + @Get(':equipmentId/:newStatus') + findOne(@Param('equipmentId') equipmentId: string, @Param('newStatus') newStatus: EquipmentStatus) { + return this.changeEquipmentStatusService.findOne({ equipmentId_newStatus: { equipmentId, newStatus } }); + } + + @Post() + create(@Body() dto: CreateChangeEquipmentStatusDto) { + return this.changeEquipmentStatusService.create(dto); + } + + @Patch(':equipmentId/:newStatus') + update( + @Param('equipmentId') equipmentId: string, + @Param('newStatus') newStatus: EquipmentStatus, + @Body() dto: UpdateChangeEquipmentStatusDto, + ) { + return this.changeEquipmentStatusService.update({ + where: { equipmentId_newStatus: { equipmentId, newStatus } }, + data: dto, + }); + } + + @Delete(':equipmentId/:newStatus') + remove(@Param('equipmentId') equipmentId: string, @Param('newStatus') newStatus: EquipmentStatus) { + return this.changeEquipmentStatusService.remove({ equipmentId_newStatus: { equipmentId, newStatus } }); + } +} \ No newline at end of file