This commit is contained in:
David Arranz 2019-08-20 18:39:05 +02:00
parent aca1bf193b
commit b11c48626c
3 changed files with 111 additions and 5 deletions

View File

@ -463,12 +463,11 @@ console.log(mailOptions);
getReservationsExcel: async (req, res, next) => {
console.log('exxxxxxxxxxxxxxxcel');
const params = extractParamsFromRequest(req, res, {});
const eventId = params.params.id;
const userId = req.user.id;
const inscription = await eventReservationService._getReservationsExcel(req.user, eventId, null, function(result, status){
const reservations = await eventReservationService._getReservationsExcel(req.user, eventId, null, function(result, status){
if (result.messenger.code == "S99001") {
console.log(result);
res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
@ -479,7 +478,26 @@ console.log(mailOptions);
res.status(status).json(result);
}
})
}
},
getInscripcionsExcel: async (req, res, next) => {
const params = extractParamsFromRequest(req, res, {});
const eventId = params.params.id;
const userId = req.user.id;
const inscriptions = await eventInscriptionService._getInscriptionsExcel(req.user, eventId, function (result, status) {
if (result.messenger.code == "S99001") {
console.log(result);
res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
res.setHeader('Content-Disposition', 'attachment; filename=' + result.data.name);
res.attachment(result.data.name);
res.download(path.resolve(result.data.path), result.data.name);
} else {
res.status(status).json(result);
}
})
},
};

View File

@ -333,6 +333,11 @@ routes.get('/admin/events/:id/reservations/excel',
eventController.getReservationsExcel,
);
routes.get('/admin/events/:id/inscriptions/excel',
isAdministratorUser,
eventController.getInscripcionsExcel,
);
routes.get('/admin/events/:eventId/partners/:entityId/reservations',
isAdministratorUser,
eventReservationController.find(),

View File

@ -7,8 +7,11 @@ const { generateService, parseParamsToFindOptions } = require('../../helpers/ser
const models = require('../../core/models');
const marketing = require('../../helpers/mailchimp.helper')
const Sequelize = require('sequelize');
moment.locale('es');
const xlsx = require("node-xlsx");
const fs = require("fs");
const cdnHelper = require('../../helpers/cdn.helper');
moment.locale('es');
function generateNewCodeTicket() {
@ -200,8 +203,88 @@ const extraMethods = {
}
});
},
_getInscriptionsExcel: (user, eventId, callback) => {
models.EventInscription.findAll({
where: {
eventId: eventId,
type: 'regular'
},
include: [{
model: models.Event,
as: 'event',
attributes: ['id', 'name'],
}],
order:[
// [{ model: models.Entity }, 'name', 'ASC'],
// [{ model: models.User },'name', 'ASC'],
],
}).then(function (inscriptions) {
if (inscriptions.length) {
var data = [];
data.push(["Centro educativo", "Número de entrada", "Nombre", "Apellidos", "Email", "Válido"]);
for (var c = 0; c < inscriptions.length; c++) {
var inscription = inscriptions[c];
console.log(inscription);
var code = inscription.code_ticket;
var name = inscription.user.name;
var surname = inscription.user.surname ? inscription.user.surname : "";
var email = inscription.user.email;
var college = inscription.user.entityId ? inscription.user.entity : "";
var valid = inscription.validated ? "Válido" : "No válido";
data.push([college, code, name, surname, email, valid]);
}
var buffer = xlsx.build([{
name: inscriptions[0].event.name,
data: data
}]);
var fileName = cdnHelper.sanitizeFilename(inscriptions[0].event.name + "-inscripciones.xlsx");
var xlsxPath = cdnHelper.getCDNPath('xlsx') + fileName;
var wstream = fs.createWriteStream(xlsxPath);
wstream.write(buffer);
wstream.end();
wstream.on("close", function () {
return callback({
messenger: {
success: true,
message: 'Ok',
code: 'S99001'
},
data: {
path: xlsxPath,
name: fileName
}
}, 200);
});
} else {
return callback({
messenger: {
success: true,
message: 'Ok',
code: 'S99002'
}
}, 200);
}
}).catch(function (error) {
console.log(error);
return callback({
messenger: {
success: false,
message: 'Database error getting inscription.',
code: 'E01004'
}
}, 500);
});
},
};
module.exports = generateService(models.EventInscription, extraMethods);