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: {
hostname: process.env.HOSTNAME || '127.0.0.1',
port: process.env.PORT || 18888
port: process.env.PORT || 18888,
public_url: ""
},
cdn: {

View File

@ -15,11 +15,11 @@ module.exports = {
*/
},
cache: {
cache: {
enabled: true,
defaultDuration: '1 minute',
debug: true,
},
},
session: {
@ -29,7 +29,8 @@ module.exports = {
server: {
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: {

View File

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

View File

@ -2,6 +2,12 @@ var _ = require('lodash');
var QRCode = require('qrcode');
const moment = require('moment');
const config = require('../config');
module.exports.getInscriptionQRCodeUrl = function (inscriptionId) {
return encodeURI(`${config.server.public_url}/inscriptions/${inscriptionId}/qrimage`);
}
/* params = {
code: 'xxxx',
date: 'date-time',
@ -9,7 +15,7 @@ const moment = require('moment');
surname: 'xxxx',
color: '#ff',
} */
} */
module.exports.getInscriptionQRCode = function (params) {
return new Promise(function (resolve, reject) {

View File

@ -88,6 +88,7 @@ function generateBodyMail (member) {
tipoEntrada: (member.validated) ? 'Entrada' : 'Lista de espera',
descriptionEntrada: member.description,
qrCode: member.qrCode,
qrCodeUrl: member.qrCodeUrl,
color: member.qrConfig.color,
codeTicket: member.code_ticket,
eventName: member.event_name,
@ -276,8 +277,9 @@ console.log('>>>>>>>>>>>>>>><NewConfirmedEvent: ', NewConfirmedEvent);
member.marketing_memberId = await eventInscriptionService._addMember(marketingListIdEvent, member);
eventInscriptionService._updateMarketingMemberOfInscription(inscription.id, member.marketing_memberId);
member.qrConfig = generateQRConfig(member);
member.qrCode = await QRHelper.getInscriptionQRCode(member.qrConfig);
console.log('mandar correo>>>>>>>>>>>>>>>>>>>>> ', member);
member.qrCode = await QRHelper.getInscriptionQRCode(member.qrConfig);
member.qrCodeUrl = QRHelper.getInscriptionQRCodeUrl(inscription.id);
console.log('mandar correo>>>>>>>>>>>>>await QRHelper.getInscriptionQRCode(member.qrConfig); >>>>>>>> ', member);
emailHelper.sendTicket(generateHeaderMail(member), generateBodyMail(member))
} catch (error) {
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) => {
const params = extractParamsFromRequest(req, res, {});
const eventId = params.params.id;
@ -772,6 +773,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
routes.post('/events/:id/inscriptions',
isLoggedUser,
@ -285,6 +267,11 @@ routes.delete('/inscriptions/:id',
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',
isLoggedUser,
@ -293,6 +280,8 @@ routes.get('/events/:id/reservations/:encodedInvitationCode',
);
//WEB
//Eventos con inscripciones abiertas para la web