Skip to content

Commit d34e20b

Browse files
committed
Allow for management of defaultchallengereviewers by admins
1 parent 76506ca commit d34e20b

File tree

4 files changed

+705
-0
lines changed

4 files changed

+705
-0
lines changed

app-constants.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ const Topics = {
6565
ChallengeTimelineTemplateDeleted: "challenge.action.challenge.timeline.deleted",
6666
ChallengePhaseUpdated: "challenge.action.phase.updated",
6767
ChallengePhaseDeleted: "challenge.action.phase.deleted",
68+
DefaultChallengeReviewerCreated: "challenge.action.default.reviewer.created",
69+
DefaultChallengeReviewerUpdated: "challenge.action.default.reviewer.updated",
70+
DefaultChallengeReviewerDeleted: "challenge.action.default.reviewer.deleted",
6871
// Self Service topics
6972
Notifications: "notifications.action.create",
7073
};
@@ -95,6 +98,9 @@ const DisabledTopics = [
9598
Topics.ChallengeTimelineTemplateDeleted,
9699
Topics.ChallengePhaseUpdated,
97100
Topics.ChallengePhaseDeleted,
101+
Topics.DefaultChallengeReviewerCreated,
102+
Topics.DefaultChallengeReviewerUpdated,
103+
Topics.DefaultChallengeReviewerDeleted,
98104
];
99105

100106
const challengeTextSortField = {
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
/**
2+
* Controller for default challenge reviewer endpoints.
3+
*/
4+
const HttpStatus = require("http-status-codes");
5+
const service = require("../services/DefaultChallengeReviewerService");
6+
const helper = require("../common/helper");
7+
8+
/**
9+
* Search default challenge reviewers.
10+
*
11+
* @param {Object} req the request
12+
* @param {Object} res the response
13+
*/
14+
async function searchDefaultChallengeReviewers(req, res) {
15+
const result = await service.searchDefaultChallengeReviewers(req.query);
16+
helper.setResHeaders(req, res, result);
17+
res.send(result.result);
18+
}
19+
20+
/**
21+
* Create default challenge reviewer.
22+
*
23+
* @param {Object} req the request
24+
* @param {Object} res the response
25+
*/
26+
async function createDefaultChallengeReviewer(req, res) {
27+
const result = await service.createDefaultChallengeReviewer(req.authUser, req.body);
28+
res.status(HttpStatus.CREATED).send(result);
29+
}
30+
31+
/**
32+
* Get default challenge reviewer.
33+
*
34+
* @param {Object} req the request
35+
* @param {Object} res the response
36+
*/
37+
async function getDefaultChallengeReviewer(req, res) {
38+
const result = await service.getDefaultChallengeReviewer(
39+
req.params.defaultChallengeReviewerId
40+
);
41+
res.send(result);
42+
}
43+
44+
/**
45+
* Fully update default challenge reviewer.
46+
*
47+
* @param {Object} req the request
48+
* @param {Object} res the response
49+
*/
50+
async function fullyUpdateDefaultChallengeReviewer(req, res) {
51+
const result = await service.fullyUpdateDefaultChallengeReviewer(
52+
req.authUser,
53+
req.params.defaultChallengeReviewerId,
54+
req.body
55+
);
56+
res.send(result);
57+
}
58+
59+
/**
60+
* Partially update default challenge reviewer.
61+
*
62+
* @param {Object} req the request
63+
* @param {Object} res the response
64+
*/
65+
async function partiallyUpdateDefaultChallengeReviewer(req, res) {
66+
const result = await service.partiallyUpdateDefaultChallengeReviewer(
67+
req.authUser,
68+
req.params.defaultChallengeReviewerId,
69+
req.body
70+
);
71+
res.send(result);
72+
}
73+
74+
/**
75+
* Delete default challenge reviewer.
76+
*
77+
* @param {Object} req the request
78+
* @param {Object} res the response
79+
*/
80+
async function deleteDefaultChallengeReviewer(req, res) {
81+
const result = await service.deleteDefaultChallengeReviewer(
82+
req.params.defaultChallengeReviewerId
83+
);
84+
res.send(result);
85+
}
86+
87+
module.exports = {
88+
searchDefaultChallengeReviewers,
89+
createDefaultChallengeReviewer,
90+
getDefaultChallengeReviewer,
91+
fullyUpdateDefaultChallengeReviewer,
92+
partiallyUpdateDefaultChallengeReviewer,
93+
deleteDefaultChallengeReviewer,
94+
};
95+

src/routes.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,52 @@ module.exports = {
316316
scopes: [DELETE, ALL],
317317
},
318318
},
319+
"/default-challenge-reviewers": {
320+
get: {
321+
controller: "DefaultChallengeReviewerController",
322+
method: "searchDefaultChallengeReviewers",
323+
auth: "jwt",
324+
access: [constants.UserRoles.Admin],
325+
scopes: [READ, ALL],
326+
},
327+
post: {
328+
controller: "DefaultChallengeReviewerController",
329+
method: "createDefaultChallengeReviewer",
330+
auth: "jwt",
331+
access: [constants.UserRoles.Admin],
332+
scopes: [CREATE, ALL],
333+
},
334+
},
335+
"/default-challenge-reviewers/:defaultChallengeReviewerId": {
336+
get: {
337+
controller: "DefaultChallengeReviewerController",
338+
method: "getDefaultChallengeReviewer",
339+
auth: "jwt",
340+
access: [constants.UserRoles.Admin],
341+
scopes: [READ, ALL],
342+
},
343+
put: {
344+
controller: "DefaultChallengeReviewerController",
345+
method: "fullyUpdateDefaultChallengeReviewer",
346+
auth: "jwt",
347+
access: [constants.UserRoles.Admin],
348+
scopes: [UPDATE, ALL],
349+
},
350+
patch: {
351+
controller: "DefaultChallengeReviewerController",
352+
method: "partiallyUpdateDefaultChallengeReviewer",
353+
auth: "jwt",
354+
access: [constants.UserRoles.Admin],
355+
scopes: [UPDATE, ALL],
356+
},
357+
delete: {
358+
controller: "DefaultChallengeReviewerController",
359+
method: "deleteDefaultChallengeReviewer",
360+
auth: "jwt",
361+
access: [constants.UserRoles.Admin],
362+
scopes: [DELETE, ALL],
363+
},
364+
},
319365
"/timeline-templates": {
320366
get: {
321367
controller: "TimelineTemplateController",

0 commit comments

Comments
 (0)