Gehe zu button, Verwaltung Urlaubsberechnung
This commit is contained in:
@@ -241,19 +241,16 @@ function registerVerwaltungRoutes(app) {
|
||||
return res.status(500).json({ error: 'Fehler beim Abrufen der Wochen' });
|
||||
}
|
||||
|
||||
// Für jede Woche die neuesten Einträge abrufen
|
||||
// Nur Wochen bis Ende der angezeigten Kalenderwoche (Stand Urlaub = Ende dieser KW)
|
||||
const weeksUpToDisplayed = (weeks || []).filter((w) => w.week_end <= week_end);
|
||||
let processedWeeks = 0;
|
||||
let totalVacationDays = 0;
|
||||
const vacationByDate = {};
|
||||
|
||||
if (!weeks || weeks.length === 0) {
|
||||
// Keine eingereichten Wochen - setze totalVacationDays auf 0
|
||||
totalVacationDays = 0;
|
||||
// Weiter mit der normalen Verarbeitung der aktuellen Woche
|
||||
if (weeksUpToDisplayed.length === 0) {
|
||||
processCurrentWeek(0);
|
||||
} else {
|
||||
weeks.forEach((week) => {
|
||||
// Einträge für diese Woche abrufen (nur neueste pro Tag)
|
||||
weeksUpToDisplayed.forEach((week) => {
|
||||
db.all(`SELECT date, vacation_type, updated_at, id
|
||||
FROM timesheet_entries
|
||||
WHERE user_id = ? AND date >= ? AND date <= ?
|
||||
@@ -266,13 +263,11 @@ function registerVerwaltungRoutes(app) {
|
||||
return res.status(500).json({ error: 'Fehler beim Abrufen der Einträge' });
|
||||
}
|
||||
|
||||
// Filtere auf neuesten Eintrag pro Tag
|
||||
(weekEntries || []).forEach(entry => {
|
||||
const existing = vacationByDate[entry.date];
|
||||
if (!existing) {
|
||||
vacationByDate[entry.date] = entry;
|
||||
} else {
|
||||
// Vergleiche updated_at (falls vorhanden) oder id (höhere ID = neuer)
|
||||
const existingTime = existing.updated_at ? new Date(existing.updated_at).getTime() : 0;
|
||||
const currentTime = entry.updated_at ? new Date(entry.updated_at).getTime() : 0;
|
||||
if (currentTime > existingTime || (currentTime === existingTime && entry.id > existing.id)) {
|
||||
@@ -282,8 +277,7 @@ function registerVerwaltungRoutes(app) {
|
||||
});
|
||||
|
||||
processedWeeks++;
|
||||
if (processedWeeks === weeks.length) {
|
||||
// Alle Wochen verarbeitet - summiere Urlaubstage
|
||||
if (processedWeeks === weeksUpToDisplayed.length) {
|
||||
Object.values(vacationByDate).forEach(entry => {
|
||||
if (entry.vacation_type === 'full') {
|
||||
totalVacationDays += 1;
|
||||
@@ -291,8 +285,6 @@ function registerVerwaltungRoutes(app) {
|
||||
totalVacationDays += 0.5;
|
||||
}
|
||||
});
|
||||
|
||||
// Weiter mit der normalen Verarbeitung der aktuellen Woche
|
||||
processCurrentWeek(totalVacationDays);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user