67 lines
1.4 KiB
JavaScript
67 lines
1.4 KiB
JavaScript
const express = require("express");
|
|
const Event = require("../models/Event");
|
|
const auth = require("../middleware/auth");
|
|
|
|
const router = express.Router();
|
|
|
|
// Get all events
|
|
router.get("/", async (req, res) => {
|
|
try {
|
|
const events = await Event.find();
|
|
res.json(events);
|
|
} catch (err) {
|
|
console.error(err.message);
|
|
res.status(500).send("Server error");
|
|
}
|
|
});
|
|
|
|
// Create an event
|
|
router.post("/", auth, async (req, res) => {
|
|
const { title, description, date, location } = req.body;
|
|
|
|
try {
|
|
const newEvent = new Event({
|
|
title,
|
|
description,
|
|
date,
|
|
location,
|
|
});
|
|
|
|
const event = await newEvent.save();
|
|
res.json(event);
|
|
} catch (err) {
|
|
console.error(err.message);
|
|
res.status(500).send("Server error");
|
|
}
|
|
});
|
|
|
|
// RSVP to an event
|
|
router.put("/rsvp/:id", auth, async (req, res) => {
|
|
try {
|
|
const event = await Event.findById(req.params.id);
|
|
if (!event) {
|
|
return res.status(404).json({ msg: "Event not found" });
|
|
}
|
|
|
|
// Check if the user has already RSVPed
|
|
if (
|
|
event.participants.filter(
|
|
(participant) => participant.toString() === req.user.id,
|
|
).length > 0
|
|
) {
|
|
return res.status(400).json({ msg: "Already RSVPed" });
|
|
}
|
|
|
|
event.participants.unshift(req.user.id);
|
|
|
|
await event.save();
|
|
|
|
res.json(event.participants);
|
|
} catch (err) {
|
|
console.error(err.message);
|
|
res.status(500).send("Server error");
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|