Skip to content

Commit 06821e5

Browse files
chore: ensure surveys in descending order
1 parent e0478e6 commit 06821e5

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

server/src/routes/v2/surveys.ts

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ router.get(
4949
accessibleBy(req.authorization).ofType(Survey.modelName),
5050
{ deletedAt: null }
5151
]
52-
});
52+
}).sort({ createdAt: -1 }); // always sort most to least recent
5353

5454
// Successfully fetched surveys
5555
res.status(200).json({
@@ -213,12 +213,14 @@ router.post(
213213
async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {
214214
// Different permissions based on creation with or without referral
215215
// Check permission based on the action type based on query param `new`
216-
let createActionType = ACTIONS.CASL.CREATE;
217-
if (req.query.new === 'true') {
218-
createActionType = ACTIONS.CUSTOM.CREATE_WITHOUT_REFERRAL;
219-
}
220-
if (!req.authorization?.can(createActionType, SUBJECTS.SURVEY)) {
221-
return res.status(403).json({ message: 'Forbidden' });
216+
if (req.body.surveyCode === null) {
217+
if (!req.authorization?.can(ACTIONS.CUSTOM.CREATE_WITHOUT_REFERRAL, SUBJECTS.SURVEY)) {
218+
return res.status(403).json({ message: 'Please provide a referral code to create a survey.' });
219+
}
220+
} else {
221+
if (!req.authorization?.can(ACTIONS.CASL.CREATE, SUBJECTS.SURVEY)) {
222+
return res.status(403).json({ message: 'Forbidden' });
223+
}
222224
}
223225
try {
224226
const surveyData: ISurvey = req.body;
@@ -243,16 +245,11 @@ router.post(
243245
message: err.message
244246
});
245247
}
246-
} else if (req.query.new === 'true') {
247-
// If `new` query parameter is true, generate new survey code and set parent to seed
248+
} else {
248249
surveyData.parentSurveyCode = SYSTEM_SURVEY_CODE;
249250
surveyData.surveyCode = await generateUniqueSurveyCode();
250-
} else {
251-
const err = errors.NO_SURVEY_CODE_PROVIDED;
252-
return res.status(err.status).json({
253-
message: err.message
254-
});
255251
}
252+
256253
// Attempt to create the survey
257254
const result = await Survey.create(surveyData);
258255

0 commit comments

Comments
 (0)