Refactoring
This commit is contained in:
86
helpers/utils.js
Normal file
86
helpers/utils.js
Normal file
@@ -0,0 +1,86 @@
|
||||
// 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
|
||||
};
|
||||
Reference in New Issue
Block a user