From c2b5f55d2d6d9c42c34f6c9d59c562a3c4a035ea Mon Sep 17 00:00:00 2001 From: Marcel Arndt Date: Mon, 30 Jun 2025 07:55:14 +0200 Subject: [PATCH] fix: create startOfTour from startBegin on same day as tour start --- .../employees-logged-in.detector.ts | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/service/data-hub/data-connector/src/modules/feat-anomalies/anomaly-detectors/employees-logged-in.detector.ts b/service/data-hub/data-connector/src/modules/feat-anomalies/anomaly-detectors/employees-logged-in.detector.ts index 38f7755..3e011d1 100644 --- a/service/data-hub/data-connector/src/modules/feat-anomalies/anomaly-detectors/employees-logged-in.detector.ts +++ b/service/data-hub/data-connector/src/modules/feat-anomalies/anomaly-detectors/employees-logged-in.detector.ts @@ -2,15 +2,15 @@ import { Logger } from '@nestjs/common'; import { Anomaly, Employee, Prisma, Tour } from '@prisma/client'; import { Interval, + addDays, addMilliseconds, addMinutes, + differenceInMinutes, format, - getHours, - getMinutes, isBefore, isWithinInterval, set, - subMilliseconds, + subMilliseconds } from 'date-fns'; import { getTimezoneOffset, toZonedTime } from 'date-fns-tz'; @@ -108,7 +108,7 @@ export class EmployeesLoggedInDetector extends AnomalyDetector { startOfTour, getTimezoneOffset('Europe/Berlin', startOfTour), ), - 'HH:mm', + 'dd.MM.yy HH:mm', )}`, }, ...(attendanceInterval @@ -119,7 +119,7 @@ export class EmployeesLoggedInDetector extends AnomalyDetector { attendanceInterval.start, getTimezoneOffset('Europe/Berlin', startOfTour), ), - 'HH:mm', + 'dd.MM.yy HH:mm', )}${ attendanceInterval.end ? ` - ${format( @@ -363,16 +363,13 @@ export class EmployeesLoggedInDetector extends AnomalyDetector { if (!startBegin) return null; const [hours, minutes] = startBegin.split(':').map((v) => +v); - const tempDate = subMilliseconds( + let modifiedTime = subMilliseconds( set(startDate, { hours, minutes }), getTimezoneOffset('Europe/Berlin', startDate), ); - const hourValue = getHours(tempDate); - const minuteValue = getMinutes(tempDate); - const modifiedTime = set(startDate, { - hours: hourValue, - minutes: minuteValue, - }); + if (differenceInMinutes(modifiedTime, startDate) / 60 < -4) { + modifiedTime = addDays(modifiedTime, 1); + } // this.logger.debug( // `getStartOfTour(${startDate.toISOString()}, ${startBegin}): ${modifiedTime.toISOString()}`,