import { Controller, Get, Post, Patch, Delete, Body, Param, Query, UseGuards, } from '@nestjs/common'; import { VehiclesService } from './vehicles.service'; import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard'; import { RolesGuard } from '../auth/guards/roles.guard'; import { Roles } from '../auth/decorators/roles.decorator'; import { Role } from '@prisma/client'; import { CreateVehicleDto, UpdateVehicleDto } from './dto'; @Controller('vehicles') @UseGuards(JwtAuthGuard, RolesGuard) export class VehiclesController { constructor(private readonly vehiclesService: VehiclesService) {} @Post() @Roles(Role.ADMINISTRATOR, Role.COORDINATOR) create(@Body() createVehicleDto: CreateVehicleDto) { return this.vehiclesService.create(createVehicleDto); } @Get() findAll() { return this.vehiclesService.findAll(); } @Get('available') findAvailable() { return this.vehiclesService.findAvailable(); } @Get('utilization') @Roles(Role.ADMINISTRATOR, Role.COORDINATOR) getUtilization() { return this.vehiclesService.getUtilization(); } @Get(':id') findOne(@Param('id') id: string) { return this.vehiclesService.findOne(id); } @Patch(':id') @Roles(Role.ADMINISTRATOR, Role.COORDINATOR) update(@Param('id') id: string, @Body() updateVehicleDto: UpdateVehicleDto) { return this.vehiclesService.update(id, updateVehicleDto); } @Delete(':id') @Roles(Role.ADMINISTRATOR, Role.COORDINATOR) remove(@Param('id') id: string, @Query('hard') hard?: string) { const isHardDelete = hard === 'true'; return this.vehiclesService.remove(id, isHardDelete); } }