From c1994b0396bd08b06a1e7ede79ef1151ddc082eb Mon Sep 17 00:00:00 2001 From: Klaas Date: Mon, 27 May 2024 20:37:35 +0200 Subject: [PATCH] =?UTF-8?q?Mitglied=20anlegen=20und=20in=20Riege=20eintrag?= =?UTF-8?q?en.=20Telefonnummern=20hinzuf=C3=BCgen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.js | 51 ++++++++++++++++++++++++++++++++++++++++++++++ views/admin.ejs | 14 +++++++++++++ views/mitglied.ejs | 46 +++++++++++++++++++++++++++++++++++++++-- 3 files changed, 109 insertions(+), 2 deletions(-) diff --git a/app.js b/app.js index 26eea8f..144dba4 100644 --- a/app.js +++ b/app.js @@ -165,6 +165,22 @@ ORDER BY weeks_since_last DESC; return result.rows; }; +const putInRiege = async (riege, teilnehmerID) => { + try { + const resultRiege = await pool.query('SELECT * FROM riegen WHERE fremdid_teilnehmende = $1', [teilnehmerID]); + if (resultRiege.rows > 0) { + const resultRiege = await pool.query('UPDATE riegen SET riegennummer = $1 WHERE fremdid_teilnehmende = $2', [riege, teilnehmerID]); + console.log("Mitglied ist jetzt in Riege $1", [riege]); + } else { + const resultRiege = await pool.query('INSERT INTO riegen (fremdid_teilnehmende, riegennummer) VALUES ($1, $2)', [teilnehmerID, riege]); + console.log("Mitglied neu in Riegen eingefügt."); + } + } catch (error) { + console.error('Error adding new spiel:', error); + throw error; + } +}; + // Funktion zum Laden der vier Leute, die am längsten nicht Spiel geleitet haben const getCandidatesForSpielleiter = async () => { const result = await pool.query(` @@ -395,6 +411,19 @@ app.get('/admin', requireAuth, requireAdmin, async (req, res) => { res.render('admin', { users: usersResult.rows, session: req.session }); // Stelle sicher, dass es eine admin.ejs gibt }); +app.post('/new-member', requireAuth, requireAdmin ,async(req, res) => { + const {name, geburt, riege, adresse} = req.body; +try { + console.log(('INSERT INTO teilnehmende (name, geburtsdatum, adresse) VALUES ($1, $2, $3) RETURNING id', [name, geburt, adresse])); + const teilnehmerID = await pool.query('INSERT INTO teilnehmende (name, geburtsdatum, adresse) VALUES ($1, $2, $3) RETURNING id', [name, geburt, adresse]); + putInRiege(riege, teilnehmerID); +res.redirect('/riege'); +}catch (err) { + console.error(err); + res.send("Error " + err); +} +}) + // Teilnehmer_innen app.get('/', requireAuth, async (req, res) => { try { @@ -502,6 +531,8 @@ app.get('/mitglied/:id', requireAuth, async (req, res) => { const { id } = req.params; try { const userResult = await pool.query('SELECT * FROM teilnehmende WHERE id = $1', [id]); + const numberResult = await pool.query('SELECT * FROM telefonnummern JOIN telverbindung ON telefonnummern.verbindung = telverbindung.id WHERE telefonnummern.fid_teilnehmer = $1', [id]); + const numbers = numberResult.rows if (userResult.rows.length > 0) { const mitglied = userResult.rows.map(t => ({ ...t, @@ -510,6 +541,7 @@ app.get('/mitglied/:id', requireAuth, async (req, res) => { res.render('mitglied', { id, mitglied: mitglied[0], + numbers, session: req.session }); } else { @@ -521,6 +553,25 @@ app.get('/mitglied/:id', requireAuth, async (req, res) => { } }); +app.post('/set-riege', requireAuth, async (req, res) => { + const { riege, id } = req.body; + putInRiege(riege, id); + res.redirect('/riege'); +}) + +app.post('/update-mitglied', async (req, res) => { + const { mitgliedId, name, verbindung, nummer } = req.body; + try{ + console.log('INSERT INTO telefonnummern (fid_teilnehmer, name, verbindung, nummer, stand) VALUES ($1, $2, $3, $4, $5)', [mitgliedId, name, verbindung, nummer, moment().toDate()]); + await pool.query('INSERT INTO telefonnummern (fid_teilnehmer, name, verbindung, nummer, stand) VALUES ($1, $2, $3, $4, $5)', [mitgliedId, name, verbindung, nummer, moment().toDate()]); + console.log('/mitglied/' + mitgliedId); + res.redirect('/mitglied/' + mitgliedId); + } catch (err) { + console.error(err); + res.send("Error " + err); + } +}); + // Login und Registrierung anzeigen app.get('/login', (req, res) => { res.render('login', {session: req.session}); // Stelle sicher, dass es eine login.ejs gibt diff --git a/views/admin.ejs b/views/admin.ejs index a996ae3..f399c70 100644 --- a/views/admin.ejs +++ b/views/admin.ejs @@ -13,4 +13,18 @@ <% }) %> +
+ Name:
+ Geburtsdatum:
+
+ Adresse:
+ +
+ <%- include('partials/footer') %> diff --git a/views/mitglied.ejs b/views/mitglied.ejs index b19ccaf..151f749 100644 --- a/views/mitglied.ejs +++ b/views/mitglied.ejs @@ -4,7 +4,49 @@

<%= mitglied.name %>

- Geburtsdatum <%= birthday.getDate() %>.<%= birthday.getMonth() + 1 %>.<%= birthday.getFullYear() %> (<%= mitglied.age %>)
- Adresse <%= mitglied.adresse %> +
+ +
+ +
+ + + Geburtsdatum: <%= birthday.getDate() %>.<%= birthday.getMonth() + 1 %>.<%= birthday.getFullYear() %> (<%= mitglied.age %>)
+ Adresse: <%= mitglied.adresse %>
+<% numbers.forEach(number => { %> + <% if (number.verbindung === 4) { %> + Telefonnummer: <%= number.nummer %>
+ <% }}) %> + +

Notfallnummern

+

+<% numbers.forEach(number => { %> +<% if (number.verbindung != 4) { %> +<%= number.bezeichnung %> - <%= number.name %>: <%= number.nummer %> (stand: <%= number.stand.getDate() %>.<%= number.stand.getMonth() %>.<%= number.stand.getFullYear() %>)
+<% }}) %> +

+ +
+ + + + + +
+ + <%- include('partials/footer') %>