// Helper-Funktionen für das Stundenerfassungs-System // Helper: Prüft ob User eine bestimmte Rolle hat function hasRole(req, role) { if (!req.session.roles || !Array.isArray(req.session.roles)) { return false; } return req.session.roles.includes(role); } // Helper: Bestimmt die Standard-Rolle (höchste Priorität: admin > verwaltung > mitarbeiter) function getDefaultRole(roles) { if (!Array.isArray(roles) || roles.length === 0) { return 'mitarbeiter'; } if (roles.includes('admin')) return 'admin'; if (roles.includes('verwaltung')) return 'verwaltung'; return roles[0]; // Fallback auf erste Rolle } // Helper: Gibt aktuelles Datum als YYYY-MM-DD zurück function getCurrentDate() { const now = new Date(); const year = now.getFullYear(); const month = String(now.getMonth() + 1).padStart(2, '0'); const day = String(now.getDate()).padStart(2, '0'); return `${year}-${month}-${day}`; } // Helper: Gibt aktuelle Zeit als HH:MM zurück function getCurrentTime() { const now = new Date(); const hours = String(now.getHours()).padStart(2, '0'); const minutes = String(now.getMinutes()).padStart(2, '0'); return `${hours}:${minutes}`; } // Helper: Berechnet Pausenzeit in Minuten zwischen zwei Zeiten function calculateBreakMinutes(pauseStart, pauseEnd) { if (!pauseStart || !pauseEnd) return 0; const [startHours, startMinutes] = pauseStart.split(':').map(Number); const [endHours, endMinutes] = pauseEnd.split(':').map(Number); const startTotalMinutes = startHours * 60 + startMinutes; const endTotalMinutes = endHours * 60 + endMinutes; return endTotalMinutes - startTotalMinutes; } // Helper: Berechnet total_hours basierend auf start_time, end_time und break_minutes function updateTotalHours(startTime, endTime, breakMinutes) { if (!startTime || !endTime) return 0; const [startHours, startMinutes] = startTime.split(':').map(Number); const [endHours, endMinutes] = endTime.split(':').map(Number); const startTotalMinutes = startHours * 60 + startMinutes; const endTotalMinutes = endHours * 60 + endMinutes; const totalMinutes = endTotalMinutes - startTotalMinutes - (breakMinutes || 0); return totalMinutes / 60; // Konvertiere zu Stunden } // Helper: Formatiert Datum für Anzeige (DD.MM.YYYY) function formatDate(dateStr) { const date = new Date(dateStr); return date.toLocaleDateString('de-DE'); } // Helper: Formatiert Datum und Zeit für Anzeige function formatDateTime(dateStr) { const date = new Date(dateStr); return date.toLocaleString('de-DE'); } module.exports = { hasRole, getDefaultRole, getCurrentDate, getCurrentTime, calculateBreakMinutes, updateTotalHours, formatDate, formatDateTime };