summaryrefslogtreecommitdiff
path: root/src/helpers.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/helpers.js')
-rw-r--r--src/helpers.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/helpers.js b/src/helpers.js
new file mode 100644
index 0000000..9b7559f
--- /dev/null
+++ b/src/helpers.js
@@ -0,0 +1,59 @@
+const domain = require("./config/domain.js").domain;
+const siteName = require("./config/domain.js").sitename;
+
+const mongoose = require("mongoose");
+const Log = mongoose.model("Log");
+var moment = require("moment-timezone");
+const icalGenerator = require("ical-generator");
+
+// LOGGING
+
+function addToLog(process, status, message) {
+ let logEntry = new Log({
+ status: status,
+ process: process,
+ message: message,
+ timestamp: moment(),
+ });
+ logEntry.save().catch(() => {
+ console.log("Error saving log entry!");
+ });
+}
+
+function exportIcal(events, calendarName) {
+ // Create a new icalGenerator... generator
+ const cal = icalGenerator({
+ name: calendarName || siteName,
+ x: {
+ "X-WR-CALNAME": calendarName || siteName,
+ },
+ });
+ if (events instanceof Array === false) {
+ events = [events];
+ }
+ events.forEach((event) => {
+ // Add the event to the generator
+ cal.createEvent({
+ start: moment.tz(event.start, event.timezone),
+ end: moment.tz(event.end, event.timezone),
+ timezone: event.timezone,
+ timestamp: moment(),
+ summary: event.name,
+ description: event.description,
+ organizer: {
+ name: event.hostName || "Anonymous",
+ email: event.creatorEmail || "anonymous@anonymous.com",
+ },
+ location: event.location,
+ url: "https://" + domain + "/" + event.id,
+ });
+ });
+ // Stringify it!
+ const string = cal.toString();
+ return string;
+}
+
+module.exports = {
+ addToLog,
+ exportIcal,
+};