mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-27 17:50:54 +00:00
88 lines
2.5 KiB
TypeScript
88 lines
2.5 KiB
TypeScript
import {
|
|
Body,
|
|
Controller,
|
|
Delete,
|
|
Get,
|
|
HttpCode,
|
|
HttpStatus,
|
|
Param,
|
|
ParseUUIDPipe,
|
|
Patch,
|
|
Post,
|
|
Query,
|
|
} from '@nestjs/common';
|
|
import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger';
|
|
|
|
import {
|
|
RuleEngineCreate,
|
|
RuleEngineDelete,
|
|
RuleEngineUpdate,
|
|
RuleEngineView,
|
|
} from '../../common/rule-engine-guards';
|
|
|
|
import { CreateTransitAgentDto } from './dto/create-transit-agent.dto';
|
|
import { UpdateTransitAgentDto } from './dto/update-transit-agent.dto';
|
|
import { TransitAgentsService } from './transit-agents.service';
|
|
|
|
@ApiTags('transit-agents')
|
|
@Controller('transit-agents')
|
|
@ApiBearerAuth()
|
|
export class TransitAgentsController {
|
|
constructor(private readonly transitAgentsService: TransitAgentsService) {}
|
|
|
|
@Get()
|
|
@RuleEngineView('transit-agents')
|
|
@ApiOperation({ summary: 'List transit agents' })
|
|
findAll(@Query() query: Record<string, string | undefined>) {
|
|
return this.transitAgentsService.findAll({
|
|
isActive:
|
|
query.isActive === 'all'
|
|
? undefined
|
|
: query.isActive !== undefined
|
|
? query.isActive === 'true'
|
|
: undefined,
|
|
page: query.page ? parseInt(query.page, 10) : undefined,
|
|
pageSize: query.pageSize ? parseInt(query.pageSize, 10) : undefined,
|
|
sortBy: query.sortBy,
|
|
sortOrder: query.sortOrder,
|
|
});
|
|
}
|
|
|
|
/** Active + currently valid officers — the transit-assignee assignment dropdown. */
|
|
@Get('assignable')
|
|
@RuleEngineView('transit-agents')
|
|
@ApiOperation({ summary: 'List transit agents assignable right now (active and in-window)' })
|
|
findAssignable() {
|
|
return this.transitAgentsService.findAssignable();
|
|
}
|
|
|
|
@Get(':id')
|
|
@RuleEngineView('transit-agents')
|
|
@ApiOperation({ summary: 'Get a transit agent by ID' })
|
|
findOne(@Param('id', ParseUUIDPipe) id: string) {
|
|
return this.transitAgentsService.findById(id);
|
|
}
|
|
|
|
@Post()
|
|
@RuleEngineCreate('transit-agents')
|
|
@ApiOperation({ summary: 'Create a transit agent' })
|
|
create(@Body() dto: CreateTransitAgentDto) {
|
|
return this.transitAgentsService.create(dto);
|
|
}
|
|
|
|
@Patch(':id')
|
|
@RuleEngineUpdate('transit-agents')
|
|
@ApiOperation({ summary: 'Update a transit agent' })
|
|
update(@Param('id', ParseUUIDPipe) id: string, @Body() dto: UpdateTransitAgentDto) {
|
|
return this.transitAgentsService.update(id, dto);
|
|
}
|
|
|
|
@Delete(':id')
|
|
@RuleEngineDelete('transit-agents')
|
|
@HttpCode(HttpStatus.NO_CONTENT)
|
|
@ApiOperation({ summary: 'Soft-delete a transit agent' })
|
|
remove(@Param('id', ParseUUIDPipe) id: string) {
|
|
return this.transitAgentsService.remove(id);
|
|
}
|
|
}
|