This repository has been archived by the owner on Dec 14, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 30
/
Copy pathsearch-events.js
53 lines (49 loc) · 1.76 KB
/
search-events.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
'use strict';
var _ = require('lodash');
var moment = require('moment');
var async = require('async');
function searchEvents (args, callback) {
var seneca = this;
var eventsEntity = seneca.make$('cd/events');
var plugin = args.role;
var query = args.query || {};
var filterPastEvents = query.filterPastEvents || false;
delete query.filterPastEvents;
var events = [];
var utcOffset = moment().utcOffset();
eventsEntity.list$(query, function (err, response) {
if (err) return callback(err);
if (filterPastEvents) {
_.each(response, function (event) {
if (event && event.dates) {
if (event.type === 'recurring') {
var dateOfLastEventRecurrence = _.last(event.dates).startTime;
// 2016-01-25 UCE: Nasty temp hack until we sort out timezones
if (moment.utc(dateOfLastEventRecurrence).subtract(utcOffset, 'minutes').diff(moment.utc(), 'minutes') > -480) {
events.push(event);
}
} else {
var oneOffEventDate = _.head(event.dates).startTime;
// 2016-01-25 UCE: Nasty temp hack until we sort out timezones
if (moment.utc(oneOffEventDate).subtract(utcOffset, 'minutes').diff(moment.utc(), 'minutes') > -480) {
events.push(event);
}
}
}
});
} else {
events = response;
}
async.each(events, function (event, cb) {
seneca.act({role: plugin, cmd: 'searchSessions', query: {eventId: event.id, status: 'active'}}, function (err, sessions) {
if (err) return cb(err);
event.sessions = sessions;
return cb();
});
}, function (err) {
if (err) return callback(err);
return callback(null, events);
});
});
}
module.exports = searchEvents;