Skip to content

Commit d66c44d

Browse files
committed
#1417 - made requested changes
1 parent 2a060fc commit d66c44d

2 files changed

Lines changed: 37 additions & 21 deletions

File tree

src/backend/src/routes/work-packages.routes.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,14 @@ const workPackagesRouter = express.Router();
77

88
workPackagesRouter.get('/', WorkPackagesController.getAllWorkPackages);
99
workPackagesRouter.get('/:wbsNum', WorkPackagesController.getSingleWorkPackage);
10-
workPackagesRouter.post('/get-many', WorkPackagesController.getManyWorkPackages);
10+
workPackagesRouter.post(
11+
'/get-many',
12+
body('wbsNums').exists().isArray(),
13+
body('wbsNums.*.carNumber').exists().isNumeric(),
14+
body('wbsNums.*.projectNumber').exists().isNumeric(),
15+
body('wbsNums.*.workPackageNumber').exists().isNumeric(),
16+
WorkPackagesController.getManyWorkPackages
17+
);
1118
workPackagesRouter.post(
1219
'/create',
1320
intMinZero(body('crId')),

src/backend/src/services/work-packages.services.ts

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -119,32 +119,41 @@ export default class WorkPackagesService {
119119
if (isProject(wbsNum)) {
120120
throw new HttpException(
121121
404,
122-
'WBS Number ' +
123-
`${wbsNum.carNumber}.${wbsNum.projectNumber}.${wbsNum.workPackageNumber}` +
124-
' is a project WBS#, not a Work Package WBS#'
122+
`WBS Number ${wbsNum.carNumber}.${wbsNum.projectNumber}.${wbsNum.workPackageNumber} is a project WBS#, not a Work Package WBS#`
125123
);
126124
}
127125
}
128126

129-
const workPackages = await prisma.work_Package.findMany({
130-
where: {
131-
wbsElement: {
132-
dateDeleted: null,
133-
OR: wbsNums.map((wbsNum) => ({
134-
carNumber: wbsNum.carNumber,
135-
projectNumber: wbsNum.projectNumber,
136-
workPackageNumber: wbsNum.workPackageNumber
137-
}))
138-
}
139-
},
140-
...workPackageQueryArgs
141-
});
127+
const workPackagePromises = wbsNums.map(async (wbsNum) => {
128+
const workPackages = await prisma.work_Package.findMany({
129+
where: {
130+
AND: [
131+
{
132+
wbsElement: {
133+
dateDeleted: null
134+
}
135+
},
136+
{
137+
wbsElement: {
138+
carNumber: wbsNum.carNumber,
139+
projectNumber: wbsNum.projectNumber,
140+
workPackageNumber: wbsNum.workPackageNumber
141+
}
142+
}
143+
]
144+
},
145+
...workPackageQueryArgs
146+
});
142147

143-
if (!workPackages || workPackages.length !== wbsNums.length) {
144-
throw new NotFoundException('Work Package', wbsNums.map((wbsNum) => wbsPipe(wbsNum)).join(', '));
145-
}
148+
if (!workPackages || workPackages.length !== 1) {
149+
throw new NotFoundException('Work Package', wbsPipe(wbsNum));
150+
}
151+
152+
return workPackageTransformer(workPackages[0]);
153+
});
146154

147-
return workPackages.map(workPackageTransformer);
155+
const resolvedWorkPackages = await Promise.all(workPackagePromises);
156+
return resolvedWorkPackages;
148157
}
149158

150159
/**

0 commit comments

Comments
 (0)