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 pathexport-guest-list.js
67 lines (60 loc) · 2.18 KB
/
export-guest-list.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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
'use strict';
var json2csv = require('json2csv');
var async = require('async');
function exportGuestList (args, callback) {
var seneca = this;
var eventId = args.eventId;
var status = args.status;
var csvFields = ['Session', 'Name', 'Phone', 'Email', 'Ticket Name', 'Ticket Type', 'Status'];
var plugin = args.role;
async.waterfall([
retrieveUserData,
convertToCSV
], function (err, csv) {
if (err) return callback(null, {error: err});
return callback(null, {
data: csv
});
});
function retrieveUserData (done) {
// Default is to return all (guests and those waiting)
var searchQuery = {eventId: eventId, deleted: false};
if(status === 'waiting') {
searchQuery.status = 'pending';
}
else if(status === 'guests'){
searchQuery.status = 'approved';
}
seneca.act({role: plugin, cmd: 'searchApplications', query: searchQuery}, function (err, applications) {
if (err) return callback(err);
async.mapSeries(applications, function (application, cb) {
seneca.act({role: 'cd-profiles', cmd: 'list', query: {userId: application.userId}}, function (err, profiles) {
if (err) return cb(err);
var userProfile = profiles[0];
seneca.act({role: plugin, cmd: 'loadSession', id: application.sessionId}, function (err, session) {
if (err) return cb(err);
var user = {};
user['Session'] = session.name;
user['Name'] = userProfile.name;
user['Phone'] = userProfile.phone || '';
user['Email'] = userProfile.email || '';
user['Ticket Name'] = application.ticketName;
user['Ticket Type'] = application.ticketType;
user['Status'] = application.status;
if(application.status === 'pending') {
user['Status'] = 'waiting';
}
return cb(null, user);
});
});
}, function (err, csvData) {
if (err) return callback(null, {error: err});
return done(null, csvData);
});
});
}
function convertToCSV (csvData, done) {
json2csv({data: csvData, fields: csvFields}, done);
}
}
module.exports = exportGuestList;