Skip to content
This repository was archived by the owner on May 21, 2026. It is now read-only.

Commit d04b3e5

Browse files
committed
Merge branch 'release/1.1.0'
2 parents 77c35a0 + 53bce51 commit d04b3e5

3 files changed

Lines changed: 42 additions & 17 deletions

File tree

backend/package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

backend/src/controllers/flow.controller.ts

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
import { RogerPlugin, RogerPluginMeasure } from '@shared/interfaces/rogerPlugin.interface';
2-
import { NextFunction, Request, Response } from "express";
3-
import ecfmpService from "../services/ecfmp.service";
1+
import {
2+
RogerPlugin,
3+
RogerPluginMeasure,
4+
} from '@shared/interfaces/rogerPlugin.interface';
5+
import { NextFunction, Request, Response } from 'express';
6+
import ecfmpService from '../services/ecfmp.service';
47
import { EcfmpMeasure } from '@shared/interfaces/ecfmp.interface';
58
import { APIError } from '@shared/errors';
69

@@ -9,7 +12,6 @@ export async function getAllMeasures(
912
res: Response,
1013
next: NextFunction
1114
) {
12-
1315
try {
1416
const measures = await ecfmpService.getAllMeasures();
1517

@@ -27,23 +29,29 @@ export async function getLegacyMeasures(
2729
let aerodromes = req.query.aerodromes;
2830

2931
if (aerodromes == null) {
30-
return next(new APIError("aerodromes is a required query parameter", null, 400));
32+
return next(
33+
new APIError('aerodromes is a required query parameter', null, 400)
34+
);
3135
}
3236

3337
if (Array.isArray(aerodromes)) {
34-
return next(new APIError("aerodromes must be a comma-separated string of ICAO-codes", null, 400));
38+
return next(
39+
new APIError(
40+
'aerodromes must be a comma-separated string of ICAO-codes',
41+
null,
42+
400
43+
)
44+
);
3545
}
3646

37-
let relevantAerodromes = aerodromes.toString().split(",");
47+
let relevantAerodromes = aerodromes.toString().split(',');
3848

3949
try {
4050
const measures = await ecfmpService.getAllMeasures();
4151

42-
const legacyMeasures: RogerPlugin = {MDI: []};
43-
44-
52+
const legacyMeasures: RogerPlugin = { MDI: [] };
4553

46-
/* measures.forEach((element: EcfmpMeasure) => {
54+
/* measures.forEach((element: EcfmpMeasure) => {
4755
if (element.measure.type != "minimum_departure_interval") {return;}
4856
4957
let thisMeasure: RogerPluginMeasure = {
@@ -68,9 +76,21 @@ export async function getLegacyMeasures(
6876
}
6977
}
7078

71-
export async function editMeasure(req: Request, res: Response, next: NextFunction) {
79+
export async function editMeasure(
80+
req: Request,
81+
res: Response,
82+
next: NextFunction
83+
) {
7284
try {
73-
const measure = await ecfmpService.editMeasure(req.body);
85+
const { id } = req.params;
86+
87+
const numId = Number(id);
88+
89+
if (Number.isNaN(numId)) {
90+
return res.status(400).json({ msg: 'id must be numeric' });
91+
}
92+
93+
const measure = await ecfmpService.editMeasure(numId, req.body);
7494

7595
res.json(measure);
7696
} catch (error) {

backend/src/services/ecfmp.service.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,12 @@ export async function doesMeasureExist(ident: string): Promise<boolean> {
213213

214214
export async function editMeasure(measureId: number, measure: EcfmpMeasureDocument) {
215215
try {
216-
const updatedMeasure = await ecfmpModel.findOneAndUpdate({ id: measureId }, { enabled: measure.enabled }, {new: true}).exec();
216+
const updatedMeasure = await ecfmpModel.findOneAndUpdate(
217+
{ id: measureId },
218+
{ enabled: measure.enabled },
219+
{ new: true }
220+
).exec();
221+
217222
return updatedMeasure;
218223
} catch (e) {
219224
throw e;

0 commit comments

Comments
 (0)