var User = require('../user/user.model');
var worker = require('../../components/worker');
var utils = require('../../components/utils');
+var errors = require('../../components/errors');
var fs = require('fs');
var path = require('path');
var uuid = require('node-uuid');
var relaunchGenerations = function () {
Report.find({isGenerated: false}, function (err, reports) {
- if (err) {
- console.error(err);
- return;
- }
- reports.forEach(function (report) {
- console.info("Relaunch report id " + report.uuid + " generation");
- launchWorker(report);
- });
+ if (err) return console.error(err);
+ reports.forEach(launchWorker);
});
};
exports.index = function (req, res) {
Report.find(function (err, reports) {
if (err) {
- return handleError(res, err);
+ return errors(500)(res, req, err);
}
return res.status(200).json(reports);
});
var userId = req.user._id;
Report.findById(req.params.id, function (err, report) {
if (err) {
- return handleError(res, err);
+ return errors(500)(res, req, err);
}
if (!report) {
- return res.status(404).send('Not Found');
+ return errors('404')(req, res);
}
//Allow admin users to download all reports
if (report.user !== userId.toString() && req.user.role !== 'admin') {
User.findOne({
_id: userId
}, '-salt -hashedPassword', function (err, user) { // don't ever give out the password or salt
- if (err) return handleError(res, err);
+ if (err) return errors(500)(res, req, err);
if (!req.files) {
return res.status(400).send('File Missing');
Report.create(generated, function (err, report) {
if (err) {
- return handleError(res, err);
+ return errors(500)(res, req, err);
}
// Send generation worker
launchWorker(report);
exports.removeAll = function (req, res) {
Report.find({isGenerated: true}, function (err, reports) {
if (err) {
- return handleError(res, err);
+ return errors(500)(res, req, err);
}
reports.forEach(function (report) {
var uuid = report.uuid;
report.remove(function (err) {
if (err) {
- return handleError(res, err);
+ return errors(500)(res, req, err);
}
// Remove output file
try {
fs.unlinkSync(appDir + "/components/worker/generator/output/" + uuid + ".pdf");
} catch (e) {
- console.error(e);
+ // We don't find the file... continue
}
});
});
// Suppression de tous les rapports dans la base et dans le FS - Utilisé par le cron
exports.purge = function (cb) {
- Report.remove({}, function (err, reportsRemoved) {
+ Report.remove({}, function (err) {
if (err) {
console.error(err);
}
- if (!reportsRemoved) {
- return console.error('purgeAllReports : Reports Not Found');
- }
// Remove all output files
utils.file.deleteFolderRecursive(appDir + "/components/worker/generator/output/", false);
// AND input files
utils.file.deleteFolderRecursive(appDir + "/components/worker/generator/input/", false);
- console.info("Cron status : " + reportsRemoved);
if (typeof cb === 'function') {
cb();
}
});
};
-function handleError(res, err) {
- return res.status(500).send(err);
-}
-
//We relaunch generations
relaunchGenerations();