Mitglied anlegen und in Riege eintragen. Telefonnummern hinzufügen

This commit is contained in:
Klaas 2024-05-27 20:37:35 +02:00
parent acd5663f6b
commit c1994b0396
3 changed files with 109 additions and 2 deletions

51
app.js
View File

@ -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

View File

@ -13,4 +13,18 @@
<% }) %>
</ul>
<form method="POST" action="/new-member">
Name: <input type="text" id="name" placeholder="Name" name="name"> </br>
Geburtsdatum: <input type="date" id="riege" name="geburt"></br>
<select name="riege">
<option value=1> Riege 1</option>
<option value=2> Riege 2</option>
<option value=3> Riege 3</option>
<option value=4> Riege 4</option>
<option value=5> Riege 5</option>
</select></br>
Adresse: <input type="text" id="adresse" placeholder="Adresse" name="adresse"></br>
<button type="submit">Speichern</button>
</form>
<%- include('partials/footer') %>

View File

@ -4,7 +4,49 @@
<h1> <%= mitglied.name %> </h1>
<strong> Geburtsdatum </strong> <%= birthday.getDate() %>.<%= birthday.getMonth() + 1 %>.<%= birthday.getFullYear() %> (<%= mitglied.age %>) </br>
<strong> Adresse </strong> <%= mitglied.adresse %>
<form method="POST" action="/set-Riege">
<input type="hidden" name="id" value="<%= id %>">
<select name="riege">
<option value=1> Riege 1</option>
<option value=2> Riege 2</option>
<option value=3> Riege 3</option>
<option value=4> Riege 4</option>
<option value=5> Riege 5</option>
</select></br>
<button type="submit">Speichern</button>
</form>
<strong> Geburtsdatum: </strong> <%= birthday.getDate() %>.<%= birthday.getMonth() + 1 %>.<%= birthday.getFullYear() %> (<%= mitglied.age %>) </br>
<strong> Adresse: </strong> <%= mitglied.adresse %> </br>
<% numbers.forEach(number => { %>
<% if (number.verbindung === 4) { %>
<strong> Telefonnummer: </strong> <%= number.nummer %> </br>
<% }}) %>
<h2>Notfallnummern</h2>
<p>
<% numbers.forEach(number => { %>
<% if (number.verbindung != 4) { %>
<strong><%= number.bezeichnung %> - <%= number.name %>: </strong> <%= number.nummer %> (stand: <%= number.stand.getDate() %>.<%= number.stand.getMonth() %>.<%= number.stand.getFullYear() %>) </br>
<% }}) %>
</p>
<form method="POST" action="/update-mitglied">
<input type="hidden" name="mitgliedId" value="<%= id %>">
<select name="verbindung">
<option value=1>Mutter</option>
<option value=2>Vater</option>
<option value=3>Eltern</option>
<option value=4>Eigene</option>
<option value=5>Oma</option>
<option value=6>Opa</option>
</select>
<input name="name" placeholder="Name" type="text" >
<input name="nummer" placeholder="+49 123 456 789" type="text">
<button type="submit">Speichern</button>
</form>
<%- include('partials/footer') %>