Spielkandidaten

This commit is contained in:
klaas 2025-04-23 17:20:18 +02:00
parent 47f953077d
commit db7226587f
1 changed files with 42 additions and 5 deletions

View File

@ -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]