diff --git a/src/routes/index.ts b/src/routes/index.ts index 96fda6b..437759f 100644 --- a/src/routes/index.ts +++ b/src/routes/index.ts @@ -5,6 +5,7 @@ import { eventsRoute } from './events'; import { profileRoute } from './profile'; import { usersRoute } from './users'; import { checkpointsRoute } from './checkpoints'; +import { vintageRoute } from './vintage'; export const routes = express.Router(); @@ -13,6 +14,7 @@ routes.use('/events', eventsRoute); routes.use('/profile', isAuthenticated, profileRoute); routes.use('/users', isAuthenticated, usersRoute); routes.use('/checkpoints', checkpointsRoute); +routes.use('/vintage', vintageRoute); routes.use((_req, res) => { res.sendStatus(404); diff --git a/src/routes/vintage.ts b/src/routes/vintage.ts new file mode 100644 index 0000000..57d6930 --- /dev/null +++ b/src/routes/vintage.ts @@ -0,0 +1,38 @@ +import express from 'express'; +import User from '../models/user'; +import isAuthenticated from '../middlewares/isAuthenticated'; +import isOfficer from '../middlewares/isOfficer'; + +export const vintageRoute = express.Router(); + +vintageRoute.patch( + '/redeem', + isAuthenticated, + isOfficer, + async (req, res, next) => { + console.log('req.user:', req.user); + const { targetNetId } = req.body; + + if (!targetNetId) { + return res.status(400).send({ message: 'Missing targetNetId' }); + } + + try { + const user = await User.findOneAndUpdate( + { netId: targetNetId }, + { $inc: { n_checkpoints: 1 } }, + { new: true } + ); + + if (!user) { + return res.status(404).send({ message: 'User not found' }); + } + + return res + .status(200) + .send({ message: 'Checkpoint redeemed successfully', user }); + } catch (err) { + return next(err); + } + } +); diff --git a/src/server.ts b/src/server.ts index b429117..e83c2e9 100644 --- a/src/server.ts +++ b/src/server.ts @@ -6,6 +6,7 @@ import MongoStore from 'connect-mongo'; import passport from 'passport'; import session from 'express-session'; import { routes } from './routes'; +//import { vintageRoute } from './routes/vintage'; const app = express(); const port = parseInt(process.env.PORT); @@ -33,6 +34,7 @@ app.use(passport.session()); app.use('/', routes); +//app.use('/vintage', vintageRoute); app.listen(port, '0.0.0.0', () => console.log(`Server is listening on port ${port}`) );