fix(geplante-nachrichten): fix wrong column refs in content builders — abgesagt bool, join users for names, correct status values

This commit is contained in:
Matthias Hochmeister
2026-04-17 14:15:34 +02:00
parent d44f53a8a9
commit 968b24156b

View File

@@ -92,7 +92,7 @@ async function buildEventSummary(startDate: Date, endDate: Date): Promise<{ item
const result = await pool.query(
`SELECT titel, datum_von, datum_bis
FROM veranstaltungen
WHERE status != 'abgesagt'
WHERE abgesagt = FALSE
AND datum_von <= $2
AND datum_bis >= $1
ORDER BY datum_von ASC`,
@@ -117,18 +117,19 @@ async function buildEventSummary(startDate: Date, endDate: Date): Promise<{ item
async function buildBirthdayList(startDate: Date, endDate: Date): Promise<{ items: string; count: string }> {
// Find members whose birthday (month+day) falls within the window
const result = await pool.query(
`SELECT vorname, nachname, geburtsdatum
FROM mitglieder_profile
WHERE status IN ('aktiv', 'kind', 'jugend', 'reserve')
AND geburtsdatum IS NOT NULL
`SELECT u.given_name AS vorname, u.family_name AS nachname, mp.geburtsdatum
FROM mitglieder_profile mp
JOIN users u ON u.id = mp.user_id
WHERE mp.status IN ('aktiv', 'jugendfeuerwehr', 'ehrenmitglied')
AND mp.geburtsdatum IS NOT NULL
AND (
(EXTRACT(MONTH FROM geburtsdatum), EXTRACT(DAY FROM geburtsdatum))
(EXTRACT(MONTH FROM mp.geburtsdatum), EXTRACT(DAY FROM mp.geburtsdatum))
IN (
SELECT EXTRACT(MONTH FROM d::date), EXTRACT(DAY FROM d::date)
FROM generate_series($1::date, $2::date, '1 day'::interval) AS d
)
)
ORDER BY EXTRACT(MONTH FROM geburtsdatum), EXTRACT(DAY FROM geburtsdatum)`,
ORDER BY EXTRACT(MONTH FROM mp.geburtsdatum), EXTRACT(DAY FROM mp.geburtsdatum)`,
[startDate.toISOString().slice(0, 10), endDate.toISOString().slice(0, 10)],
);
@@ -149,10 +150,11 @@ async function buildBirthdayList(startDate: Date, endDate: Date): Promise<{ item
async function buildDienstjubilaeen(startDate: Date, endDate: Date): Promise<{ items: string; count: string }> {
// Members hitting a 5-year milestone in the window
const result = await pool.query(
`SELECT vorname, nachname, eintrittsdatum
FROM mitglieder_profile
WHERE status IN ('aktiv', 'reserve')
AND eintrittsdatum IS NOT NULL`,
`SELECT u.given_name AS vorname, u.family_name AS nachname, mp.eintrittsdatum
FROM mitglieder_profile mp
JOIN users u ON u.id = mp.user_id
WHERE mp.status IN ('aktiv', 'ehrenmitglied')
AND mp.eintrittsdatum IS NOT NULL`,
);
const jubilare: Array<{ name: string; years: number; date: string }> = [];