validate the airport inputs
This commit is contained in:
@@ -174,6 +174,56 @@ export class AirportController {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static validateAirportEnums(airport: AirportDto): void {
|
||||||
|
airport.planning.assignments.forEach((assignment) => {
|
||||||
|
if (
|
||||||
|
assignment.type !== 'SHALL' &&
|
||||||
|
assignment.type !== 'SHOULD' &&
|
||||||
|
assignment.type !== 'MAY'
|
||||||
|
) {
|
||||||
|
throw new HttpException(
|
||||||
|
'Invalid assignment type',
|
||||||
|
HttpStatus.UNPROCESSABLE_ENTITY,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private static validateConstraint(constraint: ConstraintDto): void {
|
||||||
|
if (
|
||||||
|
constraint.altitude.mode !== 'BELOW' &&
|
||||||
|
constraint.altitude.mode !== 'EXACT' &&
|
||||||
|
constraint.altitude.mode !== 'ABOVE'
|
||||||
|
) {
|
||||||
|
throw new HttpException(
|
||||||
|
'Invalid altitude constraint mode',
|
||||||
|
HttpStatus.UNPROCESSABLE_ENTITY,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
constraint.speed.mode !== 'BELOW' &&
|
||||||
|
constraint.speed.mode !== 'EXACT' &&
|
||||||
|
constraint.speed.mode !== 'ABOVE'
|
||||||
|
) {
|
||||||
|
throw new HttpException(
|
||||||
|
'Invalid speed constraint mode',
|
||||||
|
HttpStatus.UNPROCESSABLE_ENTITY,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static validateAirportConstraints(airport: AirportDto): void {
|
||||||
|
airport.upperConstraints.forEach((constraint) =>
|
||||||
|
AirportController.validateConstraint(constraint),
|
||||||
|
);
|
||||||
|
|
||||||
|
airport.arrivalRoutes.forEach((route) => {
|
||||||
|
route.constraints.forEach((constraint) =>
|
||||||
|
AirportController.validateConstraint(constraint),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Get('/allCodes')
|
@Get('/allCodes')
|
||||||
@ApiResponse({
|
@ApiResponse({
|
||||||
status: 200,
|
status: 200,
|
||||||
@@ -221,7 +271,18 @@ export class AirportController {
|
|||||||
status: 409,
|
status: 409,
|
||||||
description: 'The airport is already registered',
|
description: 'The airport is already registered',
|
||||||
})
|
})
|
||||||
|
@ApiResponse({
|
||||||
|
status: 422,
|
||||||
|
description: 'The assignment type is invalid',
|
||||||
|
})
|
||||||
|
@ApiResponse({
|
||||||
|
status: 422,
|
||||||
|
description: 'The constraint type is invalid',
|
||||||
|
})
|
||||||
async register(@Body('airport') airport: AirportDto): Promise<void> {
|
async register(@Body('airport') airport: AirportDto): Promise<void> {
|
||||||
|
AirportController.validateAirportConstraints(airport);
|
||||||
|
AirportController.validateAirportEnums(airport);
|
||||||
|
|
||||||
await this.airportService
|
await this.airportService
|
||||||
.registerAirport(AirportController.airportDtoToAirport(airport))
|
.registerAirport(AirportController.airportDtoToAirport(airport))
|
||||||
.then((registered) => {
|
.then((registered) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user