mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-27 07:22:53 +00:00
75 lines
1.9 KiB
TypeScript
75 lines
1.9 KiB
TypeScript
import {
|
|
Controller,
|
|
Get,
|
|
Post,
|
|
Patch,
|
|
Delete,
|
|
Param,
|
|
Body,
|
|
Query,
|
|
ParseUUIDPipe,
|
|
} from '@nestjs/common';
|
|
import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger';
|
|
import { FleetManage, FleetView } from '../../common/booking-guards';
|
|
import { VehiclesService } from './vehicles.service';
|
|
import { CreateVehicleDto } from './dto/create-vehicle.dto';
|
|
import { UpdateVehicleDto } from './dto/update-vehicle.dto';
|
|
|
|
@ApiTags('vehicles')
|
|
@ApiBearerAuth()
|
|
@Controller('vehicles')
|
|
@FleetView()
|
|
export class VehiclesController {
|
|
constructor(private readonly vehiclesService: VehiclesService) {}
|
|
|
|
@Post()
|
|
@FleetManage()
|
|
@ApiOperation({ summary: 'Create a new vehicle' })
|
|
create(@Body() createVehicleDto: CreateVehicleDto) {
|
|
return this.vehiclesService.create(createVehicleDto);
|
|
}
|
|
|
|
@Get()
|
|
@ApiOperation({ summary: 'Get all vehicles with filters' })
|
|
findAll(
|
|
@Query('search') search?: string,
|
|
@Query('status') status?: string,
|
|
@Query('page') page?: string,
|
|
@Query('limit') limit?: string,
|
|
@Query('sortBy') sortBy?: string,
|
|
@Query('sortOrder') sortOrder?: 'ASC' | 'DESC',
|
|
) {
|
|
return this.vehiclesService.findAll({
|
|
search,
|
|
status: status as any,
|
|
page: page ? parseInt(page) : undefined,
|
|
limit: limit ? parseInt(limit) : undefined,
|
|
sortBy,
|
|
sortOrder,
|
|
});
|
|
}
|
|
|
|
@Get(':id')
|
|
@ApiOperation({ summary: 'Get vehicle by id' })
|
|
findOne(@Param('id', ParseUUIDPipe) id: string) {
|
|
return this.vehiclesService.findById(id);
|
|
}
|
|
|
|
@Patch(':id')
|
|
@FleetManage()
|
|
@ApiOperation({ summary: 'Update a vehicle' })
|
|
update(
|
|
@Param('id', ParseUUIDPipe) id: string,
|
|
@Body() updateVehicleDto: UpdateVehicleDto,
|
|
) {
|
|
return this.vehiclesService.update(id, updateVehicleDto);
|
|
}
|
|
|
|
@Delete(':id')
|
|
@FleetManage()
|
|
@ApiOperation({ summary: 'Delete a vehicle' })
|
|
remove(@Param('id', ParseUUIDPipe) id: string) {
|
|
return this.vehiclesService.remove(id);
|
|
}
|
|
}
|