diff --git a/backend/controllers/events.js b/backend/controllers/events.js
index bc4f74d..c84421e 100644
--- a/backend/controllers/events.js
+++ b/backend/controllers/events.js
@@ -4,12 +4,34 @@ var mongoose = require("mongoose");
var Event = require("../models/event");
var { callModel: Call, callSchema } = require("../models/call");
-/*
-var oids = [];
-ids.forEach(function(item){
-oids.push(new ObjectId(item));
-});
-*/
+exports.getEvent = async function (req, res, next) {
+
+ try {
+ var objectId = req.params.id;
+ const event = await Event.findById(objectId).exec();
+ res.contentType('json');
+ res.send(JSON.stringify(event));
+ }
+ catch (err) {
+ console.error(err);
+ res.status(500);
+ res.send(`Error fetching Event ${req.params.id}: ` + err);
+ }
+}
+
+exports.getEvents = async function (req, res, next) {
+ try {
+ let events = await Event.find({},["title", "description", "startTime", "endTime", "expireTime", "numCalls", "createdAt"]).exec();
+ res.contentType('json');
+ res.send(JSON.stringify(events));
+ }
+ catch (err) {
+ console.error(err);
+ res.status(500);
+ res.send("Error fetching Events" + err);
+ }
+}
+
const compareCalls = (a, b) => {
const aTimestamp = new Date(a.time).getTime()
const bTimestamp = new Date(b.time).getTime()
@@ -45,8 +67,8 @@ exports.addNewEvent = async function (req, res, next) {
res.send("Not all of the Calls were found");
}
calls = calls.sort(compareCalls);
- event.startTime = new Date(calls[0].time).getTime();
- event.endTime = new Date(calls[calls.length - 1].time).getTime();
+ event.startTime = new Date(calls[0].time);
+ event.endTime = new Date(calls[calls.length - 1].time);
event.expireTime = event.startTime;
calls.forEach((call) => {
if (event.shortNames.indexOf(call.shortName) === -1) {
@@ -54,6 +76,7 @@ exports.addNewEvent = async function (req, res, next) {
}
});
event.calls = calls;
+ event.numCalls = calls.length;
console.log(await event.save());
res.contentType('json');
res.send(JSON.stringify({
diff --git a/backend/index.js b/backend/index.js
index ac3ae85..26f2b42 100644
--- a/backend/index.js
+++ b/backend/index.js
@@ -212,7 +212,8 @@ app.get('/:shortName/groups', groups.get_groups);
/*------ EVENTS ----------*/
app.post('/events', events.addNewEvent);
-
+app.get('/events', events.getEvents);
+app.get('/events/:id', events.getEvent);
/*------ STATS ----------*/
app.get('/:shortName/errors', stats.get_errors);
diff --git a/backend/models/event.js b/backend/models/event.js
index 232ec2b..516a5e2 100644
--- a/backend/models/event.js
+++ b/backend/models/event.js
@@ -2,18 +2,22 @@ var mongoose = require('mongoose');
var {callSchema} = require('./call');
console.log(callSchema)
-var groupSchema = mongoose.Schema({
+var eventSchema = mongoose.Schema({
title: String,
description: String,
- expireTime: Number,
- startTime: Number,
- endTime: Number,
+ expireTime: Date,
+ startTime: Date,
+ endTime: Date,
shortNames: [String],
- calls: [callSchema]
+ calls: [callSchema],
+ numCalls: Number
},
{
timestamps: true
});
-
-module.exports = mongoose.model('Event', groupSchema);
+// add virtual if You want
+eventSchema.virtual('callCount').get(function () {
+ return this.calls.length;
+});
+module.exports = mongoose.model('Event', eventSchema);
diff --git a/frontend/src/Call/Calls.js b/frontend/src/Call/Calls.js
index 9ad7793..8155a20 100644
--- a/frontend/src/Call/Calls.js
+++ b/frontend/src/Call/Calls.js
@@ -366,6 +366,7 @@ function Calls(props) {
Home
Systems
+ Events
About