From 5b0d1c6deaefbe9e1701abac5c33c6ba178c3455 Mon Sep 17 00:00:00 2001 From: Gabriel Menezes Date: Thu, 8 Oct 2026 10:26:15 -0400 Subject: [PATCH] fix: correctly cap worked hours calculation to current time --- .../beetask/usecase/dashboard/DashboardUseCase.java | 3 ++- .../beetask/usecase/orgdashboard/OrgDashboardUseCase.java | 3 ++- .../usecase/orgdashboard/memberdetail/MemberDetailUseCase.java | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/net/beetechgroup/beetask/usecase/dashboard/DashboardUseCase.java b/backend/src/main/java/net/beetechgroup/beetask/usecase/dashboard/DashboardUseCase.java index eddb09b..a253d93 100644 --- a/backend/src/main/java/net/beetechgroup/beetask/usecase/dashboard/DashboardUseCase.java +++ b/backend/src/main/java/net/beetechgroup/beetask/usecase/dashboard/DashboardUseCase.java @@ -130,7 +130,8 @@ public class DashboardUseCase { private long calculateMinutesInRange(TaskHistoryItem item, LocalDateTime start, LocalDateTime end) { LocalDateTime effectiveStart = item.getStartAt().isBefore(start) ? start : item.getStartAt(); - LocalDateTime effectiveEnd = Objects.isNull(item.getEndAt()) || item.getEndAt().isAfter(end) ? end : item.getEndAt(); + LocalDateTime itemEnd = Objects.nonNull(item.getEndAt()) ? item.getEndAt() : LocalDateTime.now(); + LocalDateTime effectiveEnd = itemEnd.isAfter(end) ? end : itemEnd; if (effectiveStart.isAfter(effectiveEnd)) return 0; diff --git a/backend/src/main/java/net/beetechgroup/beetask/usecase/orgdashboard/OrgDashboardUseCase.java b/backend/src/main/java/net/beetechgroup/beetask/usecase/orgdashboard/OrgDashboardUseCase.java index c73bc94..de6e3b9 100644 --- a/backend/src/main/java/net/beetechgroup/beetask/usecase/orgdashboard/OrgDashboardUseCase.java +++ b/backend/src/main/java/net/beetechgroup/beetask/usecase/orgdashboard/OrgDashboardUseCase.java @@ -140,7 +140,8 @@ public class OrgDashboardUseCase { private long calculateMinutesInRange(TaskHistoryItem item, LocalDateTime start, LocalDateTime end) { LocalDateTime effectiveStart = item.getStartAt().isBefore(start) ? start : item.getStartAt(); - LocalDateTime effectiveEnd = Objects.isNull(item.getEndAt()) || item.getEndAt().isAfter(end) ? end : item.getEndAt(); + LocalDateTime itemEnd = Objects.nonNull(item.getEndAt()) ? item.getEndAt() : LocalDateTime.now(); + LocalDateTime effectiveEnd = itemEnd.isAfter(end) ? end : itemEnd; if (effectiveStart.isAfter(effectiveEnd)) return 0; return Duration.between(effectiveStart, effectiveEnd).toMinutes(); } diff --git a/backend/src/main/java/net/beetechgroup/beetask/usecase/orgdashboard/memberdetail/MemberDetailUseCase.java b/backend/src/main/java/net/beetechgroup/beetask/usecase/orgdashboard/memberdetail/MemberDetailUseCase.java index e8637a5..6c91ba6 100644 --- a/backend/src/main/java/net/beetechgroup/beetask/usecase/orgdashboard/memberdetail/MemberDetailUseCase.java +++ b/backend/src/main/java/net/beetechgroup/beetask/usecase/orgdashboard/memberdetail/MemberDetailUseCase.java @@ -66,7 +66,8 @@ public class MemberDetailUseCase { for (TaskHistoryItem h : task.getHistory()) { if (!isWithinPeriod(h, start, end)) continue; LocalDateTime effectiveStart = h.getStartAt().isBefore(start) ? start : h.getStartAt(); - LocalDateTime effectiveEnd = (Objects.isNull(h.getEndAt()) || h.getEndAt().isAfter(end)) ? end : h.getEndAt(); + LocalDateTime itemEnd = Objects.nonNull(h.getEndAt()) ? h.getEndAt() : LocalDateTime.now(); + LocalDateTime effectiveEnd = itemEnd.isAfter(end) ? end : itemEnd; if (effectiveStart.isAfter(effectiveEnd)) continue; long minutes = Duration.between(effectiveStart, effectiveEnd).toMinutes();