- Mail profile submission info and approval link
- Stuff
This commit is contained in:
@@ -1,9 +1,21 @@
|
||||
const EventEmitter = require('events');
|
||||
const Images = require('../modules/images');
|
||||
const Logger = require('../modules/logger');
|
||||
const Mailer = require('../modules/mailer');
|
||||
const Messages = require('../models/message');
|
||||
const Mongoose = require('mongoose');
|
||||
|
||||
function outputMessagesAsText (messages, asHtml = false) {
|
||||
var output = '';
|
||||
for (let i = 0; i < messages.length; i++) {
|
||||
if (asHtml) {
|
||||
output += (!message.isUser ? '<p><b>Question: ' : '<b>Response</b><br>') + message.text + (!message.isUser ? '</b>' : '') + '</p>';
|
||||
} else {
|
||||
output += (!message.isUser ? 'Question: ' : 'Response\r\r') + message.text + '\r\r\r\r';
|
||||
}
|
||||
}
|
||||
return output;
|
||||
}
|
||||
|
||||
const ProfileSchema = new Mongoose.Schema({
|
||||
"order" : { type: Number, default: 0 },
|
||||
"details": {
|
||||
@@ -333,9 +345,7 @@ module.exports = {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
promise.then((result) => {
|
||||
@@ -483,28 +493,46 @@ module.exports = {
|
||||
},
|
||||
|
||||
processSubmission: (e, profile) => {
|
||||
var ProfileEvents = new EventEmitter();
|
||||
var temp = JSON.parse(profile.profile);
|
||||
var insert = {
|
||||
details: temp.details,
|
||||
messages: temp.messages,
|
||||
submitted: true,
|
||||
approved: false
|
||||
};
|
||||
var profileModel = {};
|
||||
profileModel.details = profile.details;
|
||||
profileModel.details.pic = { detail: profile.image };
|
||||
profileModel.messages = profile.messages;
|
||||
profileModel.submitted = true;
|
||||
profileModel.approved = false;
|
||||
|
||||
insert.details.pic = { detail: profile.image };
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
var profileInstance = new ProfileModel(profileData);
|
||||
|
||||
profileInstance.save((err, result) => {
|
||||
if (err) {
|
||||
reject({ success: false, message: 'Failed to save user submission.', err: err });
|
||||
}
|
||||
|
||||
if (result) {
|
||||
let approveProfileLink = 'https://api.fitz.guru/urnings/profiles/approve/' + encodeURIComponent(result._id);
|
||||
|
||||
// setup email data with unicode symbols
|
||||
let mail = {
|
||||
from: '"Urnings|looking App" <system@appsby.fitz.guru>',
|
||||
to: 'mike@fitz.guru',
|
||||
subject: 'New Profile Submission',
|
||||
text: 'New Profile Submission\r\r\r\rName: ' + result.details.name + '(' + result.details.email + ')\r\rLocation: ' + result.details.location + '\r\rAbout: ' + result.details.about + '\r\rImage: ' + result.details.pic.detail + '\r\rMessages:\r' + outputMessagesAsText(result.messages) + '\r\r\r\rTo approve this profile: ' + approveProfileLink + '\r\r',
|
||||
html: '<h2>New Profile Submission<h2><p><b>Name:</b> ' + result.details.name + '(<a href="mailto:' + result.details.email + '">' + result.details.email + '</a>)<br><b>Location:</b> ' + result.details.location + '<p><p>About:<br>' + result.details.about + '</p><p><b>Image:</b><br><img src="' + result.details.pic.detail + '"></p><div>Messages:<br>' + outputMessagesAsText(result.messages, true) + '</div><p>To approve this profile: <a href="' + approveProfileLink + '">click here</a>.</p>',
|
||||
};
|
||||
|
||||
ProfileEvents.once('create', (err, result) => {
|
||||
if (err) {
|
||||
e.emit('processSubmission', err, null);
|
||||
}
|
||||
|
||||
if (result) {
|
||||
e.emit('processSubmission', null, result);
|
||||
}
|
||||
Mailer.send(mail, (err, result) => {
|
||||
resolve({ success: true, mailer: { err: err, result: result } });
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
module.exports.create(ProfileEvents, insert);
|
||||
|
||||
promise.then((result) => {
|
||||
e.emit('processSubmission', null, result);
|
||||
})
|
||||
.catch((err) => {
|
||||
e.emit('processSubmission', err, null);
|
||||
});
|
||||
},
|
||||
|
||||
update: (e, profileId, profile) => {
|
||||
|
||||
32
modules/mailer.js
Normal file
32
modules/mailer.js
Normal file
@@ -0,0 +1,32 @@
|
||||
const Mailer = require('nodemailer');
|
||||
|
||||
function sendMail (options, callback) {
|
||||
// create reusable transporter object using the default SMTP transport
|
||||
let transporter = Mailer.createTransport({
|
||||
host: 'mail.fitz.guru',
|
||||
port: 587,
|
||||
secure: false, // secure:true for port 465, secure:false for port 587
|
||||
auth: {
|
||||
user: 'support@fitz.guru',
|
||||
pass: 'NotSt@ff3d!'
|
||||
}
|
||||
});
|
||||
|
||||
callback = typeof callback === 'function' ? callback : (error, info) => {
|
||||
if (error) {
|
||||
return console.error(error);
|
||||
}
|
||||
|
||||
console.debug('Message %s sent: %s', info.messageId, info.response);
|
||||
};
|
||||
|
||||
// send mail with defined transport object
|
||||
transporter.sendMail(options, callback);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
|
||||
send: (email, callback) => {
|
||||
sendMail(mail, callback);
|
||||
}
|
||||
};
|
||||
@@ -178,20 +178,20 @@ Router.route('/list' + ParamStr)
|
||||
|
||||
Router.route('/submission')
|
||||
.post((req, res) => {
|
||||
var ProfileEvents = new EventEmitter();
|
||||
var profile = req.body;
|
||||
var ProfileEvents = new EventEmitter();
|
||||
var profile = req.body;
|
||||
|
||||
ProfileEvents.once('processSubmission', (err, result) => {
|
||||
if (err) {
|
||||
res.status(500).json({ message: 'Could not process user profile submission', err: err, profile: profile });
|
||||
}
|
||||
ProfileEvents.once('processSubmission', (err, result) => {
|
||||
if (err) {
|
||||
res.status(500).json({ message: 'Could not process user profile submission', err: err, profile: profile });
|
||||
}
|
||||
|
||||
if (result) {
|
||||
res.status(200).json(result);
|
||||
}
|
||||
});
|
||||
if (result) {
|
||||
res.status(200).json(result);
|
||||
}
|
||||
});
|
||||
|
||||
Profiles.processSubmission(ProfileEvents, profile);
|
||||
Profiles.processSubmission(ProfileEvents, profile);
|
||||
});
|
||||
|
||||
Router.route('/submitted')
|
||||
|
||||
Reference in New Issue
Block a user