Skip to content
Snippets Groups Projects
Commit 080413e0 authored by Marc Vachon's avatar Marc Vachon
Browse files

email sent

parent e1b4b11e
No related branches found
No related tags found
No related merge requests found
"use strict"
var db = require('../db/db_request')
var email = require('../email/email')
var config = require('../../config/config.json')
module.exports = {
choose_appointment: (idMeeting, callback) => {
......@@ -40,9 +41,10 @@ function choose_date(idMeeting, callback){
console.log("Date: ", date.day + "/" + date.month + "/" + date.year, "à", date.time.hour + ":" + date.time.minutes, "works for", percentage + "%", "of the people");
if(percentage < 80){
console.log("J'envoie un mail à tout le monde pour leur dire");
//email.send()
if(percentage < config.appointement.min_perc){
email.missing_people(idMeeting, date.day + "/" + date.month + "/" + date.year, percentage, nb_user)
}
......
......@@ -30,6 +30,18 @@ module.exports = {
})
},
get_emails: (idMeeting, callback) => {
get_users(idMeeting, function(users){
var emails = []
users.forEach(function(u){
emails.push(u.email)
})
callback(emails)
})
},
get_calendar: (idMeeting, callback) => {
get_users(idMeeting, function(users){
var calendar = []
......@@ -117,7 +129,7 @@ module.exports = {
if (error) throw error;
console.log('User', idUser, 'have been updated:', data);
callback(results)
})
},
......
......@@ -2,17 +2,67 @@
const nodemailer = require('nodemailer')
const credentials = require('../../config/credentials.json')
const config = require('../../config/config.json')
const db = require('../db/db_request')
module.exports = {
send: () => {
var to = "vachon.marc@outlook.com"
new_meeting: (to, idMeeting) => {
let sub = "MEETUS: Nouveau Meeting"
var msg = `
<b>Vous venez de créer un rendez-vous Meetus</b>
<p>C'est le moment d'ajouter de nouvelle peronnes à ce rendez-vous.
Pour ce faire il suffit de partager le code suivant.</p>
<h4><b>${idMeeting}</b></h4>
<p>Pour rejoindre le rendez-vous il suffit d'entrer le code sur la page d'accueil du site.</p>
<p>Une fois sur la page du rendez-vous il suffit d'appuyez sur le bouton "ajouter un membre" et
d'entrer le informations pour ajouter une personne.</p>
<p>Cordialement</p>
<p>L'équipe technique de Meetus</p>
`
send(to, sub, msg).catch(console.error);
},
missing_people: (idMeeting, date, perc, nbPeople) => {
let sub = "MEETUS: Rendez-vous incertain"
var msg = `
<p>Le rendez-vous <b>${idMeeting}</b> vient d'être programmé et un certain nombre de personne ne pourra être présente.</p>
<p>La date du <b>${date}</b> vient d'être choisit car elle permet à un maximum de personne d'être présente.</p>
<p>Malheureusment seul <b>${perc}%</b> des ${nbPeople} membres pourront être présent ce jour-ci.</p>
<p>Ce mail a pour but d'être informatif et vous demande de prendre note de cette information.</p>
<p>Cordialement</p>
<p>L'équipe technique de Meetus</p>
`
db.get_emails(idMeeting, function(emails){
emails.forEach(function(e){
send(e, sub, msg).catch(console.error);
})
})
main(to).catch(console.error);
}
}
// async..await is not allowed in global scope, must use a wrapper
async function main(to){
async function send(to, sub, msg){
// Generate test SMTP service account from ethereal.email
// Only needed if you don't have a real mail account for testing
......@@ -20,9 +70,9 @@ async function main(to){
// create reusable transporter object using the default SMTP transport
let transporter = nodemailer.createTransport({
host: "smtp.gmail.com",
port: 587,
secure: false, // true for 465, false for other ports
host: config.email.server,
port: config.email.port,
secure: config.email.secure, // true for 465, false for other ports
auth: {
user: credentials.gmail.account, // generated ethereal user
pass: credentials.gmail.password // generated ethereal password
......@@ -33,15 +83,9 @@ async function main(to){
let info = await transporter.sendMail({
from: '"Marc Vachon" <' + credentials.gmail.account + '>', // sender address
to: to, // list of receivers
subject: "Hello ✔", // Subject line
text: "Hello world?", // plain text body
html: "<b>Hello world?</b>" // html body
subject: sub, // Subject line
html: msg
});
console.log("Message sent: %s", info.messageId);
// Message sent: <b658f8ca-6296-ccf4-8306-87d57a0b4321@example.com>
// Preview only available when sending through an Ethereal account
console.log("Preview URL: %s", nodemailer.getTestMessageUrl(info));
// Preview URL: https://ethereal.email/message/WaQKMgKddxQDoou...
console.log("Email sent to:", to)
}
{
"not_enough_people":{
"subject": "Hello ✔",
"text": "Hello world?",
"html": "<b>Hello world?</b>"
},
"new_meeting":{
"subject": "Hello ✔",
"text": "Hello world?",
"html": "<b>Hello world?</b>"
}
}
......@@ -8,6 +8,7 @@ var journey = require('./journey/journey')
var user = require('./user/user')
var search = require('./appointement/search_cities')
var hash = require('./hash/hash')
var email = require('./email/email')
module.exports = {
create_meeting: (data, callback) => {
......@@ -21,6 +22,9 @@ module.exports = {
db.create_meeting(id, JSON.stringify(data), function(result){
console.log(result);
email.new_meeting(data.email, id)
//console.log("email:", data.email);
callback(id)
})
})
......
......@@ -15,5 +15,13 @@
},
"transport_search":{
"method": "transport_api"
},
"appointement":{
"min_perc": 80
},
"email":{
"server": "smtp.gmail.com",
"port": 587,
"secure": false
}
}
{
"name": "MarcBook Pro",
"creator": "Marc Vachon",
"email": "vachon.marc@outlook.com",
"percentage": 0,
"period":{
"date_from": {
......
......@@ -86,11 +86,12 @@ module.exports = function(server){
})
})
socket.on('test_class', function(){
socket.on('test_class', function(idMeeting){
//meetus.load_cities()
//meetus.update_journeys()
//hash.generate_id()
email.send()
console.log("Socket email:", idMeeting);
email.new_meeting("vachon.marc@outlook.com", idMeeting)
})
......
......@@ -14,6 +14,7 @@
var data = {
name: $('#meeting_name').val(),
creator: $('#creator_name').val(),
email: $('#email').val(),
percentage: 0,
period: {
date_from: {
......@@ -68,6 +69,9 @@ socket.on('create_meeting', function(id){
<label for="creator_name" class="col-form-label d-block">Creator name</label>
<input class="w-75" type="text" placeholder="Michael Jackson" value="Michael Jackson" id="creator_name">
<label for="creator_name" class="col-form-label d-block">Email</label>
<input class="w-75" type="email" placeholder="example@email.com" value="vachon.marc@outlook.com" id="email">
</div>
<div class="col-md-6">
......@@ -80,7 +84,7 @@ socket.on('create_meeting', function(id){
<label for="date_to" class="col-form-label d-block">to</label>
<input type="number" min="1" max="31" value="17" id="dt_day"> /
<input type="number" min="1" max="12" value="7" id="dt_month"> /
<input type="number" min="1" max="12" value="7" id="dt_month"> /
<input type="number" min="2019" value="2019" id="dt_year">
</div>
</div>
......
......@@ -23,11 +23,11 @@
<h2 class="font-weight-bold">Utilisateurs</h2>
<div class="d-flex justify-content-end w-100">
<button type="button" name="add user" class="btn btn-primary" onclick="toggle_add_user()">Ajouter un membre</button>
<button type="button" name="button" class="btn btn-info mx-2" onclick="update_center()">Center</button>
<button type="button" name="button" class="btn btn-secondary mx-2" onclick="update_appointement()">Appointement</button>
<button type="button" name="button" class="btn btn-danger mx-2" onclick="update_journeys()">Journey</button>
<button type="button" name="button" class="btn btn-success mx-2" onclick="socket.emit('test_class')">Test</button>
<button type="button" name="button" class="btn btn-success mx-2" onclick="socket.emit('test_class', id_meeting)">Test</button>
</div>
</div>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment