Jobangebote: Gemerkte nicht mehr unter Offen anzeigen

Favorisierte Angebote erscheinen ausschließlich im Gemerkt-Tab und werden
aus der Offen-Liste, dem Offen-Zähler (Header-Badge) und dem Tab-Zähler
ausgeblendet. Auf der Offen-Seite wird die Zeile beim Merken live entfernt.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-07-17 00:01:50 +02:00
co-authored by Claude
parent d9ba8698e0
commit 96fd0e282d
3 changed files with 30 additions and 18 deletions
+9 -8
View File
@@ -3630,7 +3630,7 @@ initializeDatabase().then(async () => {
// Count of open offers, consumed by the header badge (no auth — just a number).
app.get('/jobangebote/anzahl-offen', async (req, res) => {
try {
const row = await dbGet("SELECT COUNT(*) as count FROM jobangebote WHERE user_id = ? AND status = 'offen'", [uid()]);
const row = await dbGet("SELECT COUNT(*) as count FROM jobangebote WHERE user_id = ? AND status = 'offen' AND favorit = 0", [uid()]);
res.json({ count: row ? row.count : 0 });
} catch (error) {
res.status(500).json({ count: 0 });
@@ -3642,9 +3642,9 @@ initializeDatabase().then(async () => {
async function jobangeboteZaehler() {
const row = await dbGet(
`SELECT
COUNT(*) FILTER (WHERE status = 'offen') AS offen,
COUNT(*) FILTER (WHERE status = 'uebernommen') AS uebernommen,
COUNT(*) FILTER (WHERE favorit = 1) AS favoriten
COUNT(*) FILTER (WHERE status = 'offen' AND favorit = 0) AS offen,
COUNT(*) FILTER (WHERE status = 'uebernommen') AS uebernommen,
COUNT(*) FILTER (WHERE favorit = 1) AS favoriten
FROM jobangebote WHERE user_id = ?`,
[uid()]
);
@@ -3656,16 +3656,17 @@ initializeDatabase().then(async () => {
}
// Main list: only OPEN offers (still to be decided on). Taken-over offers
// live on their own page (/jobangebote/uebernommen). Gemerkte Angebote stehen
// hier oben und haben zusätzlich einen eigenen Tab (/jobangebote/favoriten).
// live on their own page (/jobangebote/uebernommen). Gemerkte (favorisierte)
// Angebote erscheinen ausschließlich im eigenen Tab (/jobangebote/favoriten)
// und werden hier ausgeblendet.
app.get('/jobangebote', async (req, res) => {
try {
const jobangebote = await dbAll(
`SELECT j.*, b.datum AS bewerbung_datum
FROM jobangebote j
LEFT JOIN bewerbungen b ON b.id = j.verknuepfte_bewerbung_id AND b.user_id = j.user_id
WHERE j.user_id = ? AND j.status = 'offen'
ORDER BY j.favorit DESC, j.created_at DESC, j.id DESC`,
WHERE j.user_id = ? AND j.status = 'offen' AND j.favorit = 0
ORDER BY j.created_at DESC, j.id DESC`,
[uid()]
);
jobangebote.forEach((j) => { j.labelsArr = parseLabels(j.labels); });