Add support for sending messages

This commit is contained in:
Luke Berndt
2023-06-25 09:59:48 -04:00
parent 72798e4494
commit 3a7ec72aab
14 changed files with 269 additions and 19 deletions

View File

@@ -1,6 +1,97 @@
var mongoose = require("mongoose");
var User = require("../models/user");
var System = require("../models/system");
const Mailjet = require('node-mailjet');
var admin_email = process.env['REACT_APP_ADMIN_EMAIL'] != null ? process.env['REACT_APP_ADMIN_EMAIL'] : "luke@openmhz.com";
var admin_server = process.env['REACT_APP_ADMIN_SERVER'] != null ? process.env['REACT_APP_ADMIN_SERVER'] : "https://admin.openmhz.com";
var site_name = process.env['REACT_APP_SITE_NAME'] != null ? process.env['REACT_APP_SITE_NAME'] : "OpenMHz";
const mailjet = new Mailjet({
apiKey: process.env['MAILJET_KEY'],
apiSecret: process.env['MAILJET_SECRET']
});
exports.contact_system = async function(req, res) {
var system = await System.findOne({
shortName: req.params.shortName.toLowerCase()
}).catch(err => {
res.status(500);
res.json({
success: false,
message: err
});
return;
});
if (!system) {
console.error("[contact_system] The Short Name does not exist: " + req.params.shortName.toLowerCase());
res.status(500);
res.json({
success: false,
message: "That Short Name does not exist."
});
return;
}
if (!system.allowContact) {
console.error("[contact_system] This System does not allow user to contact the owner: " + req.params.shortName.toLowerCase());
res.status(500);
res.json({
success: false,
message: "This System does not allow user to contact the owner."
});
return;
}
const user = await User.findById(system.userId).exec();
if (!user) {
console.error("[contact_system] System User does not exist: " + req.params.shortName.toLowerCase());
res.status(500);
res.json({
success: false,
message: "System User does not exist."
});
return;
}
console.log(user);
let message = "Thank you for contributing a feed to OpenMHz. A user has sent in a message about this feed:\n\n-------------------------------\n"
message = message + "User Name: " + req.body.name + "\n";
message = message + "User Email: " + req.body.email + "\n-------------------------------\n";
message = message + "Message:\n" + req.body.message + "\n-------------------------------\n\n";
message = message + "If you wish to stop receiving User Messages for this System:\n - goto the Admin for " + site_name + ": " + admin_server + "\n - find this System\n - Update it and turn off this Allow Contact option."
const request = mailjet.post("send", {
version: "v3.1"
}).request({
Messages: [{
From: {
Email: admin_email,
Name: site_name + " Admin"
},
To: [{
Email: user.email,
Name: user.firstName + " " + user.lastName
},{
Email: admin_email,
Name: site_name + " Admin"
}],
Subject: site_name + " - " + system.shortName + " - " + " User Comment",
TextPart: message
}]
});
request.then(result => {
console.log(`User Comment sent to: ${user.email} for shortName: ${system.shortName}`)
})
.catch(err => {
console.error(err.statusCode);
console.error(err);
res.json({
success: false,
message: err
});
return;
});
}
exports.get_systems = async function (req, res) {
let fromDate = new Date(Date.now() - 60 * 60 * 24 * 30 * 1000);
@@ -31,6 +122,7 @@ exports.get_systems = async function (req, res) {
lastActive: results[result].lastActive,
callAvg: results[result].callAvg,
description: results[result].description,
allowContact: results[result].allowContact,
clientCount: clientCount
}
if (results[result].showScreenName && results[result].userId) {