124 lines
3.9 KiB
JavaScript
Executable File
124 lines
3.9 KiB
JavaScript
Executable File
/*
|
|
chekcSofue.js
|
|
|
|
Checked per cron jeden Tag die SOFUE - Datenbank. Prüft, ob 'gestern' eine
|
|
Führung hätte stattfinden sollen. Wenn ja, wird der BEO der Führung per mail
|
|
benachrichtigt mit der Bitte, die Nachbearbeitungs-Webseite auszufüllen.
|
|
|
|
|
|
|
|
TODO
|
|
Dieses Programm kann auch die Überwachung machen, dass Einträge in der DB gelöscht werden:
|
|
- abgesagte: sofort nach Absage
|
|
- stattgefundene: nach 6 Monaten, hier nur die persönl. Daten löschen
|
|
- Aber Statistik-Daten behalten: Anzahl der Anfragen, davon zugesagt, davon abgesagt
|
|
|
|
|
|
Versions:
|
|
V 0.0 2019-02-04 rxf
|
|
- Start
|
|
*/
|
|
"use strict"
|
|
|
|
const DEVELOP=0; // 1 -> Entwicklung 0-> Produktion
|
|
const DAYS=9;
|
|
|
|
const nodemailer = require('nodemailer');
|
|
const moment = require('moment');
|
|
const axios = require('axios');
|
|
const mysql = require('mysql2/promise');
|
|
|
|
const beo_Url = 'beoanswer/beoanswer.php?fdate=';
|
|
const Url = DEVELOP ? 'http://localhost:8081/' : 'https://sternwarte-welzheim.de/';
|
|
const DB_host = DEVELOP ? 'localhost' : 'localhost';
|
|
const DB_port = DEVELOP ? 3306 : 3306;
|
|
const DB_user = DEVELOP ? 'root' : 'admin_310927';
|
|
const DB_pass = DEVELOP ? 'SFluorit' : '5D5u49cKNFqf';
|
|
const DB_dbase = DEVELOP ? 'sternwarte' : 'db310927';
|
|
|
|
const transporter = DEVELOP ? nodemailer.createTransport({
|
|
host: 'localhost',
|
|
port: 1025,
|
|
secure: false, // true for 465, false for other ports
|
|
}) : nodemailer.createTransport({
|
|
sendmail: true
|
|
// host: 'smtp.1und1.de',
|
|
// port: 587,
|
|
// secure: false, // true for 465, false for other ports
|
|
// auth: {
|
|
// user: 'rxf@fuerst-stuttgart.de', // generated ethereal user
|
|
// pass: 'tibTop-xopqar-1qyrqe' // generated ethereal password
|
|
// }
|
|
});
|
|
|
|
|
|
// Ajax-Call, um die Daten von der DBase zu holen
|
|
async function fetchDatafromDB(conn,termin) {
|
|
let result;
|
|
let id;
|
|
let query = "select mitarbeiter,id from SoFue2 where DATE(wtermin) = '" + termin + "' and status = 2";
|
|
try {
|
|
result = await conn.query(query);
|
|
if (result[0].length == 0) {
|
|
console.log("Keine Führung gewesen");
|
|
return;
|
|
}
|
|
let ma = result[0][0].mitarbeiter;
|
|
id = result[0][0].id;
|
|
query = "select vorname,email_1 from beos where name = '" + ma + "'";
|
|
result = await conn.query(query);
|
|
}
|
|
catch(err) {
|
|
console.log(err);
|
|
}
|
|
finally {
|
|
conn.end();
|
|
}
|
|
let erg = result[0];
|
|
send2BEO({name: erg[0].vorname, email: erg[0].email_1, date: termin, id: id});
|
|
}
|
|
|
|
|
|
function send2BEO(info) {
|
|
var mailOptions = {
|
|
from: 'noreply@sternwarte-welzheim.de',
|
|
// to: info.email,
|
|
to: 'rexfue@gmail.com',
|
|
subject: 'Sonderführung vom '+info.date,
|
|
text: 'Hallo ' + info.name +',\n\n'
|
|
+ 'Du hattest gestern Führung! '
|
|
+ 'Bitte fülle folgendes Webformular aus:\n\n'
|
|
+ Url + beo_Url + info.date + '&id=' + info.id
|
|
+ '\n\nBitte nur über diesen Link zugreifen (oder exakt abschreiben),\n'
|
|
+ 'da sonst die Zuordnung nicht hergestellt werden kann.\n'
|
|
+ 'Besten Dank.\n\nGrüße vom Sonderführungsteam'
|
|
};
|
|
|
|
transporter.sendMail(mailOptions, function (error, info) {
|
|
if (error) {
|
|
console.log(error);
|
|
} else {
|
|
console.log('Email gesendet an ' + mailOptions.to);
|
|
// console.log(info);
|
|
}
|
|
});
|
|
}
|
|
|
|
async function main() {
|
|
console.log(DB_host, DB_port, DB_user, DB_pass, DB_dbase);
|
|
const connection = await mysql.createConnection({
|
|
// host: DB_host,
|
|
// port: DB_port,
|
|
user: DB_user,
|
|
password: DB_pass,
|
|
database: DB_dbase,
|
|
socketPath: '/var/lib/mysql/mysql.sock'
|
|
});
|
|
const yesterday = moment().subtract(DAYS, 'd').format('YYYY-MM-DD');
|
|
console.log('Yesterday:', yesterday)
|
|
await fetchDatafromDB(connection, yesterday);
|
|
console.log("All done");
|
|
}
|
|
|
|
main().catch(console.error);
|