87 lines
2.5 KiB
JavaScript
87 lines
2.5 KiB
JavaScript
var _ = require('lodash');
|
|
var csv = require('express-csv');
|
|
var express = require('express');
|
|
var nconf = require('nconf');
|
|
var moment = require('moment');
|
|
var dataexport = module.exports;
|
|
var js2xmlparser = require("js2xmlparser");
|
|
var pd = require('pretty-data').pd;
|
|
var User = require('../models/user').model;
|
|
|
|
|
|
/*
|
|
------------------------------------------------------------------------
|
|
Data export
|
|
------------------------------------------------------------------------
|
|
*/
|
|
|
|
dataexport.history = function(req, res) {
|
|
var user = res.locals.user;
|
|
var output = [
|
|
["Task Name", "Task ID", "Task Type", "Date", "Value"]
|
|
];
|
|
_.each(user.tasks, function(task) {
|
|
_.each(task.history, function(history) {
|
|
output.push(
|
|
[task.text, task.id, task.type, moment(history.date).format("MM-DD-YYYY HH:mm:ss"), history.value]
|
|
);
|
|
});
|
|
});
|
|
return res.csv(output);
|
|
}
|
|
|
|
var userdata = function(user) {
|
|
if(user.auth && user.auth.local) {
|
|
delete user.auth.local.salt;
|
|
delete user.auth.local.hashed_password;
|
|
}
|
|
return user;
|
|
}
|
|
|
|
dataexport.leanuser = function(req, res, next) {
|
|
var user = res.locals.user;
|
|
User.findOne({_id: user._id,}).lean().exec(function(err, user) {
|
|
if (err) return res.json(500, {err: err});
|
|
if (_.isEmpty(user)) return res.json(401, NO_USER_FOUND);
|
|
res.locals.user = user;
|
|
return next();
|
|
});
|
|
};
|
|
|
|
dataexport.userdata = {
|
|
xml: function(req, res) {
|
|
var user = userdata(res.locals.user);
|
|
return res.xml({data: JSON.stringify(user), rootname: 'user'});
|
|
},
|
|
json: function(req, res) {
|
|
var user = userdata(res.locals.user);
|
|
return res.jsonstring(user);
|
|
},
|
|
}
|
|
|
|
/*
|
|
------------------------------------------------------------------------
|
|
Express Extensions (should be refactored into a module)
|
|
------------------------------------------------------------------------
|
|
*/
|
|
|
|
var expressres = express.response || http.ServerResponse.prototype;
|
|
|
|
expressres.xml = function(obj, headers, status) {
|
|
var body = '';
|
|
this.charset = this.charset || 'utf-8';
|
|
this.header('Content-Type', 'text/xml');
|
|
this.header('Content-Disposition', 'attachment');
|
|
body = pd.xml(js2xmlparser(obj.rootname,obj.data));
|
|
return this.send(body, headers, status);
|
|
};
|
|
|
|
expressres.jsonstring = function(obj, headers, status) {
|
|
var body = '';
|
|
this.charset = this.charset || 'utf-8';
|
|
this.header('Content-Type', 'application/json');
|
|
this.header('Content-Disposition', 'attachment');
|
|
body = pd.json(JSON.stringify(obj));
|
|
return this.send(body, headers, status);
|
|
};
|