diff --git a/lib/api.js b/lib/api.js index e4b2233..c945f6f 100644 --- a/lib/api.js +++ b/lib/api.js @@ -47,15 +47,6 @@ export async function getMemberActivity(req, res) { res.send(activity) } -export async function getMemberPresences(req, res) { - const activity = await Activity.getMemberActivity(req.rawUser._id) - res.send(activity.map(item => ({ - date: item.date, - amount: item.value, - type: item.type === 'subscription' ? 'A' : 'T' - }))) -} - export async function getMemberSubscriptions(req, res) { const subscriptions = await Subscription.getMemberSubscriptions(req.rawUser._id) res.send(subscriptions) diff --git a/lib/services/calendar.js b/lib/services/calendar.js index 64c46fc..846bca0 100644 --- a/lib/services/calendar.js +++ b/lib/services/calendar.js @@ -1,4 +1,4 @@ -import {add, sub} from 'date-fns' +import {add, isAfter, sub} from 'date-fns' import {zonedTimeToUtc} from 'date-fns-tz' import got from 'got' import {uniq} from 'lodash-es' @@ -56,19 +56,24 @@ const fetchAmourFoodEvents = async () => { } }).json() - return events.map(event => { - const eventDay = zonedTimeToUtc(event.time * 1000, 'Europe/Paris') - return { - title: event.details?.plat_viande || event.nom, - description: event.description.replaceAll(/<[^>]*>?/gm, ''), // Strip HTML tags - start: add(eventDay, {hours: 12}).toISOString(), - end: add(eventDay, {hours: 13, minutes: 30}).toISOString(), - location: 'L\'Amour Food, 7 Av. de Blida, 57000 Metz', - urls: [event.disponible && event.permalink].filter(Boolean), - pictures: [event.illustration], - calendar: 'AMOUR_FOOD' - } - }) + return events + .filter(event => { + const eventDay = zonedTimeToUtc(event.time * 1000, 'Europe/Paris') + return isAfter(eventDay, sub(new Date(), {months: 1})) + }) + .map(event => { + const eventDay = zonedTimeToUtc(event.time * 1000, 'Europe/Paris') + return { + title: event.details?.plat_viande || event.nom, + description: event.description.replaceAll(/<[^>]*>?/gm, ''), // Strip HTML tags + start: add(eventDay, {hours: 12}).toISOString(), + end: add(eventDay, {hours: 13, minutes: 30}).toISOString(), + location: 'L\'Amour Food, 7 Av. de Blida, 57000 Metz', + urls: [event.disponible && event.permalink].filter(Boolean), + pictures: [event.illustration], + calendar: 'AMOUR_FOOD' + } + }) } /** diff --git a/server.js b/server.js index 60175b5..490837e 100644 --- a/server.js +++ b/server.js @@ -27,7 +27,6 @@ import { getAllMembers, getMemberInfos, getMemberActivity, - getMemberPresences, getMemberTickets, getMemberSubscriptions, getMemberMemberships, @@ -83,25 +82,6 @@ app.param('userId', w(async (req, res, next) => { next() })) -async function resolveUserUsingEmail(req, res, next) { - if (req.rawUser) { - return next() - } - - const email = req.method === 'POST' ? req.body.email : req.query.email - if (!email) { - throw createHttpError(400, 'Missing email') - } - - req.rawUser = await Member.getUserByEmail(email) - - if (!req.rawUser) { - throw createHttpError(404, 'User not found') - } - - next() -} - /* Public access */ app.use('/stats', statsRoutes) @@ -122,14 +102,6 @@ app.get('/api/voting-members', w(multiAuth), w(ensureAdmin), w(getVotingMembers) app.get('/api/users-stats', w(multiAuth), w(ensureAdmin), w(getUsersStats)) app.get('/api/current-members', w(multiAuth), w(getCurrentMembers)) -/* General purpose (legacy) */ - -app.get('/api/user-stats', w(ensureToken), w(resolveUserUsingEmail), w(getMemberInfos)) -app.post('/api/user-stats', express.urlencoded({extended: false}), w(ensureToken), w(resolveUserUsingEmail), w(getMemberInfos)) -app.get('/api/members/:userId/presences', w(multiAuth), w(getMemberPresences)) -app.get('/api/user-presences', w(ensureToken), w(resolveUserUsingEmail), w(getMemberPresences)) -app.get('/api/current-users', w(ensureToken), w(getCurrentMembers)) - /* Presences */ app.post('/api/heartbeat', express.urlencoded({extended: false}), w(ensureToken), w(heartbeat)) @@ -148,6 +120,9 @@ app.post('/api/interphone', w(multiAuth), w(async (req, res) => { throw createHttpError(403, 'Forbidden') } + // At least log who is pressing intercom button + console.log(`${req.user?.email || 'Someone'} is pressing intercom button`) + await pressIntercomButton() const now = new Date() res.send({ @@ -162,6 +137,9 @@ app.post('/api/parking', w(multiAuth), w(async (req, res) => { throw createHttpError(403, 'Forbidden') } + // At least log who is opening parking gate + console.log(`${req.user?.email || 'Someone'} is opening parking gate`) + await pressRemoteButton() const now = new Date() res.send({