diff --git a/controllers/eventController.js b/controllers/eventController.js index 78ba934..ac8c7dc 100644 --- a/controllers/eventController.js +++ b/controllers/eventController.js @@ -1,13 +1,14 @@ const { Event, Institution, EventPlace, ContactPerson, EventType, EventContactPerson, sequelize } = require('../models'); -const { Op } = require('sequelize'); -const { startOfDay } = require('date-fns'); +const { Op, fn, col, where: sequelizeWhere } = require('sequelize'); +const { format, startOfDay } = require('date-fns'); function buildUpcomingWhere() { - const today = startOfDay(new Date()); + // Compare on date-only level to avoid timezone/DATETIME offset issues. + const todayDate = format(startOfDay(new Date()), 'yyyy-MM-dd'); return { [Op.or]: [ // Fixed-date events: only today or future. - { date: { [Op.gte]: today } }, + sequelizeWhere(fn('DATE', col('date')), { [Op.gte]: todayDate }), // Recurring/undated events: date is null (dayOfWeek may be set). { date: { [Op.eq]: null } }, ], @@ -72,7 +73,7 @@ const filterEvents = async (req, res) => { const events = await Event.findAll({ where: { alsoOnHomepage: 1, - date: { [Op.gte]: startOfDay(new Date()) } + ...buildUpcomingWhere(), }, include: [ { model: Institution, as: 'institution' },