a
This commit is contained in:
parent
06fd628922
commit
ff1d371897
@ -13,27 +13,31 @@ const mailjet_from_name = "Fundación Lo Que De Verdad Importa";
|
|||||||
* @return {Promise}
|
* @return {Promise}
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function send(data) {
|
|
||||||
|
function send(header, body) {
|
||||||
|
|
||||||
|
const params = Object.assign(
|
||||||
|
{
|
||||||
|
"From": {
|
||||||
|
"Email": mailjet_from_email,
|
||||||
|
"Name": mailjet_from_name
|
||||||
|
},
|
||||||
|
"To": [{
|
||||||
|
"Email": header.to,
|
||||||
|
"Name": header.name
|
||||||
|
}],
|
||||||
|
"Subject": header.subject,
|
||||||
|
},
|
||||||
|
body
|
||||||
|
);
|
||||||
|
|
||||||
const mailjet = require('node-mailjet')
|
const mailjet = require('node-mailjet')
|
||||||
.connect(mailjet_public, mailjet_private)
|
.connect(mailjet_public, mailjet_private)
|
||||||
const request = mailjet
|
const request = mailjet
|
||||||
.post("send", { 'version': 'v3.1' })
|
.post("send", { 'version': 'v3.1' })
|
||||||
.request({
|
.request({
|
||||||
"Messages": [{
|
"Messages": [params]
|
||||||
"From": {
|
|
||||||
"Email": mailjet_from_email,
|
|
||||||
"Name": mailjet_from_name
|
|
||||||
},
|
|
||||||
"To": [{
|
|
||||||
"Email": data.to,
|
|
||||||
"Name": data.name
|
|
||||||
}],
|
|
||||||
"Subject": data.subject,
|
|
||||||
"TextPart": data.text,
|
|
||||||
"HTMLPart": data.html
|
|
||||||
}]
|
|
||||||
})
|
})
|
||||||
|
|
||||||
request
|
request
|
||||||
.then((result) => {
|
.then((result) => {
|
||||||
console.log(result.body)
|
console.log(result.body)
|
||||||
@ -43,6 +47,68 @@ function send(data) {
|
|||||||
console.log(error.statusCode)
|
console.log(error.statusCode)
|
||||||
return error;
|
return error;
|
||||||
})
|
})
|
||||||
}
|
};
|
||||||
|
|
||||||
module.exports.send = send;
|
/**
|
||||||
|
* Enviar un email con entrada
|
||||||
|
* @header
|
||||||
|
* @param {number} data.to - Email destino
|
||||||
|
* @param {number} data.name - Nombre del contacto destino
|
||||||
|
* @param {number} data.subject - Asunto
|
||||||
|
* @values
|
||||||
|
* @param {number} data.tipoEntrada
|
||||||
|
* @param {number} data.qrCode
|
||||||
|
* @return {Promise}
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
function sendTicket(header, values) {
|
||||||
|
|
||||||
|
const body = {
|
||||||
|
"TemplateID": 978886,
|
||||||
|
"TemplateLanguage": true,
|
||||||
|
"TemplateErrorDeliver": true,
|
||||||
|
"TemplateErrorReporting": {
|
||||||
|
"Email": "info@rodax-software.com",
|
||||||
|
"Name": "Air traffic control"
|
||||||
|
},
|
||||||
|
"Variables": {
|
||||||
|
"tipoEntrada": values.tipoEntrada,
|
||||||
|
"descriptionEntrada": values.descriptionEntrada,
|
||||||
|
"qrCode": values.qrCode,
|
||||||
|
"codeTicket": values.codeTicket,
|
||||||
|
"eventName": values.eventName,
|
||||||
|
"dateInscription": values.dateInscription,
|
||||||
|
"color": values.color,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return send(header, body);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enviar un email
|
||||||
|
* @header
|
||||||
|
* @param {number} data.to - Email destino
|
||||||
|
* @param {number} data.name - Nombre del contacto destino
|
||||||
|
* @param {number} data.subject - Asunto
|
||||||
|
* @subjectAnBody
|
||||||
|
* @param {number} data.text - Cuerpo del mensaje en texto plano
|
||||||
|
* @param {number} data.html - Cuerpo del mensaje en HTML
|
||||||
|
* @return {Promise}
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
function sendMail(header, values) {
|
||||||
|
|
||||||
|
const body = {
|
||||||
|
"TextPart": values.text,
|
||||||
|
"HTMLPart": values.html,
|
||||||
|
};
|
||||||
|
|
||||||
|
return send(header, body);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
sendMail,
|
||||||
|
sendTicket
|
||||||
|
};
|
||||||
@ -67,6 +67,7 @@ function getMember(listId, member) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
function addMember(listId, member) {
|
function addMember(listId, member) {
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
// logger.debug('addMember => ', '/lists/' + listId + '/members', ' email: ' + member.email);
|
// logger.debug('addMember => ', '/lists/' + listId + '/members', ' email: ' + member.email);
|
||||||
|
|||||||
@ -1,17 +1,19 @@
|
|||||||
var _ = require('lodash');
|
var _ = require('lodash');
|
||||||
var QRCode = require('qrcode');
|
var QRCode = require('qrcode');
|
||||||
|
const moment = require('moment');
|
||||||
|
|
||||||
/* params = {
|
/* params = {
|
||||||
code: 'xxxx',
|
code: 'xxxx',
|
||||||
|
date: 'date-time',
|
||||||
name: 'xxxx',
|
name: 'xxxx',
|
||||||
surname: 'xxxx',
|
surname: 'xxxx',
|
||||||
color: '#ff',
|
color: '#ff',
|
||||||
|
|
||||||
} */
|
} */
|
||||||
|
|
||||||
module.exports.getInscriptionQRCode = function (params) {
|
module.exports.getInscriptionQRCode = function (params) {
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
var texto = _.padStart(params.code, 4, '0') + '\n' + params.name + ' ' + params.surname;
|
var texto = _.padStart(params.code, 4, '0') + '\n' + moment(params.date).format('DD/MM/YY HH:mm ') + params.name + ' ' + params.surname;
|
||||||
var options = {
|
var options = {
|
||||||
errorCorrectionLevel: 'M',
|
errorCorrectionLevel: 'M',
|
||||||
}
|
}
|
||||||
@ -27,7 +29,7 @@ module.exports.getInscriptionQRCode = function (params) {
|
|||||||
|
|
||||||
QRCode.toDataURL(texto, options, function (err, qrcode) {
|
QRCode.toDataURL(texto, options, function (err, qrcode) {
|
||||||
if (err) resolve('');
|
if (err) resolve('');
|
||||||
//console.log(qrcode);
|
// console.log('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' + qrcode);
|
||||||
resolve(qrcode);
|
resolve(qrcode);
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
const moment = require('moment');
|
||||||
const httpStatus = require('http-status');
|
const httpStatus = require('http-status');
|
||||||
const generateControllers = require('../../core/controllers');
|
const generateControllers = require('../../core/controllers');
|
||||||
const QRHelper = require('../../helpers/qr.helper');
|
const QRHelper = require('../../helpers/qr.helper');
|
||||||
@ -413,32 +414,60 @@ console.log('actualizo confirmados de la nueva reserva');
|
|||||||
else
|
else
|
||||||
marketingListOfInscription = dataInscription.event.marketingList;
|
marketingListOfInscription = dataInscription.event.marketingList;
|
||||||
*/
|
*/
|
||||||
const member = await eventInscriptionService._addMember(marketingListOfInscription, dataUser.userResult.user, dataInscription.inscription, dataInscription.reservation);
|
//Creamos objeto member para facilitar inserción en mailchimp y envio de correo
|
||||||
|
var member = {
|
||||||
|
marketing_memberId: null,
|
||||||
|
email: dataUser.userResult.user.email,
|
||||||
|
name: dataUser.userResult.user.name,
|
||||||
|
surname: dataUser.userResult.user.surname,
|
||||||
|
source: dataInscription.inscription.source,
|
||||||
|
reservation_code: (dataInscription.reservation) ? dataInscription.reservation.reservation_code : null,
|
||||||
|
date: dataInscription.inscription.date,
|
||||||
|
code_ticket: dataInscription.inscription.code_ticket,
|
||||||
|
validated: dataInscription.inscription.validated,
|
||||||
|
color: (dataInscription.reservation) ? dataInscription.reservation.color : null,
|
||||||
|
description: ((dataInscription.reservation) ? dataInscription.reservation.description : 'Entrada Normal').toUpperCase(),
|
||||||
|
entity: (dataInscription.reservation) ? dataInscription.reservation.Entity.name : dataUser.userResult.user.entityId,
|
||||||
|
userId: dataUser.userResult.user.id
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('member a añadir a mailchimp y envio correo');
|
||||||
|
console.log(member);
|
||||||
|
|
||||||
|
member.marketing_memberId = await eventInscriptionService._addMember(marketingListOfInscription, member);
|
||||||
eventInscriptionService._updateMarketingMemberOfInscription(dataInscription.inscription.id, member.marketing_memberId);
|
eventInscriptionService._updateMarketingMemberOfInscription(dataInscription.inscription.id, member.marketing_memberId);
|
||||||
|
|
||||||
|
|
||||||
var mailOptions = {
|
//MADAMOS MAIL CON LA ENTRADA
|
||||||
|
const qrConfig = {
|
||||||
|
name: member.name,
|
||||||
|
surname: member.surname,
|
||||||
|
date: member.date,
|
||||||
|
code: member.code_ticket,
|
||||||
|
color: member.color,
|
||||||
|
}
|
||||||
|
const qrCode = await QRHelper.getInscriptionQRCode(qrConfig);
|
||||||
|
|
||||||
|
var headerMail = {
|
||||||
to: member.email,
|
to: member.email,
|
||||||
name: member.name + ' ' + member.surname,
|
name: member.name + ' ' + member.surname,
|
||||||
|
subject: ((member.validated) ? 'Entrada' : 'Lista de espera') + ' para el congreso ' + dataInscription.event.name + ' confirmada'
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dataInscription.inscription.validated) {
|
var bodyMail = {
|
||||||
mailOptions = Object.assign(mailOptions, {
|
tipoEntrada: (member.validated) ? 'Entrada' : 'Lista de espera',
|
||||||
subject: messages.emails.confirmInvitation.subject.concat(dataInscription.event.name),
|
descriptionEntrada: member.description,
|
||||||
text: messages.emails.confirmInvitation.body.text.concat(dataInscription.event.name),
|
qrCode: qrCode,
|
||||||
html: messages.emails.confirmInvitation.body.html.concat(dataInscription.event.name),
|
color: qrConfig.color,
|
||||||
});
|
codeTicket: member.code_ticket,
|
||||||
} else {
|
eventName: dataInscription.event.name,
|
||||||
mailOptions = Object.assign(mailOptions, {
|
dateInscription: moment(dataInscription.event.init_date).format('D [de] MMMM [de] YYYY'),
|
||||||
subject: messages.emails.confirmInvitationToWaitingList.subject.concat(dataInscription.event.name),
|
}
|
||||||
text: messages.emails.confirmInvitationToWaitingList.body.text.concat(dataInscription.event.name),
|
|
||||||
html: messages.emails.confirmInvitationToWaitingList.body.html.concat(dataInscription.event.name),
|
console.log(headerMail, bodyMail);
|
||||||
});
|
// if ((member.validated))
|
||||||
};
|
emailHelper.sendTicket(headerMail, bodyMail);
|
||||||
|
|
||||||
console.log('maaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaail');
|
|
||||||
console.log(mailOptions);
|
|
||||||
emailHelper.send(mailOptions);
|
|
||||||
return handleResultResponse(await dataInscription.inscription.toJSON(), null, params, res, httpStatus.CREATED)
|
return handleResultResponse(await dataInscription.inscription.toJSON(), null, params, res, httpStatus.CREATED)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@ -35,7 +35,7 @@ function generateNewCodeTicket() {
|
|||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
const extraMethods = {
|
const extraMethods = {
|
||||||
|
|
||||||
_getInscriptionById: (id) => {
|
_getInscriptionById: (id) => {
|
||||||
return models.EventInscription.scope('includeEventAndVenue').findOne({
|
return models.EventInscription.scope('includeEventAndVenue').findOne({
|
||||||
@ -168,25 +168,10 @@ const extraMethods = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
_addMember: (marketingListId, user, inscription, reservation) => {
|
_addMember: (marketingListId, member) => {
|
||||||
|
|
||||||
console.log('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasddddddmemberrrrr1');
|
// console.log('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasddddddmemberrrrr1');
|
||||||
console.log(user, reservation);
|
// console.log(member);
|
||||||
|
|
||||||
var member = {
|
|
||||||
marketing_memberId: null,
|
|
||||||
email: user.email,
|
|
||||||
name: user.name,
|
|
||||||
surname: user.surname,
|
|
||||||
source: inscription.source,
|
|
||||||
reservation_code: (reservation) ? reservation.reservation_code : null,
|
|
||||||
code_ticket: inscription.code_ticket,
|
|
||||||
validated: inscription.validated,
|
|
||||||
color: (reservation) ? reservation.color : 'white',
|
|
||||||
description: (reservation) ? reservation.description : 'entrada libre',
|
|
||||||
entity: (reservation) ? reservation.Entity.name : user.entityId,
|
|
||||||
userId: user.id
|
|
||||||
}
|
|
||||||
|
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
if (!marketingListId) { // || !member.validated) {
|
if (!marketingListId) { // || !member.validated) {
|
||||||
@ -194,8 +179,7 @@ const extraMethods = {
|
|||||||
} else {
|
} else {
|
||||||
marketing.addMember(marketingListId, member)
|
marketing.addMember(marketingListId, member)
|
||||||
.then(function (result) {
|
.then(function (result) {
|
||||||
member.marketing_memberId = result.ID;
|
resolve(result.ID);
|
||||||
resolve(member);
|
|
||||||
})
|
})
|
||||||
.catch(function (error) {
|
.catch(function (error) {
|
||||||
reject(error)
|
reject(error)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user