155 lines
4.7 KiB
JavaScript
155 lines
4.7 KiB
JavaScript
const express = require('express')
|
|
const mysql = require("mysql")
|
|
const dotenv = require('dotenv')
|
|
const app = express()
|
|
const path = require("path")
|
|
const publicDir = path.join(__dirname, './public')
|
|
var bodyParser = require('body-parser')
|
|
|
|
/* Pour le Javascript embarqué */
|
|
app.use('/js', express.static(__dirname + './../public'));
|
|
|
|
|
|
/* Connexion à la BDD MySQL */
|
|
dotenv.config({ path: './.env'})
|
|
const db = mysql.createConnection({
|
|
host: process.env.DATABASE_HOST,
|
|
port: process.env.DATABASE_PORT,
|
|
user: process.env.DATABASE_USER,
|
|
password: process.env.DATABASE_PASSWORD,
|
|
database: process.env.DATABASE
|
|
})
|
|
db.connect((error) => {
|
|
if(error) {
|
|
console.log(error)
|
|
} else {
|
|
console.log("MySQL connected!")
|
|
}
|
|
})
|
|
|
|
app.set('view engine', 'hbs');
|
|
app.use(express.static(publicDir));
|
|
/* Pour utiliser le bootstrap local */
|
|
app.use('/css', express.static(__dirname + '/node_modules/bootstrap/dist/css'));
|
|
/* configure the Express.js server to receive the form values as JSON */
|
|
app.use(bodyParser.urlencoded({extended: false}));
|
|
app.use(express.json())
|
|
|
|
|
|
const isEqual = function(a, b, opts) {
|
|
if (a == b) {
|
|
return opts.fn(this)
|
|
} else {
|
|
return opts.inverse(this)
|
|
}
|
|
}
|
|
|
|
var hbs = require('hbs');
|
|
const { exit } = require('process')
|
|
hbs.registerHelper('equals', isEqual);
|
|
|
|
|
|
app.get("/", (req, res) => {
|
|
|
|
db.query('SELECT c.id as "id", c.libelle as "libelle", c.prix, c.photo as "photo", c.lien, pc.offrant as "acheteur", c.pour_noel as "pourNoel" FROM cadeau c LEFT OUTER JOIN participations pc on pc.cadeau = c.id ORDER BY c.pour_noel, c.prix', async (error, resultCadeaux) => {
|
|
let message;
|
|
|
|
if(error){
|
|
console.log(error);
|
|
}
|
|
if (resultCadeaux && resultCadeaux.length == 0) {
|
|
console.log("Aucun cadeau");
|
|
message = "Aucun cadeau pour l'instant";
|
|
}
|
|
res.render('index', { message: message, cadeaux: resultCadeaux })
|
|
})
|
|
});
|
|
|
|
|
|
app.get("/choix-offrant", (req, res) => {
|
|
let cadeau = req.query.cadeau;
|
|
|
|
res.render('offrant', { "cadeau" : cadeau});
|
|
})
|
|
|
|
|
|
app.get("/reservation", (req, res) => {
|
|
|
|
let cadeau = req.query.cadeau;
|
|
let offrant = req.query.offrant;
|
|
|
|
db.query('SELECT id, libelle, prix, photo, lien, pour_noel as "pourNoel" FROM cadeau WHERE id = ?', [cadeau], async (error, infosCadeau) => {
|
|
if(error) {
|
|
console.log(error);
|
|
}
|
|
res.render('reservation', { "infosCadeau": infosCadeau[0], "offrant" : offrant });
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
app.post("/confirm-reservation", (req, res) => {
|
|
const { cadeau, offrant, occasion } = req.body
|
|
|
|
db.query('UPDATE cadeau SET pour_noel=? WHERE ID=?', [occasion, cadeau], function (err, result) {
|
|
if (err) throw err;
|
|
console.log("1 record updated");
|
|
});
|
|
|
|
db.query('INSERT INTO participations (offrant, cadeau) VALUES (?, ?)', [offrant, cadeau], function (err, result) {
|
|
if (err) throw err;
|
|
console.log("1 record inserted");
|
|
});
|
|
|
|
res.redirect('/');
|
|
});
|
|
|
|
|
|
// Pour voter sur la présence à son anniversaire
|
|
app.get("/presence-anniversaire", (req, res) => {
|
|
var child_process = require("child_process");
|
|
let enfant = req.query.e;
|
|
let present = req.query.p;
|
|
let messageNotif = enfant + (present == 'true' ? "" : " ne") + " sera" + (present == 'true' ? "" : " pas") + " là le 14 décembre 2024";
|
|
|
|
db.query("DELETE FROM anniversaire WHERE enfant = ?", [enfant], function (err, result) {
|
|
if (err) throw err;
|
|
|
|
db.query("INSERT INTO anniversaire (enfant, present) VALUES (?, ?)", [enfant, (present == 'true' ? 1 : 0)], function (err, result) {
|
|
if (err) throw err;
|
|
|
|
child_process.exec("hostname -f", function(err, stdout, stderr) {
|
|
var hostname = stdout.trim();
|
|
if (hostname == "NAS") {
|
|
fetch('http://127.0.0.1:5202/anniv-louisa', {
|
|
method: "POST",
|
|
body: messageNotif
|
|
})
|
|
} else {
|
|
fetch('https://ntfy.sh/presence-anniversaire-louisa', {
|
|
method: "POST",
|
|
body: messageNotif
|
|
})
|
|
}
|
|
});
|
|
res.render('votre-vote', { "enfant": enfant, "present": (present == 'true' ? 1 : 0) });
|
|
});
|
|
});
|
|
});
|
|
|
|
app.get("/anniv", (req, res) => {
|
|
|
|
db.query('SELECT enfant as "prenom" FROM anniversaire WHERE present = 1 ORDER BY prenom', async (error, result) => {
|
|
if(error) {
|
|
console.log(error);
|
|
}
|
|
res.render('presence', { presents: result } );
|
|
});
|
|
});
|
|
|
|
|
|
app.listen(5006, ()=> {
|
|
console.log("server started on port 5006")
|
|
});
|