Many an update!
This commit is contained in:
parent
85195d6c7a
commit
d588c49946
35 changed files with 3528 additions and 1142 deletions
|
|
@ -1,53 +1,53 @@
|
|||
import Event from '../../models/event.js'
|
||||
import { connectDB } from '../../utils/mongoose.js'
|
||||
import Event from "../../models/event.js";
|
||||
import { connectDB } from "../../utils/mongoose.js";
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
try {
|
||||
// Ensure database connection
|
||||
await connectDB()
|
||||
await connectDB();
|
||||
// Get query parameters for filtering
|
||||
const query = getQuery(event)
|
||||
const filter = {}
|
||||
|
||||
const query = getQuery(event);
|
||||
const filter = {};
|
||||
|
||||
// Only show visible events on public calendar (unless specifically requested)
|
||||
if (query.includeHidden !== 'true') {
|
||||
filter.isVisible = true
|
||||
if (query.includeHidden !== "true") {
|
||||
filter.isVisible = true;
|
||||
}
|
||||
|
||||
|
||||
// Filter for upcoming events only if requested
|
||||
if (query.upcoming === 'true') {
|
||||
filter.startDate = { $gte: new Date() }
|
||||
if (query.upcoming === "true") {
|
||||
filter.startDate = { $gte: new Date() };
|
||||
}
|
||||
|
||||
|
||||
// Filter by event type if provided
|
||||
if (query.eventType) {
|
||||
filter.eventType = query.eventType
|
||||
filter.eventType = query.eventType;
|
||||
}
|
||||
|
||||
|
||||
// Filter for members-only events
|
||||
if (query.membersOnly !== undefined) {
|
||||
filter.membersOnly = query.membersOnly === 'true'
|
||||
filter.membersOnly = query.membersOnly === "true";
|
||||
}
|
||||
|
||||
|
||||
// Fetch events from database
|
||||
const events = await Event.find(filter)
|
||||
.sort({ startDate: 1 })
|
||||
.select('-registrations') // Don't expose registration details in list view
|
||||
.lean()
|
||||
|
||||
.select("-registrations") // Don't expose registration details in list view
|
||||
.lean();
|
||||
|
||||
// Add computed fields
|
||||
const eventsWithMeta = events.map(event => ({
|
||||
const eventsWithMeta = events.map((event) => ({
|
||||
...event,
|
||||
id: event._id.toString(),
|
||||
registeredCount: event.registrations?.length || 0
|
||||
}))
|
||||
|
||||
return eventsWithMeta
|
||||
registeredCount: event.registrations?.length || 0,
|
||||
}));
|
||||
|
||||
return eventsWithMeta;
|
||||
} catch (error) {
|
||||
console.error('Error fetching events:', error)
|
||||
console.error("Error fetching events:", error);
|
||||
throw createError({
|
||||
statusCode: 500,
|
||||
statusMessage: 'Failed to fetch events'
|
||||
})
|
||||
statusMessage: "Failed to fetch events",
|
||||
});
|
||||
}
|
||||
})
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue