diff --git a/server.js b/server.js index 2d0594d..1bafe84 100644 --- a/server.js +++ b/server.js @@ -1661,16 +1661,21 @@ initializeDatabase().then(() => { } }); + // Main list: only OPEN offers (still to be decided on). Taken-over offers + // live on their own page (/jobangebote/uebernommen). 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 + WHERE j.status = 'offen' ORDER BY j.created_at DESC, j.id DESC` ); + const uebernommenRow = await dbGet("SELECT COUNT(*) AS c FROM jobangebote WHERE status = 'uebernommen'"); res.render('jobangebote', { jobangebote, + uebernommenCount: uebernommenRow ? uebernommenRow.c : 0, artOptions: ART_OPTIONS, statusOptions: STATUS_OPTIONS, hideSettings: false, @@ -1681,6 +1686,28 @@ initializeDatabase().then(() => { } }); + // Taken-over offers: which offers were turned into applications. + app.get('/jobangebote/uebernommen', async (req, res) => { + try { + const uebernommen = await dbAll( + `SELECT j.*, b.datum AS bewerbung_datum, b.status AS bewerbung_status + FROM jobangebote j + LEFT JOIN bewerbungen b ON b.id = j.verknuepfte_bewerbung_id + WHERE j.status = 'uebernommen' + ORDER BY j.updated_at DESC, j.id DESC` + ); + const offenRow = await dbGet("SELECT COUNT(*) AS c FROM jobangebote WHERE status = 'offen'"); + res.render('jobangebote_uebernommen', { + uebernommen, + offenCount: offenRow ? offenRow.c : 0, + hideSettings: false, + }); + } catch (error) { + console.error('Error listing taken-over offers:', error); + res.status(500).send('Serverfehler'); + } + }); + // Convert a job offer into a Bewerbung draft (mirrors the Indeed import flow: // creates a bewerbung with status "Entwurf", records the initial timeline entry, // and links the offer back to it). diff --git a/views/jobangebote.ejs b/views/jobangebote.ejs index eb91eca..bfdcc15 100644 --- a/views/jobangebote.ejs +++ b/views/jobangebote.ejs @@ -15,6 +15,16 @@ Zurück zur Übersicht + +
+ + Offen (<%= jobangebote.length %>) + + + Übernommen (<%= uebernommenCount %>) + +
+
@@ -23,7 +33,8 @@ Hier landen Stellen, die von Drittanbietersoftware über die POST /api/v1/joboffers REST-Schnittstelle eingespielt werden. Ein Angebot lässt sich per Klick - als Bewerbung-Entwurf übernehmen. + als Bewerbung-Entwurf übernehmen. Hier siehst du nur offene + Angebote — bereits übernommene findest du im Tab „Übernommen“.

diff --git a/views/jobangebote_uebernommen.ejs b/views/jobangebote_uebernommen.ejs new file mode 100644 index 0000000..06e5c21 --- /dev/null +++ b/views/jobangebote_uebernommen.ejs @@ -0,0 +1,151 @@ + + + + <%- include('partials/head') %> + + + <%- include('partials/header') %> + +
+ + + + + + Zurück zu den Jobangeboten + + + + + +
+
+
+

Übernommene Jobangebote

+

+ Diese Angebote wurden bereits als Bewerbung übernommen. Über „Zur Bewerbung“ + gelangst du direkt zur jeweiligen Bewerbung. +

+
+ + + <%= uebernommen.length %> übernommen + +
+ + <% if (uebernommen && uebernommen.length) { %> +
    + <% uebernommen.forEach(function(j){ %> +
  • +
    +
    +
    + Übernommen + <% if (j.bewerbung_status) { %> + Status: <%= j.bewerbung_status %> + <% } %> + <% if (j.quelle && j.quelle !== 'drittanbieter') { %> + Quelle: <%= j.quelle %> + <% } %> +
    +

    <%= j.firma %>

    +

    <%= j.stelle %>

    + <% if (j.ort || j.gehalt) { %> +

    + <% if (j.ort) { %><%= j.ort %><% } %> + <% if (j.ort && j.gehalt) { %> · <% } %> + <% if (j.gehalt) { %><%= j.gehalt %><% } %> +

    + <% } %> + <% if (j.quelle_url) { %> + + + <%= j.quelle_url %> + + <% } %> +

    + <% if (j.verknuepfte_bewerbung_id && j.bewerbung_datum) { %> + + Bewerbung vom: <%= new Date(j.bewerbung_datum).toLocaleDateString('de-DE') %> + + <% } %> + + Einspielung: <%= j.created_at ? new Date(j.created_at + 'Z').toLocaleString('de-DE') : '' %> + + + Übernommen: <%= j.updated_at ? new Date(j.updated_at + 'Z').toLocaleString('de-DE') : '' %> + +

    +
    + + +
    + <% if (j.verknuepfte_bewerbung_id) { %> + + + Zur Bewerbung #<%= j.verknuepfte_bewerbung_id %> + + <% } else { %> + + + Bewerbung gelöscht + + <% } %> +
    +
    +
  • + <% }); %> +
+ <% } else { %> +
+ + + +

Noch keine Angebote übernommen.

+

+ Übernimm ein offenes Angebot im Tab + „Offen“. +

+
+ <% } %> +
+
+ + <%- include('partials/footer') %> + + + +