Merge branch 'main' of https://git.boergmann.it/klaas/training
Hotfix auf dem Server
This commit is contained in:
commit
71bd4ba9bf
63
app.js
63
app.js
|
@ -675,10 +675,20 @@ app.get("/training", requireAuth, async (req, res) => {
|
||||||
|
|
||||||
// Abrufen der Riegendaten einschließlich der Teilnehmer und deren Altersberechnung
|
// Abrufen der Riegendaten einschließlich der Teilnehmer und deren Altersberechnung
|
||||||
const result = await pool.query(`
|
const result = await pool.query(`
|
||||||
SELECT r.riegennummer, t.id, t.name, t.vorname, t.nachname, t.geburtsdatum, r.helfer
|
SELECT r.riegennummer,
|
||||||
FROM riegen r
|
t.id,
|
||||||
JOIN teilnehmende t ON r.fremdID_Teilnehmende = t.id
|
t.name,
|
||||||
ORDER BY r.riegennummer, t.geburtsdatum ASC
|
t.vorname,
|
||||||
|
t.nachname,
|
||||||
|
t.geburtsdatum,
|
||||||
|
t.probe,
|
||||||
|
r.helfer,
|
||||||
|
COUNT(a.fid_teilnehmer) AS anwesenheit
|
||||||
|
FROM riegen r
|
||||||
|
JOIN teilnehmende t ON r.fremdID_Teilnehmende = t.id
|
||||||
|
LEFT JOIN anwesend a ON t.id = a.fid_teilnehmer
|
||||||
|
GROUP BY r.riegennummer, t.id, t.name, t.vorname, t.nachname, t.geburtsdatum, r.helfer
|
||||||
|
ORDER BY r.riegennummer, t.geburtsdatum ASC;
|
||||||
`);
|
`);
|
||||||
|
|
||||||
// Gruppieren der Riegenteilnehmer nach Riegennummer
|
// Gruppieren der Riegenteilnehmer nach Riegennummer
|
||||||
|
@ -696,6 +706,8 @@ app.get("/training", requireAuth, async (req, res) => {
|
||||||
nachname: row.nachname,
|
nachname: row.nachname,
|
||||||
age: age,
|
age: age,
|
||||||
helfer: row.helfer,
|
helfer: row.helfer,
|
||||||
|
probe: row.probe,
|
||||||
|
anwesenheit: row.anwesenheit,
|
||||||
anwesend: tnAnwesend,
|
anwesend: tnAnwesend,
|
||||||
anzahl,
|
anzahl,
|
||||||
});
|
});
|
||||||
|
@ -737,12 +749,22 @@ app.get("/riege", requireAuth, async (req, res) => {
|
||||||
try {
|
try {
|
||||||
// Abrufen der Riegendaten einschließlich der Teilnehmer und deren Altersberechnung
|
// Abrufen der Riegendaten einschließlich der Teilnehmer und deren Altersberechnung
|
||||||
const result = await pool.query(`
|
const result = await pool.query(`
|
||||||
SELECT r.riegennummer, t.id, t.name, t.vorname, t.nachname, t.geburtsdatum, r.helfer
|
SELECT r.riegennummer,
|
||||||
FROM riegen r
|
t.id,
|
||||||
JOIN teilnehmende t ON r.fremdID_Teilnehmende = t.id
|
t.name,
|
||||||
ORDER BY r.riegennummer, t.geburtsdatum ASC
|
t.vorname,
|
||||||
`);
|
t.nachname,
|
||||||
|
t.geburtsdatum,
|
||||||
|
t.probe,
|
||||||
|
r.helfer,
|
||||||
|
COUNT(a.fid_teilnehmer) AS anwesenheit
|
||||||
|
FROM riegen r
|
||||||
|
JOIN teilnehmende t ON r.fremdID_Teilnehmende = t.id
|
||||||
|
LEFT JOIN anwesend a ON t.id = a.fid_teilnehmer
|
||||||
|
GROUP BY r.riegennummer, t.id, t.name, t.vorname, t.nachname, t.geburtsdatum, r.helfer
|
||||||
|
ORDER BY r.riegennummer, t.geburtsdatum ASC;
|
||||||
|
|
||||||
|
`);
|
||||||
// Gruppieren der Riegenteilnehmer nach Riegennummer
|
// Gruppieren der Riegenteilnehmer nach Riegennummer
|
||||||
const riegen = {};
|
const riegen = {};
|
||||||
result.rows.forEach((row) => {
|
result.rows.forEach((row) => {
|
||||||
|
@ -757,6 +779,8 @@ app.get("/riege", requireAuth, async (req, res) => {
|
||||||
nachname: row.nachname,
|
nachname: row.nachname,
|
||||||
age: age,
|
age: age,
|
||||||
helfer: row.helfer,
|
helfer: row.helfer,
|
||||||
|
probe: row.probe,
|
||||||
|
anwesenheit: row.anwesenheit,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -771,7 +795,7 @@ app.get("/riege", requireAuth, async (req, res) => {
|
||||||
app.get("/teilnehmer", requireAuth, requireAdmin, async (req, res) => {
|
app.get("/teilnehmer", requireAuth, requireAdmin, async (req, res) => {
|
||||||
try {
|
try {
|
||||||
const teilnehmendeResult = await pool.query(
|
const teilnehmendeResult = await pool.query(
|
||||||
"SELECT * FROM teilnehmende ORDER BY helfer DESC, vorname ASC"
|
"SELECT m.*, COUNT(a.fid_teilnehmer) AS anwesenheit FROM teilnehmende m LEFT JOIN anwesend a ON m.id = a.fid_teilnehmer GROUP BY m.id ORDER BY helfer DESC, vorname ASC"
|
||||||
);
|
);
|
||||||
|
|
||||||
const teilnehmende = teilnehmendeResult.rows.map((t) => ({
|
const teilnehmende = teilnehmendeResult.rows.map((t) => ({
|
||||||
|
@ -844,8 +868,19 @@ app.post("/set-riege", requireAuth, async (req, res) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
app.post("/update-mitglied", requireAdmin, async (req, res) => {
|
app.post("/update-mitglied", requireAdmin, async (req, res) => {
|
||||||
const { type, id, geburt, telid, adresse, name, verbindung, nummer, probe } =
|
const {
|
||||||
req.body;
|
type,
|
||||||
|
id,
|
||||||
|
geburt,
|
||||||
|
telid,
|
||||||
|
adresse,
|
||||||
|
name,
|
||||||
|
verbindung,
|
||||||
|
nummer,
|
||||||
|
vorname,
|
||||||
|
nachname,
|
||||||
|
probe,
|
||||||
|
} = req.body;
|
||||||
try {
|
try {
|
||||||
if (type == "tel") {
|
if (type == "tel") {
|
||||||
console.log(
|
console.log(
|
||||||
|
@ -861,8 +896,8 @@ app.post("/update-mitglied", requireAdmin, async (req, res) => {
|
||||||
console.log("delete numer $1", [telid]);
|
console.log("delete numer $1", [telid]);
|
||||||
} else if (type == "adresse") {
|
} else if (type == "adresse") {
|
||||||
await pool.query(
|
await pool.query(
|
||||||
"UPDATE teilnehmende SET geburtsdatum = $1, adresse = $2, probe = $3 WHERE id = $4",
|
"UPDATE teilnehmende SET vorname = $1, nachname = $2, geburtsdatum = $3, adresse = $4, probe = $5 WHERE id = $6",
|
||||||
[geburt, adresse, probe ? true : false, id]
|
[vorname, nachname, geburt, adresse, probe ? true : false, id]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,19 +31,46 @@
|
||||||
<% if (session && session.role === 'admin') { %>
|
<% if (session && session.role === 'admin') { %>
|
||||||
<div id="edit" class="mt-5 d-none">
|
<div id="edit" class="mt-5 d-none">
|
||||||
|
|
||||||
<form method="POST" action="/update-mitglied">
|
<form method="POST" action="/update-mitglied">
|
||||||
Geburtsdatum: <input type="date" id="geburt" name="geburt" value="<%= birthday.getFullYear() %>-<%= ('00' + (birthday.getMonth() + 1)).slice(-2) %>-<%= ('00' + birthday.getDate()).slice(-2) %>"></br>
|
<fieldset class="scheduler-border">
|
||||||
<input type="hidden" name="id" value="<%= id %>">
|
<legend >Stammdaten</legend>
|
||||||
<input type="hidden" name="type" value="adresse">
|
<div class="form-row">
|
||||||
<strong> Adresse: </strong> <input name="adresse" type="text" value="<%= mitglied.adresse %>"></br>
|
<div class="form-group col-md-3">
|
||||||
<strong> Probetraining: </strong> <input type="checkbox" name="probe" value="true" <%= mitglied.probe ? 'checked' : '' %>></br>
|
<label for="vorname">Vorname:</label>
|
||||||
<button type="submit">Speichern</button>
|
<input class="form-control" name="vorname" type="text" value="<%= mitglied.vorname %>">
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-md-3">
|
||||||
|
<label for="nachname">Nachname:</label>
|
||||||
|
<input class="form-control" name="nachname" type="text" value="<%= mitglied.nachname %>"></br>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group col-md-6">
|
||||||
|
<label for="geburt">Geburtsdatum:</label>
|
||||||
|
<input type="date" id="geburt" name="geburt" value="<%= birthday.getFullYear() %>-<%= ('00' + (birthday.getMonth() + 1)).slice(-2) %>-<%= ('00' + birthday.getDate()).slice(-2) %>"></br>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<input type="hidden" name="id" value="<%= id %>">
|
||||||
|
<input type="hidden" name="type" value="adresse">
|
||||||
|
|
||||||
|
<div class="form-group col-md-3">
|
||||||
|
<label for="adresse"> Adresse: </label>
|
||||||
|
<input class="form-control" name="adresse" type="text" value="<%= mitglied.adresse %>"></br>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label for="probe"> Probetraining: </label>
|
||||||
|
<input class="form-check-input" type="checkbox" name="probe" value="true" <%= mitglied.probe ? 'checked' : '' %>></br>
|
||||||
|
|
||||||
|
<button class="btn btn-success" type="submit">Speichern</button>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
||||||
<form method="POST" action="/set-Riege">
|
<form method="POST" action="/set-Riege">
|
||||||
|
<fieldset>
|
||||||
|
<legend>Riege</legend>
|
||||||
<input type="hidden" name="id" value="<%= id %>">
|
<input type="hidden" name="id" value="<%= id %>">
|
||||||
<strong>Riege: </strong><select name="riege">
|
<strong>Riege: </strong><select class="custom-select" name="riege">
|
||||||
<option value=0 <% if ( riege === 0) { %> selected <% } %>> keine</option>
|
<option value=0 <% if ( riege === 0) { %> selected <% } %>> keine</option>
|
||||||
<option value=1 <% if ( riege === 1) { %> selected <% } %>> Riege 1</option>
|
<option value=1 <% if ( riege === 1) { %> selected <% } %>> Riege 1</option>
|
||||||
<option value=2 <% if ( riege === 2) { %> selected <% } %>> Riege 2</option>
|
<option value=2 <% if ( riege === 2) { %> selected <% } %>> Riege 2</option>
|
||||||
|
@ -52,8 +79,11 @@
|
||||||
<option value=5 <% if ( riege === 5) { %> selected <% } %>> Riege 5</option>
|
<option value=5 <% if ( riege === 5) { %> selected <% } %>> Riege 5</option>
|
||||||
</select>
|
</select>
|
||||||
<button type="submit">Speichern</button>
|
<button type="submit">Speichern</button>
|
||||||
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<legend>Notfallnummern</legend>
|
||||||
<p>
|
<p>
|
||||||
<% numbers.forEach(number => { %>
|
<% numbers.forEach(number => { %>
|
||||||
<form method="POST" action="/update-mitglied">
|
<form method="POST" action="/update-mitglied">
|
||||||
|
@ -65,7 +95,7 @@
|
||||||
</form>
|
</form>
|
||||||
<% }) %>
|
<% }) %>
|
||||||
</p>
|
</p>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
<h2>Telefonnummer hinzufügen</h2>
|
<h2>Telefonnummer hinzufügen</h2>
|
||||||
<form method="POST" action="/update-mitglied">
|
<form method="POST" action="/update-mitglied">
|
||||||
|
|
|
@ -64,6 +64,12 @@
|
||||||
<a href="/mitglied/<%= teilnehmer.id %>"
|
<a href="/mitglied/<%= teilnehmer.id %>"
|
||||||
><%= teilnehmer.nachname %></a
|
><%= teilnehmer.nachname %></a
|
||||||
>
|
>
|
||||||
|
<% } %> <% if (teilnehmer.probe) { %>
|
||||||
|
<span
|
||||||
|
style="color: <%= teilnehmer.anwesenheit <= 3 ? 'green' : 'red' %>;"
|
||||||
|
>
|
||||||
|
(<%= teilnehmer.anwesenheit %>)
|
||||||
|
</span>
|
||||||
<% } %>
|
<% } %>
|
||||||
</td>
|
</td>
|
||||||
<td><%= teilnehmer.age %> Jahre</td>
|
<td><%= teilnehmer.age %> Jahre</td>
|
||||||
|
|
|
@ -27,6 +27,13 @@
|
||||||
<% } else { %>
|
<% } else { %>
|
||||||
<a href="/mitglied/<%= teilnehmer.id %>"><%= teilnehmer.nachname %></a>
|
<a href="/mitglied/<%= teilnehmer.id %>"><%= teilnehmer.nachname %></a>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
<% if (teilnehmer.probe) { %>
|
||||||
|
<span style="color: <%= teilnehmer.anwesenheit <= 3 ? 'green' : 'red' %>;">
|
||||||
|
(<%= teilnehmer.anwesenheit %>)
|
||||||
|
</span>
|
||||||
|
<% } %>
|
||||||
|
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
<td><%= teilnehmer.age %> Jahre</td>
|
<td><%= teilnehmer.age %> Jahre</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -302,7 +302,14 @@
|
||||||
<%= teilnehmer.vorname %>
|
<%= teilnehmer.vorname %>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<%= teilnehmer.nachname %>
|
<%= teilnehmer.nachname %>
|
||||||
|
<% if (teilnehmer.probe) { %>
|
||||||
|
<span
|
||||||
|
style="color: <%= teilnehmer.anwesenheit <= 3 ? 'green' : 'red' %>;"
|
||||||
|
>
|
||||||
|
(<%= teilnehmer.anwesenheit %>)
|
||||||
|
</span>
|
||||||
|
<% } %>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<%= teilnehmer.age %>
|
<%= teilnehmer.age %>
|
||||||
|
|
Loading…
Reference in New Issue