Skip to content

Commit 9508860

Browse files
author
Joshua Zhou
committed
added team checkin form status to settings
1 parent 2d5bd65 commit 9508860

5 files changed

Lines changed: 42 additions & 3 deletions

File tree

middlewares/settings.middleware.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,11 @@ async function updateSettings(req, res, next) {
6464
* @description Confirms that openTime < closeTime < confirmTime
6565
*/
6666
function confirmValidPatch(req, res, next) {
67+
if (!req.body.settingsDetails.openTime &&
68+
!req.body.settingsDetails.closeTime &&
69+
!req.body.settingsDetails.confirmTime) {
70+
return next();
71+
}
6772
const openTime = new Date(req.body.settingsDetails.openTime);
6873
const closeTime = new Date(req.body.settingsDetails.closeTime);
6974
const confirmTime = new Date(req.body.settingsDetails.confirmTime);
@@ -126,9 +131,35 @@ async function confirmAppsOpen(req, res, next) {
126131
}
127132
}
128133

134+
/**
135+
* @function confirmCheckinOpen
136+
* @param {*} req
137+
* @param {*} res
138+
* @param {*} next
139+
* @description Only succeeds if check-in is currently open
140+
*/
141+
async function confirmCheckinOpen(req, res, next) {
142+
const settings = await Services.Settings.getSettings();
143+
if (!settings) {
144+
return next({
145+
status: 500,
146+
message: Constants.Error.GENERIC_500_MESSAGE
147+
});
148+
}
149+
if (settings.checkinOpen) {
150+
return next();
151+
}
152+
153+
return next({
154+
status: 403,
155+
message: Constants.Error.SETTINGS_403_MESSAGE
156+
});
157+
}
158+
129159
module.exports = {
130160
parsePatch: parsePatch,
131161
confirmValidPatch: confirmValidPatch,
162+
confirmCheckinOpen: Middleware.Util.asyncMiddleware(confirmCheckinOpen),
132163
confirmAppsOpen: Middleware.Util.asyncMiddleware(confirmAppsOpen),
133164
updateSettings: Middleware.Util.asyncMiddleware(updateSettings),
134165
getSettings: Middleware.Util.asyncMiddleware(getSettings)

middlewares/validators/settings.validator.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ module.exports = {
66
VALIDATOR.dateValidator("body", "openTime", true),
77
VALIDATOR.dateValidator("body", "closeTime", true),
88
VALIDATOR.dateValidator("body", "confirmTime", true),
9-
VALIDATOR.booleanValidator("body", "isRemote", true)
9+
VALIDATOR.booleanValidator("body", "isRemote", true),
10+
VALIDATOR.booleanValidator("body", "checkinOpen", true),
1011
]
1112
};

models/settings.model.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ const settings = new mongoose.Schema({
1717
isRemote: {
1818
type: Boolean,
1919
default: false
20+
},
21+
checkinOpen: {
22+
type: Boolean,
23+
default: false
2024
}
2125
});
2226

routes/api/checkin.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ const Middleware = {
99
Auth: require("../../middlewares/auth.middleware"),
1010
Validators: {
1111
checkinValidator: require("../../middlewares/validators/checkin.validator")
12-
}
12+
},
13+
Settings: require("../../middlewares/settings.middleware"),
1314
};
1415

1516
/**
@@ -36,6 +37,7 @@ const Middleware = {
3637
router.post(
3738
"/checkin",
3839
Middleware.Auth.ensureAuthenticated(),
40+
Middleware.Settings.confirmCheckinOpen,
3941
Middleware.Validators.checkinValidator,
4042
Controllers.Checkin.submitCheckin
4143
);

routes/api/hacker.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const Middleware = {
1515
Hacker: require("../../middlewares/hacker.middleware"),
1616
Auth: require("../../middlewares/auth.middleware"),
1717
Search: require("../../middlewares/search.middleware"),
18-
Settings: require("../../middlewares/settings.middleware")
18+
Settings: require("../../middlewares/settings.middleware"),
1919
};
2020
const Services = {
2121
Hacker: require("../../services/hacker.service"),
@@ -416,6 +416,7 @@ module.exports = {
416416
Middleware.Auth.ensureAuthenticated(),
417417
Middleware.Auth.ensureAuthorized([Services.Hacker.findById]),
418418

419+
Middleware.Settings.confirmCheckinOpen,
419420
Middleware.parseBody.middleware,
420421
Middleware.Hacker.parsePatch,
421422
Middleware.Hacker.validateConfirmedStatusFromHackerId,

0 commit comments

Comments
 (0)