Geburtstagsanzeige in allen Listen
This commit is contained in:
parent
e8a899b601
commit
0bd0b21256
39
app.js
39
app.js
|
@ -97,6 +97,21 @@ const calculateAge = (birthdate) => {
|
||||||
return age;
|
return age;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const isBirthday = (birthdate, date, previousTraining) => {
|
||||||
|
let adjustedBirthdate = new Date(birthdate);
|
||||||
|
adjustedBirthdate.setFullYear(date.getFullYear());
|
||||||
|
|
||||||
|
if (adjustedBirthdate === date) {
|
||||||
|
console.log("birthday");
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
if (adjustedBirthdate >= previousTraining && adjustedBirthdate <= date) {
|
||||||
|
console.log("had birthday", adjustedBirthdate, date, previousTraining);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
};
|
||||||
|
|
||||||
// Datumsformatierung
|
// Datumsformatierung
|
||||||
const formatDate = (date) => {
|
const formatDate = (date) => {
|
||||||
const d = new Date(date);
|
const d = new Date(date);
|
||||||
|
@ -683,12 +698,12 @@ app.get("/training", requireAuth, async (req, res) => {
|
||||||
|
|
||||||
// Vorheriges Training ermitteln
|
// Vorheriges Training ermitteln
|
||||||
const previousTrainingResult = await pool.query(
|
const previousTrainingResult = await pool.query(
|
||||||
"SELECT * FROM trainings WHERE kw < $1 ORDER BY kw DESC LIMIT 1",
|
"SELECT * FROM trainings WHERE id < $1 ORDER BY id DESC LIMIT 1",
|
||||||
[selectedKW]
|
[training.id]
|
||||||
);
|
);
|
||||||
const nextTrainingResult = await pool.query(
|
const nextTrainingResult = await pool.query(
|
||||||
"SELECT * FROM trainings WHERE kw > $1 ORDER BY kw ASC LIMIT 1",
|
"SELECT * FROM trainings WHERE id > $1 ORDER BY id ASC LIMIT 1",
|
||||||
[selectedKW]
|
[training.id]
|
||||||
);
|
);
|
||||||
const previousTraining =
|
const previousTraining =
|
||||||
previousTrainingResult.rows.length > 0
|
previousTrainingResult.rows.length > 0
|
||||||
|
@ -696,7 +711,6 @@ app.get("/training", requireAuth, async (req, res) => {
|
||||||
: null;
|
: null;
|
||||||
const nextTraining =
|
const nextTraining =
|
||||||
nextTrainingResult.rows.length > 0 ? nextTrainingResult.rows[0] : null;
|
nextTrainingResult.rows.length > 0 ? nextTrainingResult.rows[0] : null;
|
||||||
|
|
||||||
// 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,
|
SELECT r.riegennummer,
|
||||||
|
@ -719,6 +733,11 @@ ORDER BY r.riegennummer, t.geburtsdatum ASC;
|
||||||
const riegen = {};
|
const riegen = {};
|
||||||
result.rows.forEach((row) => {
|
result.rows.forEach((row) => {
|
||||||
const age = calculateAge(row.geburtsdatum);
|
const age = calculateAge(row.geburtsdatum);
|
||||||
|
const hasBirthday = isBirthday(
|
||||||
|
row.geburtsdatum,
|
||||||
|
training.datum,
|
||||||
|
previousTraining.datum
|
||||||
|
);
|
||||||
const tnAnwesend = getAnwesenheit(row.id, anwesend);
|
const tnAnwesend = getAnwesenheit(row.id, anwesend);
|
||||||
if (!riegen[row.riegennummer]) {
|
if (!riegen[row.riegennummer]) {
|
||||||
riegen[row.riegennummer] = [];
|
riegen[row.riegennummer] = [];
|
||||||
|
@ -729,6 +748,7 @@ ORDER BY r.riegennummer, t.geburtsdatum ASC;
|
||||||
vorname: row.vorname,
|
vorname: row.vorname,
|
||||||
nachname: row.nachname,
|
nachname: row.nachname,
|
||||||
geb: row.geburtsdatum,
|
geb: row.geburtsdatum,
|
||||||
|
hasBirthday: hasBirthday,
|
||||||
age: age,
|
age: age,
|
||||||
helfer: row.helfer,
|
helfer: row.helfer,
|
||||||
probe: row.probe,
|
probe: row.probe,
|
||||||
|
@ -801,6 +821,9 @@ ORDER BY r.riegennummer, t.geburtsdatum ASC;
|
||||||
|
|
||||||
`);
|
`);
|
||||||
// Gruppieren der Riegenteilnehmer nach Riegennummer
|
// Gruppieren der Riegenteilnehmer nach Riegennummer
|
||||||
|
const date = new Date();
|
||||||
|
let previous = new Date(date);
|
||||||
|
previous.setDate(date.getDate() - 7);
|
||||||
const riegen = {};
|
const riegen = {};
|
||||||
result.rows.forEach((row) => {
|
result.rows.forEach((row) => {
|
||||||
const age = calculateAge(row.geburtsdatum);
|
const age = calculateAge(row.geburtsdatum);
|
||||||
|
@ -812,6 +835,7 @@ ORDER BY r.riegennummer, t.geburtsdatum ASC;
|
||||||
name: row.name,
|
name: row.name,
|
||||||
vorname: row.vorname,
|
vorname: row.vorname,
|
||||||
nachname: row.nachname,
|
nachname: row.nachname,
|
||||||
|
hasBirthday: isBirthday(row.geburtsdatum, date, previous),
|
||||||
age: age,
|
age: age,
|
||||||
helfer: row.helfer,
|
helfer: row.helfer,
|
||||||
probe: row.probe,
|
probe: row.probe,
|
||||||
|
@ -832,10 +856,13 @@ app.get("/teilnehmer", requireAuth, requireAdmin, async (req, res) => {
|
||||||
const teilnehmendeResult = await pool.query(
|
const teilnehmendeResult = await pool.query(
|
||||||
"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"
|
"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 date = new Date();
|
||||||
|
let previous = new Date(date);
|
||||||
|
previous.setDate(date.getDate() - 7);
|
||||||
const teilnehmende = teilnehmendeResult.rows.map((t) => ({
|
const teilnehmende = teilnehmendeResult.rows.map((t) => ({
|
||||||
...t,
|
...t,
|
||||||
age: calculateAge(t.geburtsdatum),
|
age: calculateAge(t.geburtsdatum),
|
||||||
|
hasBirthday: isBirthday(t.geburtsdatum, date, previous),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
res.render("teilnehmer", { teilnehmende, session: req.session });
|
res.render("teilnehmer", { teilnehmende, session: req.session });
|
||||||
|
|
|
@ -49,11 +49,13 @@
|
||||||
<a href="/mitglied/<%= teilnehmer.id %>"
|
<a href="/mitglied/<%= teilnehmer.id %>"
|
||||||
><strong><%= teilnehmer.vorname %></strong></a
|
><strong><%= teilnehmer.vorname %></strong></a
|
||||||
>
|
>
|
||||||
<% } else { %>
|
<%= teilnehmer.hasBirthday == 2 ? '🎂🎂' : '' %><%=
|
||||||
|
teilnehmer.hasBirthday == 1 ? '🎂' : '' %> <% } else { %>
|
||||||
<a href="/mitglied/<%= teilnehmer.id %>"
|
<a href="/mitglied/<%= teilnehmer.id %>"
|
||||||
><%= teilnehmer.vorname %></a
|
><%= teilnehmer.vorname %></a
|
||||||
>
|
>
|
||||||
<% } %>
|
<%= teilnehmer.hasBirthday == 2 ? '🎂🎂' : '' %><%=
|
||||||
|
teilnehmer.hasBirthday == 1 ? '🎂' : '' %> <% } %>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<% if (teilnehmer.helfer) { %>
|
<% if (teilnehmer.helfer) { %>
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
<% if (teilnehmer.helfer) { %>
|
<% if (teilnehmer.helfer) { %>
|
||||||
<a href="/mitglied/<%= teilnehmer.id %>"><strong><%= teilnehmer.vorname %></strong></a>
|
<a href="/mitglied/<%= teilnehmer.id %>"><strong><%= teilnehmer.vorname %></strong></a>
|
||||||
<% } else { %>
|
<% } else { %>
|
||||||
<a href="/mitglied/<%= teilnehmer.id %>"><%= teilnehmer.vorname %></a>
|
<a href="/mitglied/<%= teilnehmer.id %>"><%= teilnehmer.vorname %> <%= teilnehmer.hasBirthday == 2 ? '🎂🎂' : '' %><%= teilnehmer.hasBirthday == 1 ? '🎂' : '' %></a>
|
||||||
<% } %>
|
<% } %>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
|
|
@ -170,7 +170,7 @@
|
||||||
<% riegen[riegennummer].forEach(teilnehmer => { if(teilnehmer.helfer) { %>
|
<% riegen[riegennummer].forEach(teilnehmer => { if(teilnehmer.helfer) { %>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<%= teilnehmer.vorname %>
|
<%= teilnehmer.vorname %> <%= teilnehmer.hasBirthday == 2 ? '🎂🎂' : '' %><%= teilnehmer.hasBirthday == 1 ? '🎂' : '' %>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<%= teilnehmer.nachname %>
|
<%= teilnehmer.nachname %>
|
||||||
|
@ -180,14 +180,14 @@
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<input type="hidden" name="inriege" value="<%= teilnehmer.id %>" /> <input type="checkbox" name="anw" <%= teilnehmer.anwesend ? 'checked' : '' %> value="<%= teilnehmer.id %>">
|
<input type="hidden" name="inriege" value="<%= teilnehmer.id %>" /> <input type="checkbox" name="anw" <%= teilnehmer.anwesend ? 'checked' : '' %> value="<%= teilnehmer.id %>">
|
||||||
<% }}) %>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<% }}) %>
|
||||||
|
|
||||||
<% riegen[riegennummer].forEach(teilnehmer => { if(!teilnehmer.helfer) { %>
|
<% riegen[riegennummer].forEach(teilnehmer => { if(!teilnehmer.helfer) { %>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<%= teilnehmer.vorname %>
|
<%= teilnehmer.vorname %> <%= teilnehmer.hasBirthday == 2 ? '🎂🎂' : '' %><%= teilnehmer.hasBirthday == 1 ? '🎂' : '' %>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<%= teilnehmer.nachname %>
|
<%= teilnehmer.nachname %>
|
||||||
|
|
|
@ -282,7 +282,7 @@
|
||||||
<% riegen[riegennummer].forEach(teilnehmer => { if(teilnehmer.helfer) { %>
|
<% riegen[riegennummer].forEach(teilnehmer => { if(teilnehmer.helfer) { %>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<%= teilnehmer.vorname %>
|
<%= teilnehmer.vorname %> <%= teilnehmer.hasBirthday == 2 ? '🎂🎂' : '' %><%= teilnehmer.hasBirthday == 1 ? '🎂' : '' %>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<%= teilnehmer.nachname %>
|
<%= teilnehmer.nachname %>
|
||||||
|
@ -299,7 +299,7 @@
|
||||||
<% riegen[riegennummer].forEach(teilnehmer => { if(!teilnehmer.helfer) { %>
|
<% riegen[riegennummer].forEach(teilnehmer => { if(!teilnehmer.helfer) { %>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<%= teilnehmer.vorname %>
|
<%= teilnehmer.vorname %> <%= teilnehmer.hasBirthday == 2 ? '🎂🎂' : '' %><%= teilnehmer.hasBirthday == 1 ? '🎂' : '' %>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<%= teilnehmer.nachname %>
|
<%= teilnehmer.nachname %>
|
||||||
|
|
Loading…
Reference in New Issue