From a54839e1287c90382841668eb0183e4707c10f39 Mon Sep 17 00:00:00 2001 From: Paolo Arena Date: Tue, 5 Nov 2019 23:53:39 +0100 Subject: [PATCH] - Add Button Whatsapp Chat - Fixed 'Ask Info' and 'Book' if the email arrived... - Added "Settings" table: URL_FACEBOOK, TELEGRAM_SUPPORT, URL_INSTAGRAM, WHATSAPP_CELL, INT_CODE, MAIN_EMAIL, CONTACTS_EMAIL_CELL, CALL_WORKING_DAYS, EVENTS_CAL, MSG_REPLY_AFTER_BOOKING. - --- emails/booking/makebooking/it/html.pug | 1 + emails/msg/sendmsg/it/html.pug | 21 ------------- emails/msg/sendmsgchat/it/html.pug | 34 +++++++++++++++++++++ emails/msg/sendmsgchat/it/subject.pug | 1 + server/models/settings.js | 20 ++++++++++++ server/router/booking_router.js | 8 +++-- server/router/myevent_router.js | 2 +- server/router/projects_router.js | 2 +- server/router/sendmsg_router.js | 2 +- server/sendemail.js | 42 +++++++++++++++++--------- server/tools/general.js | 19 +++++++++--- server/tools/shared_nodejs.js | 2 +- 12 files changed, 107 insertions(+), 47 deletions(-) create mode 100644 emails/msg/sendmsgchat/it/html.pug create mode 100644 emails/msg/sendmsgchat/it/subject.pug diff --git a/emails/booking/makebooking/it/html.pug b/emails/booking/makebooking/it/html.pug index fb0b073..06ef83c 100644 --- a/emails/booking/makebooking/it/html.pug +++ b/emails/booking/makebooking/it/html.pug @@ -2,6 +2,7 @@ p Ciao #{name}, p Ti confermiamo che hai appena inviato una richiesta di prenotazione per l'evento #{event} span #{participants} p Messaggio: #{msgbooking} +p #{msgreply_after_booking} p Cordiali Saluti p Supporto #{nomeapp} diff --git a/emails/msg/sendmsg/it/html.pug b/emails/msg/sendmsg/it/html.pug index 2790e31..6414683 100644 --- a/emails/msg/sendmsg/it/html.pug +++ b/emails/msg/sendmsg/it/html.pug @@ -2,10 +2,6 @@ p Ciao #{name}, p #{usernameorig} ti ha inviato questo messaggio dalla pagina span (#{infoevent}): p #{message} -p -p Per rispondere al messaggio clicca qui: -div.divbtn - button.btn.btn-lg Rispondi p Cordiali Saluti p Supporto #{nomeapp} @@ -15,20 +11,3 @@ style(type="text/css"). padding: 0; margin: 0; } - - .divbtn { - display: flex; - align-items: center; - justify-content: center; - } - - .btn-lg { - padding: 5px; - margin: 5px; - font-size: 26px; - cursor: pointer; - color: white; - background: #027be3 !important; - border-radius: 28px; - - } diff --git a/emails/msg/sendmsgchat/it/html.pug b/emails/msg/sendmsgchat/it/html.pug new file mode 100644 index 0000000..2790e31 --- /dev/null +++ b/emails/msg/sendmsgchat/it/html.pug @@ -0,0 +1,34 @@ +p Ciao #{name}, +p #{usernameorig} ti ha inviato questo messaggio dalla pagina +span (#{infoevent}): +p #{message} +p +p Per rispondere al messaggio clicca qui: +div.divbtn + button.btn.btn-lg Rispondi + +p Cordiali Saluti +p Supporto #{nomeapp} + +style(type="text/css"). + html, body { + padding: 0; + margin: 0; + } + + .divbtn { + display: flex; + align-items: center; + justify-content: center; + } + + .btn-lg { + padding: 5px; + margin: 5px; + font-size: 26px; + cursor: pointer; + color: white; + background: #027be3 !important; + border-radius: 28px; + + } diff --git a/emails/msg/sendmsgchat/it/subject.pug b/emails/msg/sendmsgchat/it/subject.pug new file mode 100644 index 0000000..b311c8d --- /dev/null +++ b/emails/msg/sendmsgchat/it/subject.pug @@ -0,0 +1 @@ +=`${usernameorig} tu ha inviato un nuovo messaggio` diff --git a/server/models/settings.js b/server/models/settings.js index f50253e..6dad91b 100644 --- a/server/models/settings.js +++ b/server/models/settings.js @@ -37,6 +37,26 @@ SettingsSchema.statics.executeQueryTable = function (idapp, params) { return tools.executeQueryTable(this, idapp, params); }; +SettingsSchema.statics.getValDbSettings = function (idapp, key) { + return Settings.findOne({ idapp, key }) + .then((myrec) => { + if (myrec) { + if (myrec.type === this.FieldType.date) + return myrec.value_date; + if (myrec.type === this.FieldType.number) + return myrec.value_num; + else + return myrec.value_str; + } else { + return '' + } + + }).catch((err) => { + return null; + }); + +}; + SettingsSchema.statics.findAllIdApp = function (idapp) { const Settings = this; diff --git a/server/router/booking_router.js b/server/router/booking_router.js index 9b00ab7..9737fa6 100644 --- a/server/router/booking_router.js +++ b/server/router/booking_router.js @@ -34,7 +34,7 @@ router.post('/', authenticate, (req, res) => { tools.mylog('crea Booking'); const booking = new Booking(myrec); - const check = tools.checkUserOk(booking.userId, req.user._id); + const check = tools.checkUserOk(booking.userId, req.user._id, res); if (check.exit) return check.ret; // console.log('fieldtochange', fieldtochange); @@ -81,10 +81,12 @@ router.delete('/:id/:notify/:idapp', authenticate, (req, res) => { return res.status(404).send(); } - if (notify === '1') + if (notify === '1') { + recbooking.booked = false; sendNotif(res, idapp, req.user, recbooking); + } - tools.mylog('DELETED ', recbooking.descr, recbooking._id); + tools.mylog('DELETED ', recbooking._id); res.send({ code: server_constants.RIS_CODE_OK, msg: '', id: recbooking._id }); diff --git a/server/router/myevent_router.js b/server/router/myevent_router.js index e7b9dac..1957ead 100644 --- a/server/router/myevent_router.js +++ b/server/router/myevent_router.js @@ -25,7 +25,7 @@ router.post('/', authenticate, (req, res) => { tools.mylog('crea MyEvent'); const myevent = new MyEvent(myrec); - const check = tools.checkUserOk(myevent.userId, req.user._id); + const check = tools.checkUserOk(myevent.userId, req.user._id, res); if (check.exit) return check.ret; // Modify: diff --git a/server/router/projects_router.js b/server/router/projects_router.js index a80a95e..8d9a36d 100644 --- a/server/router/projects_router.js +++ b/server/router/projects_router.js @@ -31,7 +31,7 @@ router.post('/', authenticate, (req, res) => { return res.status(400).send({ code: server_constants.RIS_CODE_LOGIN_ERR_GENERIC }); } - const check = tools.checkUserOk(project.userId, req.user._id); + const check = tools.checkUserOk(project.userId, req.user._id, res); if (check.exit) return check.ret; tools.mylog('PROJECT POST :', project.descr, project._id); diff --git a/server/router/sendmsg_router.js b/server/router/sendmsg_router.js index a8ba51f..76f63db 100644 --- a/server/router/sendmsg_router.js +++ b/server/router/sendmsg_router.js @@ -42,7 +42,7 @@ router.post('/', authenticate, (req, res) => { tools.mylog('crea SendMsg'); const myrecmsg = new SendMsg(body); - const check = tools.checkUserOk(myrecmsg.origin.username, req.user.username); + const check = tools.checkUserOk(myrecmsg.origin.username, req.user.username, res); if (check.exit) return check.ret; // console.log('fieldtochange', fieldtochange); diff --git a/server/sendemail.js b/server/sendemail.js index 992beae..727b9a1 100644 --- a/server/sendemail.js +++ b/server/sendemail.js @@ -6,6 +6,7 @@ const Email = require('email-templates'); var i18n = require("i18n"); +const { Settings } = require('./models/settings'); const previewEmail = require('preview-email'); const nodemailer = require("nodemailer"); @@ -174,24 +175,29 @@ module.exports = { event: recbooking.infoevent, }; - if (recbooking.numpeople > 1) - mylocalsconf.participants = recbooking.numpeople.toString() + ' ' + res.__("partecipanti"); + return Settings.getValDbSettings(idapp, 'MSG_REPLY_AFTER_BOOKING').then((ris => { + mylocalsconf.msgreply_after_booking = ris; - let texthtml = ''; - if (recbooking.modified) { - texthtml = 'modifybooking'; - }else { - texthtml = 'makebooking'; - } + if (recbooking.numpeople > 1) + mylocalsconf.participants = recbooking.numpeople.toString() + ' ' + res.__("partecipanti"); - this.sendEmail_base('booking/'+texthtml+'/' + lang, emailto, mylocalsconf, tools.getreplyToEmailByIdApp(idapp)); + let texthtml = ''; + if (recbooking.modified) { + texthtml = 'modifybooking'; + }else { + texthtml = 'makebooking'; + } - // Send Email also to the Admin - this.sendEmail_base('admin/'+texthtml+'/' + lang, tools.getAdminEmailByIdApp(idapp), mylocalsconf, ''); + this.sendEmail_base('booking/'+texthtml+'/' + lang, emailto, mylocalsconf, tools.getreplyToEmailByIdApp(idapp)); - if (tools.isManagAndAdminDifferent(idapp)) { - this.sendEmail_base('admin/'+texthtml+'/' + lang, tools.getManagerEmailByIdApp(idapp), mylocalsconf, ''); - } + // Send Email also to the Admin + this.sendEmail_base('admin/'+texthtml+'/' + lang, tools.getAdminEmailByIdApp(idapp), mylocalsconf, ''); + + if (tools.isManagAndAdminDifferent(idapp)) { + this.sendEmail_base('admin/'+texthtml+'/' + lang, tools.getManagerEmailByIdApp(idapp), mylocalsconf, ''); + } + + })); }, @@ -240,7 +246,13 @@ module.exports = { strlinkreply: tools.getHostByIdApp(idapp) + '/messages/' + recmsg._id }; - return this.sendEmail_base('msg/sendmsg/' + lang, emailto, mylocalsconf, tools.getreplyToEmailByIdApp(idapp)); + let replyto = ''; + if (mylocalsconf.infoevent !== '') + replyto = user.email; + else + replyto = tools.getreplyToEmailByIdApp(idapp); + + return this.sendEmail_base('msg/sendmsg/' + lang, emailto, mylocalsconf, replyto); // Send Email also to the Admin // this.sendEmail_base('admin/sendmsg/' + lang, tools.getAdminEmailByIdApp(idapp), mylocalsconf); diff --git a/server/tools/general.js b/server/tools/general.js index 0a3515d..5b5622a 100644 --- a/server/tools/general.js +++ b/server/tools/general.js @@ -33,6 +33,17 @@ module.exports = { TYPE_PROJECT: 1, TYPE_TODO: 2, + FieldType: { + boolean: 1, + date: 2, + string: 4, + binary: 8, + html: 16, + select: 32, + number: 64, + typeinrec: 128, + }, + MAX_PHASES: 5, FIRST_PROJ: '__PROJECTS', EXECUTE_CALCPROJ: true, @@ -280,11 +291,11 @@ module.exports = { return sortedList; }, - checkUserOk(userpassed, userauth) { + checkUserOk(userpassed, userauth, res) { this.mylog('checkUserOk', userpassed, userauth); if (String(userpassed) !== String(userauth)) { // I'm trying to write something not mine! - this.mylog('userId = ', userpassed.userId, 'req.user._id', userauth); + this.mylog('userId = ', userpassed, 'req.user._id', userauth); return { exit: true, ret: res.status(404).send({ code: server_constants.RIS_CODE_TODO_CREATING_NOTMYUSER }) } } else { return { exit: false, ret: false } @@ -388,7 +399,7 @@ module.exports = { ] } if (idapp > 0) { - query.push( { $match: { idapp } } ); + query.push({ $match: { idapp } }); } // console.log('QUERYMATCH', query[0].$match.or); @@ -457,6 +468,6 @@ module.exports = { SetBit(myval, bit) { myval = myval & bit; return myval - } + }, }; diff --git a/server/tools/shared_nodejs.js b/server/tools/shared_nodejs.js index ab322c2..7285c3b 100644 --- a/server/tools/shared_nodejs.js +++ b/server/tools/shared_nodejs.js @@ -12,7 +12,7 @@ module.exports = { }, fieldsUserToChange() { - return ['username', 'email', 'cell', 'name', 'surname', 'perm', 'date_reg', 'verified_email', 'img', 'ipaddr', 'lasttimeonline', 'profile'] + return ['_id', 'username', 'email', 'cell', 'name', 'surname', 'perm', 'date_reg', 'verified_email', 'img', 'ipaddr', 'lasttimeonline', 'profile'] } };