diff --git a/emails/msg/sendmsg/it/html.pug b/emails/msg/sendmsg/it/html.pug
new file mode 100644
index 0000000..2790e31
--- /dev/null
+++ b/emails/msg/sendmsg/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/sendmsg/it/subject.pug b/emails/msg/sendmsg/it/subject.pug
new file mode 100644
index 0000000..b311c8d
--- /dev/null
+++ b/emails/msg/sendmsg/it/subject.pug
@@ -0,0 +1 @@
+=`${usernameorig} tu ha inviato un nuovo messaggio`
diff --git a/server/models/operator.js b/server/models/operator.js
index c4ce7e5..f2ed1b6 100644
--- a/server/models/operator.js
+++ b/server/models/operator.js
@@ -54,6 +54,14 @@ const OperatorSchema = new Schema({
},
});
+OperatorSchema.statics.getEmailByUsername = async function (idapp, username) {
+ const Operator = this;
+
+ return await Operator.findOne({idapp, username}, (err, arrrec) => {
+ return (arrrec) ? arrrec.email : '';
+ });
+};
+
OperatorSchema.statics.executeQueryTable = function (idapp, params) {
return tools.executeQueryTable(this, idapp, params);
};
diff --git a/server/models/sendmsg.js b/server/models/sendmsg.js
index f302e00..9a7d21f 100644
--- a/server/models/sendmsg.js
+++ b/server/models/sendmsg.js
@@ -15,19 +15,19 @@ const sendmsgSchema = new Schema({
idapp: {
type: String,
},
- userId: {
+ origin: {
+ userId: { type: String },
+ page: { type: String },
+ event_id: { type: String }
+ },
+ dest: {
+ idapp: { type: String, },
+ username: { type: String },
+ },
+ message: {
type: String,
},
- idappDest: {
- type: Number,
- },
- usernameDest: {
- type: String,
- },
- msg: {
- type: String,
- },
- date: {
+ datemsg: {
type: Date,
},
read: {
@@ -38,22 +38,52 @@ const sendmsgSchema = new Schema({
type: Boolean,
default: false
},
- originpage: {
- type: String,
- },
});
-sendmsgSchema.statics.findAllByUserIdAndIdApp = function (userId, idapp) {
+sendmsgSchema.statics.findAllByUserIdAndIdApp = function (userId, username, idapp) {
const SendMsg = this;
- return SendMsg.find({userId, idapp}, (err, arrmsg) => {
- console.log('ris arrmsg:', arrmsg);
+ // Filter my msg
+ //
+ // (userId or dest.username === username) and idapp
+
+ console.log('userId', userId);
+
+ return SendMsg.find({
+ $and: [
+ {
+ $or: [
+ { 'origin.userId': userId },
+ { 'dest.username': username }]
+ },
+ { idapp }
+ ]
+ }, (err, arrmsg) => {
+ // console.log('ris arrmsg:', arrmsg);
return arrmsg
});
+
+ // return SendMsg.find(
+ // {
+ // $and: [
+ // {
+ // $or: [
+ // { 'dest.username': username },
+ // { userId: userId }
+ // ],
+ // },
+ // {
+ // idapp
+ // }
+ // ]
+ // }, (err, arrmsg) => {
+ // console.log('ris arrmsg:', arrmsg);
+ // return arrmsg
+ // });
};
-var SendMsg = mongoose.model('SendMsg', sendMsgSchema);
+const SendMsg = mongoose.model('SendMsg', sendmsgSchema);
module.exports = { SendMsg };
diff --git a/server/router/index_router.js b/server/router/index_router.js
index c015abd..59194df 100644
--- a/server/router/index_router.js
+++ b/server/router/index_router.js
@@ -16,6 +16,7 @@ const { Operator } = require('../models/operator');
const { Where } = require('../models/where');
const { MyEvent } = require('../models/myevent');
const { Contribtype } = require('../models/contribtype');
+const { SendMsg } = require('../models/sendmsg');
const tools = require('../tools/general');
@@ -86,42 +87,6 @@ router.post(process.env.LINK_REQUEST_NEWPASSWORD, (req, res) => {
});
-router.get(process.env.LINK_CHECK_UPDATES, authenticate, (req, res) => {
- const userId = req.user._id;
-
- // console.log("POST " + process.env.LINK_CHECK_UPDATES + " userId=" + userId);
-
- if (!ObjectID.isValid(userId)) {
- return res.status(404).send();
- }
-
- cfgserver.find().then((arrcfgrec) => {
-
- if (!arrcfgrec)
- return res.status(404).send();
-
- // ++Todo: Add to Log Stat ....
-
- if (req.user) {
- // If User is Admin, then send user Lists
- if (User.isAdmin(req.user)) {
- // Send UsersList
- return User.getUsersList(req.user.idapp).then(usersList => {
- return res.send({ cfgServer: arrcfgrec, usersList });
- })
- }
- }
-
- res.send({ cfgServer: arrcfgrec });
-
- }).catch((e) => {
- console.log(e);
- res.status(400).send({ code: server_constants.RIS_CODE_ERR, msg: e });
- });
-
-});
-
-
// Invio la Nuova Password richiesta dal reset!
// Ritorna il token per poter effettuare le chiamate...
router.post(process.env.LINK_UPDATE_PASSWORD, (req, res) => {
@@ -165,6 +130,8 @@ function getTableByTableName(tablename) {
mytable = Booking;
else if (tablename === 'operators')
mytable = Operator;
+ else if (tablename === 'sendmsgs')
+ mytable = SendMsg;
else if (tablename === 'wheres')
mytable = Where;
else if (tablename === 'myevents')
@@ -335,9 +302,10 @@ router.get('/loadsite/:userId/:idapp/:sall', authenticate_noerror, (req, res) =>
const sall = req.params.sall;
// var category = req.params.category;
- tools.mylog('loadsite : ', req.params);
+ // tools.mylog('loadsite : ', req.params);
let bookedevent = [];
+ let msgs = [];
if (userId !== '0') {
// LOGGED WITH USERID
@@ -350,10 +318,16 @@ router.get('/loadsite/:userId/:idapp/:sall', authenticate_noerror, (req, res) =>
const wheres = Where.findAllIdApp(idapp);
const contribtype = Contribtype.findAllIdApp(idapp);
- return Promise.all([bookedevent, eventlist, operators, wheres, contribtype])
+ return Promise.all([bookedevent, eventlist, operators, wheres, contribtype, msgs])
.then((arrdata) => {
- console.table(arrdata);
- res.send({ bookedevent: arrdata[0], eventlist: arrdata[1], operators: arrdata[2], wheres: arrdata[3], contribtype: arrdata[4] });
+ // console.table(arrdata);
+ res.send({
+ bookedevent: arrdata[0],
+ eventlist: arrdata[1],
+ operators: arrdata[2],
+ wheres: arrdata[3],
+ contribtype: arrdata[4],
+ });
})
.catch((e) => {
console.log(e);
@@ -362,5 +336,52 @@ router.get('/loadsite/:userId/:idapp/:sall', authenticate_noerror, (req, res) =>
});
+router.get(process.env.LINK_CHECK_UPDATES, authenticate, (req, res) => {
+ const userId = req.user._id;
+
+ // console.log("POST " + process.env.LINK_CHECK_UPDATES + " userId=" + userId);
+
+ if (!ObjectID.isValid(userId)) {
+ return res.status(404).send();
+ }
+
+ cfgserver.find().then((arrcfgrec) => {
+
+ if (!arrcfgrec)
+ return res.status(404).send();
+
+ // ++Todo: Add to Log Stat ....
+
+ // const sall = '0';
+
+ msgs = SendMsg.findAllByUserIdAndIdApp(userId, req.user.username, req.user.idapp);
+
+ let usersList = null;
+
+ if (req.user) {
+ // If User is Admin, then send user Lists
+ if (User.isAdmin(req.user)) {
+ // Send UsersList
+ usersList = User.getUsersList(req.user.idapp)
+ }
+ }
+
+ return Promise.all([usersList, msgs])
+ .then((arrdata) => {
+ // console.table(arrdata);
+ return res.send({
+ cfgServer: arrcfgrec,
+ usersList: arrdata[0],
+ msgs: arrdata[1],
+ });
+ });
+
+ }).catch((e) => {
+ console.log(e);
+ res.status(400).send({ code: server_constants.RIS_CODE_ERR, msg: e });
+ });
+
+});
+
module.exports = router;
diff --git a/server/router/myevent_router.js b/server/router/myevent_router.js
index 919b222..e7b9dac 100644
--- a/server/router/myevent_router.js
+++ b/server/router/myevent_router.js
@@ -101,7 +101,7 @@ router.get('/:userId/:idapp/:sall', authenticate, (req, res) => {
}
// Extract all the todos of the userId only
- MyEvent.findAllByUserIdAndIdApp(userId, idapp, sall).then((recevent) => {
+ return MyEvent.findAllByUserIdAndIdApp(userId, idapp, sall).then((recevent) => {
res.send({ recevent });
}).catch((e) => {
console.log(e);
diff --git a/server/router/sendmsg_router.js b/server/router/sendmsg_router.js
index 46c2e13..e560561 100644
--- a/server/router/sendmsg_router.js
+++ b/server/router/sendmsg_router.js
@@ -6,7 +6,8 @@ const server_constants = require('../tools/server_constants');
const { authenticate } = require('../middleware/authenticate');
-const { Sendmsg } = require('../models/Sendmsg');
+const { Operator } = require('../models/operator');
+const { SendMsg } = require('../models/sendmsg');
const { ObjectID } = require('mongodb');
@@ -14,37 +15,55 @@ const sendemail = require('../sendemail');
const _ = require('lodash');
-function sendNotif(res, idapp, user, recmsg) {
+async function sendNotif(res, idapp, user, recmsg) {
//++Todo: tools.sendNotificationToUser
- // Send Msg
- sendemail.sendEmail_Msg(res, user.lang, user.email, user, idapp, recmsg);
+ // Extract the Email Destination
+ const emaildest = await Operator.getEmailByUsername(recmsg.dest.idapp, recmsg.dest.username);
+ console.log('emaildest', emaildest);
+
+ // Send Msg by EMAIL
+ if (emaildest)
+ return await sendemail.sendEmail_Msg(res, user.lang, emaildest, user, idapp, recmsg);
+
}
router.post('/', authenticate, (req, res) => {
- tools.mylog('INIZIO - Sendmsg');
+ tools.mylog('INIZIO - SendMsg');
// tools.mylog('req.body', req.body);
- const body = _.pick(req.body, tools.allfieldSendmsg());
+ const body = _.pick(req.body, tools.allfieldSendMsg());
- tools.mylog('crea Sendmsg');
- const Sendmsg = new Sendmsg(body);
+ tools.mylog('crea SendMsg');
+ const myrecmsg = new SendMsg(body);
- const check = tools.checkUserOk(Sendmsg.userId, req.user._id);
+ const check = tools.checkUserOk(myrecmsg.origin.userId, req.user._id);
if (check.exit) return check.ret;
// console.log('fieldtochange', fieldtochange);
- Sendmsg._id = new ObjectID();
- return Sendmsg.save().then((writeresult) => {
- let idobj = writeresult._id;
+ myrecmsg._id = new ObjectID();
+ return myrecmsg.save()
+ .then((writeresult) => {
+ let idobj = writeresult._id;
- Sendmsg.findById(idobj)
- .then((recmsg) => {
- sendNotif(res, body.idapp, req.user, recmsg);
- res.send({ code: server_constants.RIS_CODE_OK, msg: '', id: recmsg._id });
- });
- });
+ myrecmsg._id = idobj;
+ return SendMsg.findById(idobj)
+ .then((recmsg) => {
+ // Add this field because I don't want to add into the database
+ recmsg.origin.infoevent = body.origin.infoevent;
+
+ return sendNotif(res, body.idapp, req.user, recmsg).then((ris) => {
+ if (ris)
+ return res.send({ code: server_constants.RIS_CODE_OK, msg: '', id: recmsg._id });
+ else
+ return res.send({ code: server_constants.RIS_CODE_ERR, msg: '' });
+ })
+ });
+ }).catch((e) => {
+ console.log(e);
+ res.status(400).send(e);
+ })
});
@@ -53,7 +72,7 @@ router.get('/:userId/:idapp', authenticate, (req, res) => {
const idapp = req.params.idapp;
// var category = req.params.category;
- tools.mylog('GET SendmsgS : ', req.params);
+ tools.mylog('GET SendMsgS : ', req.params);
if (!ObjectID.isValid(userId)) {
return res.status(404).send();
@@ -65,7 +84,7 @@ router.get('/:userId/:idapp', authenticate, (req, res) => {
}
// Extract all the todos of the userId only
- Sendmsg.findAllByUserIdAndIdApp(userId, idapp).then((msgall) => {
+ return SendMsg.findAllByUserIdAndIdApp(userId, idapp).then((msgall) => {
res.send({ msgall });
}).catch((e) => {
console.log(e);
diff --git a/server/sendemail.js b/server/sendemail.js
index 70ddcc9..f759706 100644
--- a/server/sendemail.js
+++ b/server/sendemail.js
@@ -55,8 +55,7 @@ module.exports = {
// htmlToText: false
});
-
- email
+ return email
.send({
template: template,
message: {
@@ -64,8 +63,13 @@ module.exports = {
},
locals: mylocalsconf,
})
- .then(console.log)
- .catch(console.error);
+ .then((ris) => {
+ return !!ris
+ })
+ .catch((err) => {
+ console.error(err);
+ return false
+ });
},
sendEmail_Normale: function (to, subject, html, replyTo) {
@@ -219,7 +223,7 @@ module.exports = {
}
},
- sendEmail_Msg: function (res, lang, emailto, user, idapp, recbooking) {
+ sendEmail_Msg: function (res, lang, emailto, user, idapp, recmsg) {
tools.mylog('sendEmail_Msg');
tools.mylog('tools.getNomeAppByIdApp(idapp)', tools.getNomeAppByIdApp(idapp), idapp);
@@ -229,13 +233,14 @@ module.exports = {
nomeapp: tools.getNomeAppByIdApp(idapp),
name: user.name,
surname: user.surname,
+ usernameorig: user.name + ' ' + user.surname,
emailto: emailto,
- msgbooking: recbooking.msgbooking,
- eventtextplain: tools.removeSpecialCharForEmail(recbooking.infoevent),
- event: recbooking.infoevent,
+ message: recmsg.message,
+ infoevent: recmsg.origin.infoevent,
+ strlinkreply: tools.getHostByIdApp(idapp) + '/messages/' + recmsg._id
};
- this.sendEmail_base('msg/sendmsg/' + lang, user, emailto, mylocalsconf, tools.getreplyToEmailByIdApp(idapp));
+ return this.sendEmail_base('msg/sendmsg/' + lang, user, emailto, mylocalsconf, tools.getreplyToEmailByIdApp(idapp));
// Send Email also to the Admin
// this.sendEmail_base('admin/sendmsg/' + lang, user, tools.getAdminEmailByIdApp(idapp), mylocalsconf);
diff --git a/server/server.js b/server/server.js
index ce424a8..4caaa19 100644
--- a/server/server.js
+++ b/server/server.js
@@ -32,6 +32,7 @@ require('./models/user');
require('./models/subscribers');
require('./models/cfgserver');
require('./models/booking');
+require('./models/sendmsg');
const mysql_func = require('./mysql/mysql_func');
@@ -41,6 +42,7 @@ const newsletter_router = require('./router/newsletter_router');
const booking_router = require('./router/booking_router');
const myevent_router = require('./router/myevent_router');
const subscribe_router = require('./router/subscribe_router');
+const sendmsg_router = require('./router/sendmsg_router');
const email_router = require('./router/email_router');
const todos_router = require('./router/todos_router');
const projects_router = require('./router/projects_router');
@@ -91,6 +93,7 @@ app.use(i18n.init);
// Use Routes
app.use('/', index_router);
app.use('/subscribe', subscribe_router);
+app.use('/sendmsg', sendmsg_router);
app.use('/push', push_router);
app.use('/signup_news', newsletter_router);
app.use('/booking', booking_router);
diff --git a/server/tools/general.js b/server/tools/general.js
index 018e307..b53d637 100644
--- a/server/tools/general.js
+++ b/server/tools/general.js
@@ -59,8 +59,8 @@ module.exports = {
console.error(args)
},
- allfieldSendmsg: function () {
- return ['userId', 'date', 'usernameDest', 'msg', 'originPage']
+ allfieldSendMsg: function () {
+ return ['userId', 'dest', 'message', 'datemsg', 'read', 'deleted', 'origin', 'idapp']
},
allfieldTodo: function () {