From 52ace002ca2ccacfc36859ef00c2c6b732e9edca Mon Sep 17 00:00:00 2001 From: david Date: Fri, 29 Nov 2019 12:06:24 +0100 Subject: [PATCH] =?UTF-8?q?Generar=20el=20c=C3=B3digo=20QR=20de=20una=20in?= =?UTF-8?q?scripci=C3=B3n=20en=20PNG.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/environments/development.js | 3 ++- config/environments/production.js | 7 ++++--- helpers/mail.helper.js | 7 ++++--- helpers/qr.helper.js | 8 +++++++- modules/events/event.controller.js | 32 +++++++++++++++++++++++++++--- modules/events/event.routes.js | 25 +++++++---------------- 6 files changed, 53 insertions(+), 29 deletions(-) diff --git a/config/environments/development.js b/config/environments/development.js index 4a85377..2af5806 100644 --- a/config/environments/development.js +++ b/config/environments/development.js @@ -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: { diff --git a/config/environments/production.js b/config/environments/production.js index d80b7e8..8366f30 100644 --- a/config/environments/production.js +++ b/config/environments/production.js @@ -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: { diff --git a/helpers/mail.helper.js b/helpers/mail.helper.js index d9ea0af..1546c65 100644 --- a/helpers/mail.helper.js +++ b/helpers/mail.helper.js @@ -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, diff --git a/helpers/qr.helper.js b/helpers/qr.helper.js index f5e190b..e1fe97b 100644 --- a/helpers/qr.helper.js +++ b/helpers/qr.helper.js @@ -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) { diff --git a/modules/events/event.controller.js b/modules/events/event.controller.js index 4c61d9c..d4895ec 100644 --- a/modules/events/event.controller.js +++ b/modules/events/event.controller.js @@ -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('>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ', 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); + } + } }; diff --git a/modules/events/event.routes.js b/modules/events/event.routes.js index a1bf94a..71f4a0a 100644 --- a/modules/events/event.routes.js +++ b/modules/events/event.routes.js @@ -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