60 lines
1.4 KiB
JavaScript
60 lines
1.4 KiB
JavaScript
import Event from "../../models/event";
|
|
import Member from "../../models/member";
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const query = getQuery(event);
|
|
const { memberId } = query;
|
|
|
|
if (!memberId) {
|
|
throw createError({
|
|
statusCode: 400,
|
|
statusMessage: "Member ID is required",
|
|
});
|
|
}
|
|
|
|
try {
|
|
// Verify member exists
|
|
const member = await Member.findById(memberId);
|
|
if (!member) {
|
|
throw createError({
|
|
statusCode: 404,
|
|
statusMessage: "Member not found",
|
|
});
|
|
}
|
|
|
|
// Find all events where the user is registered
|
|
// Filter out cancelled events and only show future events
|
|
const now = new Date();
|
|
|
|
const events = await Event.find({
|
|
"registrations.memberId": memberId,
|
|
isCancelled: { $ne: true },
|
|
startDate: { $gte: now },
|
|
})
|
|
.select(
|
|
"title slug description startDate endDate location featureImage maxAttendees registeredCount",
|
|
)
|
|
.sort({ startDate: 1 })
|
|
.limit(10);
|
|
|
|
console.log(
|
|
`Found ${events.length} registered events for member ${memberId}`,
|
|
);
|
|
|
|
return {
|
|
events,
|
|
count: events.length,
|
|
};
|
|
} catch (error) {
|
|
console.error("Error fetching member events:", error);
|
|
|
|
if (error.statusCode) {
|
|
throw error;
|
|
}
|
|
|
|
throw createError({
|
|
statusCode: 500,
|
|
statusMessage: "Failed to fetch registered events",
|
|
});
|
|
}
|
|
});
|