- 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. -
This commit is contained in:
@@ -2,6 +2,7 @@ p Ciao #{name},
|
|||||||
p Ti confermiamo che hai appena inviato una richiesta di prenotazione per l'evento #{event}
|
p Ti confermiamo che hai appena inviato una richiesta di prenotazione per l'evento #{event}
|
||||||
span #{participants}
|
span #{participants}
|
||||||
p Messaggio: #{msgbooking}
|
p Messaggio: #{msgbooking}
|
||||||
|
p #{msgreply_after_booking}
|
||||||
|
|
||||||
p Cordiali Saluti
|
p Cordiali Saluti
|
||||||
p Supporto #{nomeapp}
|
p Supporto #{nomeapp}
|
||||||
|
|||||||
@@ -2,10 +2,6 @@ p Ciao #{name},
|
|||||||
p #{usernameorig} ti ha inviato questo messaggio dalla pagina
|
p #{usernameorig} ti ha inviato questo messaggio dalla pagina
|
||||||
span (#{infoevent}):
|
span (#{infoevent}):
|
||||||
p #{message}
|
p #{message}
|
||||||
p
|
|
||||||
p Per rispondere al messaggio clicca qui:
|
|
||||||
div.divbtn <a href=#{strlinkreply} target="_blank">
|
|
||||||
button.btn.btn-lg Rispondi</a>
|
|
||||||
|
|
||||||
p Cordiali Saluti
|
p Cordiali Saluti
|
||||||
p Supporto #{nomeapp}
|
p Supporto #{nomeapp}
|
||||||
@@ -15,20 +11,3 @@ style(type="text/css").
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 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;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|||||||
34
emails/msg/sendmsgchat/it/html.pug
Normal file
34
emails/msg/sendmsgchat/it/html.pug
Normal file
@@ -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 <a href=#{strlinkreply} target="_blank">
|
||||||
|
button.btn.btn-lg Rispondi</a>
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
}
|
||||||
1
emails/msg/sendmsgchat/it/subject.pug
Normal file
1
emails/msg/sendmsgchat/it/subject.pug
Normal file
@@ -0,0 +1 @@
|
|||||||
|
=`${usernameorig} tu ha inviato un nuovo messaggio`
|
||||||
@@ -37,6 +37,26 @@ SettingsSchema.statics.executeQueryTable = function (idapp, params) {
|
|||||||
return tools.executeQueryTable(this, 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) {
|
SettingsSchema.statics.findAllIdApp = function (idapp) {
|
||||||
const Settings = this;
|
const Settings = this;
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ router.post('/', authenticate, (req, res) => {
|
|||||||
tools.mylog('crea Booking');
|
tools.mylog('crea Booking');
|
||||||
const booking = new Booking(myrec);
|
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;
|
if (check.exit) return check.ret;
|
||||||
|
|
||||||
// console.log('fieldtochange', fieldtochange);
|
// console.log('fieldtochange', fieldtochange);
|
||||||
@@ -81,10 +81,12 @@ router.delete('/:id/:notify/:idapp', authenticate, (req, res) => {
|
|||||||
return res.status(404).send();
|
return res.status(404).send();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (notify === '1')
|
if (notify === '1') {
|
||||||
|
recbooking.booked = false;
|
||||||
sendNotif(res, idapp, req.user, recbooking);
|
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 });
|
res.send({ code: server_constants.RIS_CODE_OK, msg: '', id: recbooking._id });
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ router.post('/', authenticate, (req, res) => {
|
|||||||
tools.mylog('crea MyEvent');
|
tools.mylog('crea MyEvent');
|
||||||
const myevent = new MyEvent(myrec);
|
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;
|
if (check.exit) return check.ret;
|
||||||
|
|
||||||
// Modify:
|
// Modify:
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ router.post('/', authenticate, (req, res) => {
|
|||||||
return res.status(400).send({ code: server_constants.RIS_CODE_LOGIN_ERR_GENERIC });
|
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;
|
if (check.exit) return check.ret;
|
||||||
|
|
||||||
tools.mylog('PROJECT POST :', project.descr, project._id);
|
tools.mylog('PROJECT POST :', project.descr, project._id);
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ router.post('/', authenticate, (req, res) => {
|
|||||||
tools.mylog('crea SendMsg');
|
tools.mylog('crea SendMsg');
|
||||||
const myrecmsg = new SendMsg(body);
|
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;
|
if (check.exit) return check.ret;
|
||||||
|
|
||||||
// console.log('fieldtochange', fieldtochange);
|
// console.log('fieldtochange', fieldtochange);
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ const Email = require('email-templates');
|
|||||||
|
|
||||||
var i18n = require("i18n");
|
var i18n = require("i18n");
|
||||||
|
|
||||||
|
const { Settings } = require('./models/settings');
|
||||||
|
|
||||||
const previewEmail = require('preview-email');
|
const previewEmail = require('preview-email');
|
||||||
const nodemailer = require("nodemailer");
|
const nodemailer = require("nodemailer");
|
||||||
@@ -174,24 +175,29 @@ module.exports = {
|
|||||||
event: recbooking.infoevent,
|
event: recbooking.infoevent,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (recbooking.numpeople > 1)
|
return Settings.getValDbSettings(idapp, 'MSG_REPLY_AFTER_BOOKING').then((ris => {
|
||||||
mylocalsconf.participants = recbooking.numpeople.toString() + ' ' + res.__("partecipanti");
|
mylocalsconf.msgreply_after_booking = ris;
|
||||||
|
|
||||||
let texthtml = '';
|
if (recbooking.numpeople > 1)
|
||||||
if (recbooking.modified) {
|
mylocalsconf.participants = recbooking.numpeople.toString() + ' ' + res.__("partecipanti");
|
||||||
texthtml = 'modifybooking';
|
|
||||||
}else {
|
|
||||||
texthtml = 'makebooking';
|
|
||||||
}
|
|
||||||
|
|
||||||
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('booking/'+texthtml+'/' + lang, emailto, mylocalsconf, tools.getreplyToEmailByIdApp(idapp));
|
||||||
this.sendEmail_base('admin/'+texthtml+'/' + lang, tools.getAdminEmailByIdApp(idapp), mylocalsconf, '');
|
|
||||||
|
|
||||||
if (tools.isManagAndAdminDifferent(idapp)) {
|
// Send Email also to the Admin
|
||||||
this.sendEmail_base('admin/'+texthtml+'/' + lang, tools.getManagerEmailByIdApp(idapp), mylocalsconf, '');
|
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
|
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
|
// Send Email also to the Admin
|
||||||
// this.sendEmail_base('admin/sendmsg/' + lang, tools.getAdminEmailByIdApp(idapp), mylocalsconf);
|
// this.sendEmail_base('admin/sendmsg/' + lang, tools.getAdminEmailByIdApp(idapp), mylocalsconf);
|
||||||
|
|||||||
@@ -33,6 +33,17 @@ module.exports = {
|
|||||||
TYPE_PROJECT: 1,
|
TYPE_PROJECT: 1,
|
||||||
TYPE_TODO: 2,
|
TYPE_TODO: 2,
|
||||||
|
|
||||||
|
FieldType: {
|
||||||
|
boolean: 1,
|
||||||
|
date: 2,
|
||||||
|
string: 4,
|
||||||
|
binary: 8,
|
||||||
|
html: 16,
|
||||||
|
select: 32,
|
||||||
|
number: 64,
|
||||||
|
typeinrec: 128,
|
||||||
|
},
|
||||||
|
|
||||||
MAX_PHASES: 5,
|
MAX_PHASES: 5,
|
||||||
FIRST_PROJ: '__PROJECTS',
|
FIRST_PROJ: '__PROJECTS',
|
||||||
EXECUTE_CALCPROJ: true,
|
EXECUTE_CALCPROJ: true,
|
||||||
@@ -280,11 +291,11 @@ module.exports = {
|
|||||||
return sortedList;
|
return sortedList;
|
||||||
},
|
},
|
||||||
|
|
||||||
checkUserOk(userpassed, userauth) {
|
checkUserOk(userpassed, userauth, res) {
|
||||||
this.mylog('checkUserOk', userpassed, userauth);
|
this.mylog('checkUserOk', userpassed, userauth);
|
||||||
if (String(userpassed) !== String(userauth)) {
|
if (String(userpassed) !== String(userauth)) {
|
||||||
// I'm trying to write something not mine!
|
// 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 }) }
|
return { exit: true, ret: res.status(404).send({ code: server_constants.RIS_CODE_TODO_CREATING_NOTMYUSER }) }
|
||||||
} else {
|
} else {
|
||||||
return { exit: false, ret: false }
|
return { exit: false, ret: false }
|
||||||
@@ -388,7 +399,7 @@ module.exports = {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
if (idapp > 0) {
|
if (idapp > 0) {
|
||||||
query.push( { $match: { idapp } } );
|
query.push({ $match: { idapp } });
|
||||||
}
|
}
|
||||||
|
|
||||||
// console.log('QUERYMATCH', query[0].$match.or);
|
// console.log('QUERYMATCH', query[0].$match.or);
|
||||||
@@ -457,6 +468,6 @@ module.exports = {
|
|||||||
SetBit(myval, bit) {
|
SetBit(myval, bit) {
|
||||||
myval = myval & bit;
|
myval = myval & bit;
|
||||||
return myval
|
return myval
|
||||||
}
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
fieldsUserToChange() {
|
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']
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user