synt_backend
Version:
Synt light-weight node backend service
116 lines (90 loc) • 2.59 kB
JavaScript
const express = require("express");
const router = express.Router();
const userHelper = require("../helpers/user");
import * as ValidationHelper from "../helpers/validations";
import {
getDefaultReminderById,
getDefaultReminders,
postDefaultReminder,
} from "../database/defaultReminders";
function validateUserAndVme(next) {
return async (req, res) => {
const { t } = req;
const user = await userHelper.getAuthUser(req);
if (user) {
// verify vme and get vme
let VmeValidation = await ValidationHelper.validateVme(t, user.VMEId); //TODO: Validate user roles
if (!VmeValidation.success) {
return res.json(VmeValidation);
}
const { VME } = VmeValidation;
return await next(req, res, { user, VME });
}
return res.json({
success: false,
});
};
}
const getReminder = validateUserAndVme(async (req, res) => {
const { ReminderId } = req.params;
const Reminder = await getDefaultReminderById({
reminderId: ReminderId,
});
return res.json({ success: true, Reminder });
});
const getReminders = validateUserAndVme(async (req, res) => {
const Reminders = await getDefaultReminders();
return res.json({ success: true, Reminders });
});
const deleteReminder = validateUserAndVme(async (req, res) => {
const { ReminderId } = req.params;
const Reminder = await getDefaultReminderById({
reminderId: ReminderId,
});
if (Reminder) {
await Reminder.destroy();
}
return res.json({ success: true, Reminder });
});
const postReminder = validateUserAndVme(async (req, res) => {
const { t } = req;
const { id, Label, recipient, dateOfReceiving } = req.body;
let errors = {};
if (!Label) {
errors.name = t(
"api.reminders.errors.messageRequired",
"Message is required"
);
}
if (!recipient) {
errors.recipient = t(
"api.reminders.errors.recipientRequired",
"Recipient is required"
);
}
if (!dateOfReceiving) {
errors.dateOfReceiving = t(
"api.reminders.errors.dateOfReceivingRequired",
"Receiving date is required"
);
}
if (Object.keys(errors).length > 0) {
return res.json({
success: false,
errors,
});
}
const Reminder = await postDefaultReminder({
dateOfReceiving,
label: Label,
recipient,
reminderId: id,
});
return res.json({ success: true, Reminder });
});
// routes
router.get("/:ReminderId", getReminder);
router.get("/", getReminders);
router.post("/", postReminder);
router.delete("/:ReminderId", deleteReminder);
module.exports = router;