Implement a few more routes, fix existing imports due to syntax highlight breakage
1 files changed, 25 insertions, 1 deletions
diff --git a/src/api/routes/budgetRoutes.js b/src/api/routes/budgetRoutes.js
index 4ad4897..a7ea097 100644
--- a/src/api/routes/budgetRoutes.js
+++ b/src/api/routes/budgetRoutes.js
@@ -20,6 +20,7 @@ export const getBudgetByUserRoute = {
methods: {
get: new RouteMethod({
middlewares: [requireMonitor],
+ description: 'Get the budget for a monitored user',
async method(req, res) {
if (req.user.type !== UserType.ADMIN) {
if (!req.user.monitoredUsers.includes(req.params.id))
@@ -43,8 +44,31 @@ export const addBudgetByUserRoute = {
path: '/budget/:id/add',
methods: {
get: new RouteMethod({
+ description: 'Add budget to a monitored user',
middlewares: [requireMonitor],
- async method(req, res) {}
+ async method(req, res) {
+ if (req.user.type !== UserType.ADMIN) {
+ if (!req.user.monitoredUsers.includes(req.params.id))
+ throw new SafeNSoundError({
+ errCode: 'UNAUTHORIZED',
+ message:
+ "You do not have permission to add budget to this user's account."
+ });
+ }
+
+ const user = await getUserById(req.params.id).exec();
+ const amount = parseFloat(req.query.amount);
+ if (isNaN(amount) || amount <= 0) {
+ throw new SafeNSoundError({
+ errCode: 'INVALID_AMOUNT',
+ message: 'Invalid amount specified.'
+ });
+ }
+
+ user.balance += amount;
+ await user.save();
+ res.send({ balance: user.balance });
+ }
})
}
};
|