diff --git a/backend/events b/backend/events index 0dad0d39..80e93362 160000 --- a/backend/events +++ b/backend/events @@ -1 +1 @@ -Subproject commit 0dad0d39ded991c3698d5c00718b1276018adc68 +Subproject commit 80e93362062d66660b16f67a52a499de88255c51 diff --git a/backend/routes/orgRoutes.js b/backend/routes/orgRoutes.js index 67a9ad8a..2c193c5c 100644 --- a/backend/routes/orgRoutes.js +++ b/backend/routes/orgRoutes.js @@ -938,7 +938,50 @@ router.post('/:orgId/edit-member-form', verifyToken, requireMemberManagement(), message: error.message }); } -}) +}); + +router.get('/:orgId/search-events', async (req, res) => { + console.log('GET: /search-events'); + //need to be able to search by name and description *start with this --commit after this + //need to be able to search by time range + //need to be able to search by type + //need to be able to search by location + try{ + const { Event } = getModels(req, 'Event'); + let { orgId } = req.params; + let { query } = req.query; + console.log(query); + + const searchFilter = { + hostingId: orgId, + hostingType: 'Org', + $or: [ + { name: { $regex: query, $options: 'i' } }, + { description: { $regex: query, $options: 'i' } }, + { type: { $regex: query, $options: 'i' } }, + { location: { $regex: query, $options: 'i' } } + ] + }; + + if (!isNaN(new Date(query).getTime())) { + searchFilter.$or.push({ start_time: { $gte: new Date(query) } }); + } + + + const events = await Event.find(searchFilter); + console.log(events); + return res.status(200).json({success: true, events, message: "Events searched successfully"}); + + + } catch (error) { + console.log(`GET: /search-events failed`, error); + return res.status(500).json({ + success: false, + message: "Error searching events", + error: error.message, + }); + } +});