Ermögliche das Abrufen von Zeitkorrekturen für ein spezifisches Datum und aktualisiere die Benutzeroberfläche entsprechend
All checks were successful
Deploy production / deploy (push) Successful in 48s
All checks were successful
Deploy production / deploy (push) Successful in 48s
This commit is contained in:
@@ -30,7 +30,7 @@ class TimefixController {
|
||||
async getTodayTimefixes(req, res) {
|
||||
try {
|
||||
const userId = req.user.userId;
|
||||
const timefixes = await timefixService.getTodayTimefixes(userId);
|
||||
const timefixes = await timefixService.getTodayTimefixes(userId, req.query.date);
|
||||
res.json(timefixes);
|
||||
} catch (error) {
|
||||
console.error('Fehler beim Abrufen der Timefixes:', error);
|
||||
|
||||
@@ -386,6 +386,7 @@ class WorklogRepository {
|
||||
if (startEntry) {
|
||||
pairs.push({
|
||||
id: startEntry.id,
|
||||
end_id: entry.id,
|
||||
start_time: startEntry.tstamp,
|
||||
end_time: entry.tstamp,
|
||||
start_state: startEntry.state,
|
||||
|
||||
@@ -1387,11 +1387,11 @@ class TimeEntryService {
|
||||
let workEndUTC = new Date(pair.end_time);
|
||||
|
||||
// Prüfe auf Timefix-Korrekturen
|
||||
const endFixEntry = allEntries.find(e => {
|
||||
const action = (typeof e.state === 'string' ? JSON.parse(e.state) : e.state)?.action || e.state;
|
||||
return action === 'stop work' && e.relatedTo_id === pair.id;
|
||||
});
|
||||
const endFix = endFixEntry ? timefixMap.get(endFixEntry.id)?.find(f => f.fix_type === 'stop work') : null;
|
||||
// Direkt über die vom Repository gelieferte Stop-ID nachschlagen.
|
||||
// So wird eine Datumsänderung des Stop-Eintrags zuverlässig erkannt.
|
||||
const endFix = pair.end_id
|
||||
? timefixMap.get(pair.end_id)?.find(f => f.fix_type === 'stop work')
|
||||
: null;
|
||||
|
||||
// Verwende korrigierte Zeiten falls vorhanden
|
||||
const originalStartTime = workStartUTC;
|
||||
|
||||
@@ -131,21 +131,21 @@ class TimefixService {
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt alle Zeitkorrekturen für den heutigen Tag
|
||||
* Holt alle Zeitkorrekturen für ein korrigiertes Datum
|
||||
* @param {number} userId - Benutzer-ID
|
||||
* @param {string} date - Optionales Datum im Format YYYY-MM-DD
|
||||
* @returns {Promise<Array>} Array von Zeitkorrekturen
|
||||
*/
|
||||
async getTodayTimefixes(userId) {
|
||||
async getTodayTimefixes(userId, date = null) {
|
||||
const sequelize = database.sequelize;
|
||||
|
||||
// Berechne Start und Ende des heutigen Tages (lokale Zeit)
|
||||
const now = new Date();
|
||||
const todayStart = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0);
|
||||
const todayEnd = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59);
|
||||
|
||||
// Hole alle Timefixes für heute mit Raw SQL
|
||||
const todayStartStr = `${todayStart.getFullYear()}-${String(todayStart.getMonth() + 1).padStart(2, '0')}-${String(todayStart.getDate()).padStart(2, '0')} 00:00:00`;
|
||||
const todayEndStr = `${todayEnd.getFullYear()}-${String(todayEnd.getMonth() + 1).padStart(2, '0')}-${String(todayEnd.getDate()).padStart(2, '0')} 23:59:59`;
|
||||
const requestedDate = date || new Date().toISOString().split('T')[0];
|
||||
|
||||
if (!/^\d{4}-\d{2}-\d{2}$/.test(requestedDate)) {
|
||||
throw new Error('Ungültiges Datum für Zeitkorrekturen');
|
||||
}
|
||||
|
||||
const todayStartStr = `${requestedDate} 00:00:00`;
|
||||
const todayEndStr = `${requestedDate} 23:59:59`;
|
||||
|
||||
const timefixes = await sequelize.query(
|
||||
`SELECT id, user_id, worklog_id, fix_type, fix_date_time
|
||||
|
||||
Reference in New Issue
Block a user