- calculate mittagspause with offset correctly

- show provisionary mittagspause
- handle zapfenstreich the same way
This commit is contained in:
FabianArbeit
2026-04-28 11:26:00 +02:00
parent 12c8898252
commit cea8d25eea
2 changed files with 22 additions and 4 deletions
@@ -33,6 +33,12 @@ public interface WorkdayLoadingBar {
long getPassedMinutes(boolean passedMinutesZero);
default LocalTime estimateMittagspause() {
LocalTime defaultEndTime = getStartTime().plusMinutes(DEFAULT_NUMBER_WORK_MINS_BEFORE_LUNCH);
return calculateRealMittagspause(defaultEndTime);
}
default void initMittagspause() {
LocalTime defaultEndTime = getStartTime().plusMinutes(DEFAULT_NUMBER_WORK_MINS_BEFORE_LUNCH);
realInitMittagspause(defaultEndTime);
@@ -43,7 +49,7 @@ public interface WorkdayLoadingBar {
default void initMittagspause(int endTimeOffset) {
LocalTime offsetEndTime = getStartTime().plusMinutes(DEFAULT_NUMBER_WORK_MINS_BEFORE_LUNCH + endTimeOffset);
LocalTime offsetEndTime = estimateMittagspause().plusMinutes(endTimeOffset);
realInitMittagspause(offsetEndTime);
}
@@ -55,13 +61,24 @@ public interface WorkdayLoadingBar {
private void realInitMittagspause(LocalTime theoreticalEndTime) {
setEndTime(theoreticalEndTime.isAfter(LATEST_LUNCH_TIME) ? LATEST_LUNCH_TIME : theoreticalEndTime);
setEndTime(calculateRealMittagspause(theoreticalEndTime));
}
private LocalTime calculateRealMittagspause(LocalTime theoreticalMittagspause) {
return theoreticalMittagspause.isAfter(LATEST_LUNCH_TIME) ? LATEST_LUNCH_TIME : theoreticalMittagspause;
}
void setEndTime(LocalTime endTime);
default LocalTime estimateZapfenstreich(Integer mittagspauseDuration) {
int estMittagspauseDuration = mittagspauseDuration != null ? mittagspauseDuration : MIN_LUNCH_DURATION;
return getStartTime().plusMinutes(MAX_NUMBER_WORK_MINS + estMittagspauseDuration);
}
default void initZapfenstreich() {
LocalTime trueEndTime = getStartTime().plusMinutes(MAX_NUMBER_WORK_MINS + MIN_LUNCH_DURATION);
realInitZapfenstreich(MIN_LUNCH_DURATION, trueEndTime);
@@ -71,6 +71,8 @@ public class LoadingBarCliTools {
private static void handleMittagspause(BufferedReader br, WorkdayLoadingBar lb) throws IOException {
LocalTime vorlaeufigeEndzeit = lb.estimateMittagspause();
println("Mittagspause: " + FormatTools.TIME_FORMATTER.format(vorlaeufigeEndzeit));
print("Mittagspause verschieben um (optional): ");
String mittagspauseOffsetRaw = br.readLine();
if (mittagspauseOffsetRaw != null && !mittagspauseOffsetRaw.isBlank()) {
@@ -96,8 +98,7 @@ public class LoadingBarCliTools {
if (mittagspauseDurationRaw != null && !mittagspauseDurationRaw.isBlank()) {
mittagspauseDuration = Integer.valueOf(mittagspauseDurationRaw);
}
LocalTime vorlaeufigeEndzeit = lb.getStartTime().plusMinutes(WorkdayLoadingBar.MAX_NUMBER_WORK_MINS)
.plusMinutes(mittagspauseDuration != null ? mittagspauseDuration : WorkdayLoadingBar.MIN_LUNCH_DURATION);
LocalTime vorlaeufigeEndzeit = lb.estimateZapfenstreich(mittagspauseDuration);
println("Endzeit: " + FormatTools.TIME_FORMATTER.format(vorlaeufigeEndzeit));
print("Feierabend verschieben um (optional): ");
String zapfenstreichOffsetRaw = br.readLine();