diff --git a/routes/training.js b/routes/training.js index 17f9586..29016bb 100644 --- a/routes/training.js +++ b/routes/training.js @@ -32,7 +32,7 @@ router.get( // **Trainings einer bestimmten Woche abrufen** query = ` SELECT * FROM trainings - WHERE abteilung = $1 AND year = $2 AND kw = $3 + WHERE fid_abteilung = $1 AND year = $2 AND kw = $3 ORDER BY year DESC, kw DESC `; values.push(year, kw); @@ -40,7 +40,7 @@ router.get( // **Alle Trainings eines yeares abrufen** query = ` SELECT * FROM trainings - WHERE abteilung = $1 AND year = $2 + WHERE fid_abteilung = $1 AND year = $2 ORDER BY kw ASC `; values.push(year); @@ -48,7 +48,7 @@ router.get( // **Alle Trainings der Abteilung abrufen** query = ` SELECT * FROM trainings - WHERE abteilung = $1 + WHERE fid_abteilung = $1 ORDER BY year DESC, kw DESC `; } @@ -97,6 +97,43 @@ router.get( } else { res.status(400).json({ error: "TrainingsID muss übergeben werden" }); } + } else if (key1 === "leiten") { + const typ = value1; // 'a' oder 's' + const abteilung = req.abteilung; // Abteilung aus Middleware + + if (!["a", "s"].includes(typ)) { + return res.status(400).json({ error: "Typ muss 'a' oder 's' sein" }); + } + + try { + const result = await pool.query( + ` + SELECT + m.id, + m.vorname || ' ' || m.nachname AS name, + COALESCE( + EXTRACT(EPOCH FROM (NOW() - MAX(to_date(t.year || ' ' || t.kw, 'IYYY IW'))) / 604800), + EXTRACT(EPOCH FROM (NOW() - '1970-01-01') / 604800) + ) AS weeks_since_last +FROM mitglieder m +JOIN abteilungszuordnung az ON az.fid_mitglied = m.id +LEFT JOIN ( + SELECT l.fid_helfer, t.year, t.kw + FROM leiten l + JOIN trainings t ON t.id = l.fid_training + WHERE l.typ = $1 AND t.fid_abteilung = $2 +) t ON t.fid_helfer = m.id +WHERE az.helfer = true AND az.fid_abteilung = $2 +GROUP BY m.id +ORDER BY weeks_since_last DESC;`, + [typ, abteilung] + ); + + res.json(result.rows); + } catch (err) { + console.error("Fehler bei /leiten:", err); + res.status(500).json({ error: "Fehler bei der Kandidatenabfrage" }); + } } } catch (err) { console.error(err); @@ -210,7 +247,7 @@ router.post("/new/:jahr/:kw", requireAuth, requireRole(2), async (req, res) => { // **3. Neues Training anlegen** const trainingResult = await pool.query( - `INSERT INTO trainings (year, kw, abteilung) VALUES ($1, $2, $3) RETURNING id`, + `INSERT INTO trainings (year, kw, fid_abteilung) VALUES ($1, $2, $3) RETURNING id`, [jahr, kw, abteilung] ); @@ -224,7 +261,7 @@ router.post("/new/:jahr/:kw", requireAuth, requireRole(2), async (req, res) => { `SELECT g.geraete FROM trainings t JOIN geraeteplan g ON t.id = g.fid_training - WHERE t.abteilung = $1 + WHERE t.fid_abteilung = $1 ORDER BY t.year DESC, t.kw DESC LIMIT 2`, [abteilung]