From 968b24156b003d5a8f7f3921c49ace33f3f1483f Mon Sep 17 00:00:00 2001 From: Matthias Hochmeister Date: Fri, 17 Apr 2026 14:15:34 +0200 Subject: [PATCH] =?UTF-8?q?fix(geplante-nachrichten):=20fix=20wrong=20colu?= =?UTF-8?q?mn=20refs=20in=20content=20builders=20=E2=80=94=20abgesagt=20bo?= =?UTF-8?q?ol,=20join=20users=20for=20names,=20correct=20status=20values?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/services/scheduledMessages.service.ts | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/backend/src/services/scheduledMessages.service.ts b/backend/src/services/scheduledMessages.service.ts index 092446a..7f2a266 100644 --- a/backend/src/services/scheduledMessages.service.ts +++ b/backend/src/services/scheduledMessages.service.ts @@ -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 }> = [];