summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorUdo Walter2019-04-16 04:40:48 +0200
committerUdo Walter2019-04-16 04:40:48 +0200
commitc2b52afa3f95f77e9f71d0ca0aa0a0c6424bf7bd (patch)
tree97fa78d224f44e5b30a94bba3e1e30086e8c3b8f /server
parent[server] Small bug fixes on the production server (diff)
downloadbas-c2b52afa3f95f77e9f71d0ca0aa0a0c6424bf7bd.tar.gz
bas-c2b52afa3f95f77e9f71d0ca0aa0a0c6424bf7bd.tar.xz
bas-c2b52afa3f95f77e9f71d0ca0aa0a0c6424bf7bd.zip
laterjs tests
Diffstat (limited to 'server')
-rw-r--r--server/app.js4
-rw-r--r--server/lib/eventhelper.js53
-rw-r--r--server/package-lock.json5
-rw-r--r--server/package.json1
4 files changed, 63 insertions, 0 deletions
diff --git a/server/app.js b/server/app.js
index 23f1584..8c38faa 100644
--- a/server/app.js
+++ b/server/app.js
@@ -5,6 +5,10 @@ var cookieParser = require('cookie-parser')
var compression = require('compression')
var fileUpload = require('express-fileupload')
+process.env.TZ = 'Europe/Berlin'
+const later = require('later')
+later.date.localTime()
+
var app = express()
global.__appdir = __dirname
diff --git a/server/lib/eventhelper.js b/server/lib/eventhelper.js
new file mode 100644
index 0000000..0986b25
--- /dev/null
+++ b/server/lib/eventhelper.js
@@ -0,0 +1,53 @@
+/* global __appdir */
+var path = require('path')
+var db = require(path.join(__appdir, 'lib', 'sequelize'))
+const later = require('later')
+
+function isActive (eventData) {
+ const startDate = new Date(eventData.startDate * 1000)
+ const endDate = new Date(eventData.endDate * 1000)
+ let now = new Date()
+ if (eventData.repetitive) {
+ if (startDate < now && now < endDate) return false
+ return later.schedule(getTimeSpans(eventData)).isValid(now)
+ } else {
+ const startTime = eventData.startTime.split(':')
+ startDate.setHours(startTime[0])
+ startDate.setMinutes(startTime[1])
+ const endTime = eventData.endTime.split(':')
+ endDate.setHours(endTime[0])
+ endDate.setMinutes(endTime[1])
+ return startDate < now && now < endDate
+ }
+}
+
+function getTimeSpans (eventData) {
+ const schedule = later.parse.recur()
+ schedule.after(eventData.startTime).time()
+ const startTime = eventData.startTime.split(':').map(x => parseInt(x))
+ const endTime = eventData.endTime.split(':').map(x => parseInt(x))
+ if (startTime[0] > endTime[0] || (startTime[0] === endTime[0] && startTime[1] > endTime[1])) {
+ _setUpSchedule(eventData, schedule)
+ schedule.and()
+ }
+ schedule.before(eventData.endTime).time()
+ _setUpSchedule(eventData, schedule)
+ return schedule
+}
+
+function getStartTimes (eventData) {
+ const schedule = later.parse.recur()
+ schedule.on(eventData.startTime).time()
+ _setUpSchedule(eventData, schedule)
+ return schedule
+}
+
+function _setUpSchedule (eventData, schedule) {
+ schedule.on(eventData.monthMap.reduce((arr, v, i) => { if (v) arr.push(i + 1); return arr }, [])).month()
+ schedule.on(eventData.dayMap.reduce((arr, v, i) => { if (v) arr.push(((i + 1) % 7) + 1); return arr }, [])).dayOfWeek()
+ schedule.every(parseInt(eventData.interval))
+ const type = eventData.intervalType
+ if (type === 'month') schedule.month()
+ else if (type === 'week') schedule.weekOfYear()
+ else schedule.dayOfYear()
+}
diff --git a/server/package-lock.json b/server/package-lock.json
index e6c98bd..d9b6798 100644
--- a/server/package-lock.json
+++ b/server/package-lock.json
@@ -2467,6 +2467,11 @@
"safe-buffer": "^5.0.1"
}
},
+ "later": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/later/-/later-1.2.0.tgz",
+ "integrity": "sha1-8s9sTdeVbdL1IK3wMpg26YdrrQ8="
+ },
"lcid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
diff --git a/server/package.json b/server/package.json
index d726807..e3484c9 100644
--- a/server/package.json
+++ b/server/package.json
@@ -18,6 +18,7 @@
"http-errors": "^1.7.2",
"infoblox": "^1.1.5",
"jsonwebtoken": "^8.5.0",
+ "later": "^1.2.0",
"morgan": "^1.9.1",
"mysql": "^2.16.0",
"mysql2": "^1.6.5",