mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-26 18:42:49 +00:00
88 lines
2.6 KiB
TypeScript
88 lines
2.6 KiB
TypeScript
import {
|
||
Body,
|
||
Controller,
|
||
Delete,
|
||
Get,
|
||
Param,
|
||
ParseUUIDPipe,
|
||
Patch,
|
||
Post,
|
||
Query,
|
||
} from '@nestjs/common';
|
||
import { ApiOperation, ApiTags } from '@nestjs/swagger';
|
||
import { FleetManage, FleetView } from '../../common/booking-guards';
|
||
import { CreateWagonDto } from './dto/create-wagon.dto';
|
||
import { ListWagonsQueryDto } from './dto/list-wagons-query.dto';
|
||
import { UpdateWagonDto } from './dto/update-wagon.dto';
|
||
import { AssignWagonToTrainDto } from './dto/assign-wagon-to-train.dto';
|
||
import { ReorderWagonsDto } from './dto/reorder-wagons.dto';
|
||
import { WagonsService } from './wagons.service';
|
||
|
||
@ApiTags('wagons')
|
||
@Controller('wagons')
|
||
@FleetView()
|
||
export class WagonsController {
|
||
constructor(private readonly wagonsService: WagonsService) {}
|
||
|
||
@Post()
|
||
@FleetManage()
|
||
@ApiOperation({ summary: 'Create a new wagon' })
|
||
create(@Body() dto: CreateWagonDto) {
|
||
return this.wagonsService.create(dto);
|
||
}
|
||
|
||
@Get()
|
||
@ApiOperation({ summary: 'List all wagons' })
|
||
findAll(@Query() query: ListWagonsQueryDto) {
|
||
return this.wagonsService.findAll(query);
|
||
}
|
||
|
||
@Get(':id')
|
||
@ApiOperation({ summary: 'Get a wagon by ID' })
|
||
findOne(@Param('id', ParseUUIDPipe) id: string) {
|
||
return this.wagonsService.findById(id);
|
||
}
|
||
|
||
@Patch(':id')
|
||
@FleetManage()
|
||
@ApiOperation({ summary: 'Update a wagon' })
|
||
update(@Param('id', ParseUUIDPipe) id: string, @Body() dto: UpdateWagonDto) {
|
||
return this.wagonsService.update(id, dto);
|
||
}
|
||
|
||
@Delete(':id')
|
||
@FleetManage()
|
||
@ApiOperation({ summary: 'Delete a wagon' })
|
||
remove(@Param('id', ParseUUIDPipe) id: string) {
|
||
return this.wagonsService.remove(id);
|
||
}
|
||
|
||
@Post(':id/assign-train')
|
||
@FleetManage()
|
||
@ApiOperation({ summary: 'Assign wagon to a train' })
|
||
assignToTrain(@Param('id', ParseUUIDPipe) id: string, @Body() dto: AssignWagonToTrainDto) {
|
||
return this.wagonsService.assignToTrain(id, dto);
|
||
}
|
||
|
||
@Post(':id/unassign-train')
|
||
@FleetManage()
|
||
@ApiOperation({ summary: 'Unassign wagon from train' })
|
||
unassignFromTrain(@Param('id', ParseUUIDPipe) id: string) {
|
||
return this.wagonsService.unassignFromTrain(id);
|
||
}
|
||
}
|
||
|
||
// Separate controller for train‑specific reorder (registered in module)
|
||
@Controller('trains/:trainId/reorder-wagons')
|
||
@FleetView()
|
||
export class TrainWagonsReorderController {
|
||
constructor(private readonly wagonsService: WagonsService) {}
|
||
|
||
@Post()
|
||
@FleetManage()
|
||
@ApiOperation({ summary: 'Reorder wagons of a train' })
|
||
reorder(@Param('trainId', ParseUUIDPipe) trainId: string, @Body() dto: ReorderWagonsDto) {
|
||
return this.wagonsService.reorderWagons(trainId, dto);
|
||
}
|
||
}
|