PDF wird beim Abschicken generiert
This commit is contained in:
@@ -471,17 +471,54 @@ function registerTimesheetRoutes(app) {
|
||||
db.run(`INSERT INTO weekly_timesheets (user_id, week_start, week_end, version, status, version_reason)
|
||||
VALUES (?, ?, ?, ?, 'eingereicht', ?)`,
|
||||
[userId, week_start, week_end, newVersion, version_reason ? version_reason.trim() : null],
|
||||
(err) => {
|
||||
function(err) {
|
||||
if (err) return res.status(500).json({ error: 'Fehler beim Abschicken' });
|
||||
|
||||
|
||||
const timesheetId = this.lastID;
|
||||
if (!timesheetId) {
|
||||
return res.status(500).json({ error: 'Fehler beim Ermitteln der Stundenzettel-ID' });
|
||||
}
|
||||
|
||||
// Status der Einträge aktualisieren (optional - für Nachverfolgung)
|
||||
db.run(`UPDATE timesheet_entries
|
||||
SET status = 'eingereicht'
|
||||
WHERE user_id = ? AND date >= ? AND date <= ?`,
|
||||
[userId, week_start, week_end],
|
||||
(err) => {
|
||||
async (err) => {
|
||||
if (err) return res.status(500).json({ error: 'Fehler beim Aktualisieren des Status' });
|
||||
res.json({ success: true, version: newVersion });
|
||||
|
||||
// PDF direkt beim Einreichen erzeugen und auf dem Dateisystem persistieren,
|
||||
// damit der abgegebene Stand versionstreu festgehalten wird.
|
||||
try {
|
||||
const pdfBuffer = await generatePDFToBuffer(timesheetId, req);
|
||||
const pdfLocation = resolvePdfLocationFromTimesheetRow({
|
||||
id: timesheetId,
|
||||
user_id: userId,
|
||||
week_start,
|
||||
version: newVersion,
|
||||
firstname: req.session.firstname || '',
|
||||
lastname: req.session.lastname || '',
|
||||
});
|
||||
|
||||
await savePdfBufferAtomic(pdfLocation.absolutePath, pdfBuffer);
|
||||
|
||||
db.run(
|
||||
'UPDATE weekly_timesheets SET pdf_path = ? WHERE id = ?',
|
||||
[pdfLocation.relativePath, timesheetId],
|
||||
(pathErr) => {
|
||||
if (pathErr) {
|
||||
console.error('Fehler beim Speichern des PDF-Pfads:', pathErr);
|
||||
return res.status(500).json({ error: 'Fehler beim Speichern des PDF-Pfads' });
|
||||
}
|
||||
res.json({ success: true, version: newVersion });
|
||||
}
|
||||
);
|
||||
} catch (pdfErr) {
|
||||
console.error('Fehler beim direkten Generieren des PDFs nach Einreichung:', pdfErr);
|
||||
return res.status(500).json({
|
||||
error: 'Woche wurde eingereicht, aber PDF konnte nicht erzeugt werden. Bitte erneut versuchen.'
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user