MCPcopy Create free account
hub / github.com/RealDevSquad/website-backend / validateUserStatusData

Function validateUserStatusData

middlewares/validators/userStatus.js:4–44  ·  view source on GitHub ↗
(todaysTime, req, res, next)

Source from the content-addressed store, hash-verified

2const { userState, CANCEL_OOO } = require("../../constants/userStatus");
3
4const validateUserStatusData = async (todaysTime, req, res, next) => {
5 const validUserStates = [userState.ONBOARDING];
6
7 const statusSchema = Joi.object({
8 currentStatus: Joi.object().keys({
9 state: Joi.string()
10 .trim()
11 .valid(...validUserStates)
12 .error(new Error(`Invalid State. the acceptable states are ${validUserStates}`)),
13 updatedAt: Joi.number().required(),
14 from: Joi.number()
15 .min(todaysTime)
16 .required()
17 .error(new Error(`The 'from' field must have a value that is either today or a date that follows today.`)),
18 }),
19 monthlyHours: Joi.object().keys({
20 committed: Joi.number().required(),
21 updatedAt: Joi.number().required(),
22 }),
23 });
24
25 const cancelOooSchema = Joi.object()
26 .keys({
27 cancelOoo: Joi.boolean().valid(true).required(),
28 })
29 .unknown(false);
30
31 let schema;
32 try {
33 if (Object.keys(req.body).includes(CANCEL_OOO)) {
34 schema = cancelOooSchema;
35 } else {
36 schema = statusSchema;
37 }
38 await schema.validateAsync(req.body);
39 next();
40 } catch (error) {
41 logger.error(`Error validating UserStatus ${error}`);
42 res.boom.badRequest(error);
43 }
44};
45
46const validateUserStatus = (req, res, next) => {
47 const today = new Date();

Callers 1

validateUserStatusFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected