Generar el código QR de una inscripción en PNG.

This commit is contained in:
David Arranz 2019-11-29 12:06:24 +01:00
parent 37777a5ffb
commit 52ace002ca
6 changed files with 53 additions and 29 deletions

View File

@ -20,7 +20,8 @@ module.exports = {
server: { server: {
hostname: process.env.HOSTNAME || '127.0.0.1', hostname: process.env.HOSTNAME || '127.0.0.1',
port: process.env.PORT || 18888 port: process.env.PORT || 18888,
public_url: ""
}, },
cdn: { cdn: {

View File

@ -15,11 +15,11 @@ module.exports = {
*/ */
}, },
cache: { cache: {
enabled: true, enabled: true,
defaultDuration: '1 minute', defaultDuration: '1 minute',
debug: true, debug: true,
}, },
session: { session: {
@ -29,7 +29,8 @@ module.exports = {
server: { server: {
hostname: process.env.HOSTNAME || '127.0.0.1', hostname: process.env.HOSTNAME || '127.0.0.1',
port: process.env.PORT || 18888 port: process.env.PORT || 18888,
public_url: "https://apiapp2.loquedeverdadimporta.org/api/v2/"
}, },
cdn: { cdn: {

View File

@ -65,7 +65,7 @@ function send(header, body) {
}) })
request request
.then((result) => { .then((result) => {
console.log('EEEEEEEEEEEEEEEEEEEENNNNNNNNNNNNNNNNNNVIO correo>>>>'); console.log('Envio correo >>>>');
console.log(result.body); console.log(result.body);
return result; return result;
}) })
@ -88,8 +88,8 @@ function send(header, body) {
* @return {Promise} * @return {Promise}
* *
*/ */
function sendTicket(header, values) {
// console.log('PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSOOOOOOOOOOOOOOOOOOOO', values.qrCode.substr(22)); function sendTicket(header, values) {
const body = { const body = {
"TemplateID": 1112274, //980158, "TemplateID": 1112274, //980158,
"TemplateLanguage": true, "TemplateLanguage": true,
@ -102,6 +102,7 @@ function sendTicket(header, values) {
"tipoEntrada": values.tipoEntrada, "tipoEntrada": values.tipoEntrada,
"descriptionEntrada": values.descriptionEntrada, "descriptionEntrada": values.descriptionEntrada,
"qrCode": values.qrCode, "qrCode": values.qrCode,
"qrCodeUrl": values.qrCodeUrl,
"IDqrCode": "cid:id1", "IDqrCode": "cid:id1",
"codeTicket": values.codeTicket, "codeTicket": values.codeTicket,
"eventName": values.eventName, "eventName": values.eventName,

View File

@ -2,6 +2,12 @@ var _ = require('lodash');
var QRCode = require('qrcode'); var QRCode = require('qrcode');
const moment = require('moment'); const moment = require('moment');
const config = require('../config');
module.exports.getInscriptionQRCodeUrl = function (inscriptionId) {
return encodeURI(`${config.server.public_url}/inscriptions/${inscriptionId}/qrimage`);
}
/* params = { /* params = {
code: 'xxxx', code: 'xxxx',
date: 'date-time', date: 'date-time',

View File

@ -88,6 +88,7 @@ function generateBodyMail (member) {
tipoEntrada: (member.validated) ? 'Entrada' : 'Lista de espera', tipoEntrada: (member.validated) ? 'Entrada' : 'Lista de espera',
descriptionEntrada: member.description, descriptionEntrada: member.description,
qrCode: member.qrCode, qrCode: member.qrCode,
qrCodeUrl: member.qrCodeUrl,
color: member.qrConfig.color, color: member.qrConfig.color,
codeTicket: member.code_ticket, codeTicket: member.code_ticket,
eventName: member.event_name, eventName: member.event_name,
@ -277,7 +278,8 @@ console.log('>>>>>>>>>>>>>>><NewConfirmedEvent: ', NewConfirmedEvent);
eventInscriptionService._updateMarketingMemberOfInscription(inscription.id, member.marketing_memberId); eventInscriptionService._updateMarketingMemberOfInscription(inscription.id, member.marketing_memberId);
member.qrConfig = generateQRConfig(member); member.qrConfig = generateQRConfig(member);
member.qrCode = await QRHelper.getInscriptionQRCode(member.qrConfig); member.qrCode = await QRHelper.getInscriptionQRCode(member.qrConfig);
console.log('mandar correo>>>>>>>>>>>>>>>>>>>>> ', member); member.qrCodeUrl = QRHelper.getInscriptionQRCodeUrl(inscription.id);
console.log('mandar correo>>>>>>>>>>>>>await QRHelper.getInscriptionQRCode(member.qrConfig); >>>>>>>> ', member);
emailHelper.sendTicket(generateHeaderMail(member), generateBodyMail(member)) emailHelper.sendTicket(generateHeaderMail(member), generateBodyMail(member))
} catch (error) { } catch (error) {
console.log('No se ha podido mandar email con entrada'); console.log('No se ha podido mandar email con entrada');
@ -754,7 +756,6 @@ console.log('Mandamos mail con entrada>>>>>>>>>>>>>>>>>>>>>>>>>>>');
} }
}, },
getInscripcionsExcel: async (req, res, next) => { getInscripcionsExcel: async (req, res, next) => {
const params = extractParamsFromRequest(req, res, {}); const params = extractParamsFromRequest(req, res, {});
const eventId = params.params.id; const eventId = params.params.id;
@ -773,6 +774,31 @@ console.log('Mandamos mail con entrada>>>>>>>>>>>>>>>>>>>>>>>>>>>');
}) })
}, },
getQRCodeImage: async(req, res, next) => {
const params = extractParamsFromRequest(req, res, {});
const inscriptionId = params.params.id;
try {
const inscription = await eventInscriptionService._getInscriptionById(inscriptionId);
if (!inscription) {
return handleResultResponse("Inscription no encontrada", null, params, res, httpStatus.NOT_FOUND);
}
//Creamos objeto member para facilitar inserción en mailchimp y envio de correo
var member = generateMemberInscription(req.user, inscription.inscription, inscription.reservation);
member.qrConfig = generateQRConfig(member);
member.qrCode = await QRHelper.getInscriptionQRCode(member.qrConfig);
var buffer = new Buffer(member.qrCode.split(",")[1], 'base64');
res.setHeader('Content-Type', 'image/png');
res.setHeader('Content-Length', buffer.length);
return handleResultResponse(buffer, null, params, res, httpStatus.OK);
} catch (error) {
return handleResultResponse("Error al buscar la inscripción", null, params, res, httpStatus.NOT_FOUND);
}
}
}; };

View File

@ -246,24 +246,6 @@ routes.get('/me/inscriptions/:id',
); );
/*router.get('/:conferenceId/inscription/:userId/qrimage', function (req, res) {
conference.getInscriptionQRCode(req.params.conferenceId, req.params.userId, function (result, status) {
if (result && result.data) {
var buffer = new Buffer(result.data.split(",")[1], 'base64');
res.writeHead(status, {
'Content-Type': 'image/png',
'Content-Length': buffer.length
});
res.end(buffer);
} else {
res.status(200).end('')
}
});
});*/
// Hacer una inscripción // Hacer una inscripción
routes.post('/events/:id/inscriptions', routes.post('/events/:id/inscriptions',
isLoggedUser, isLoggedUser,
@ -285,6 +267,11 @@ routes.delete('/inscriptions/:id',
eventController.deleteInscription eventController.deleteInscription
); );
// Imagen del código QR de una inscripción
routes.get('/inscriptions/:id/qrimage', function (req, res) {
eventController.getQRCodeImage,
});
routes.get('/events/:id/reservations/:encodedInvitationCode', routes.get('/events/:id/reservations/:encodedInvitationCode',
isLoggedUser, isLoggedUser,
@ -293,6 +280,8 @@ routes.get('/events/:id/reservations/:encodedInvitationCode',
); );
//WEB //WEB
//Eventos con inscripciones abiertas para la web //Eventos con inscripciones abiertas para la web