BP-833, fix adding start of day for longer phases
diff --git a/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/controller/planning/PlanningController.java b/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/controller/planning/PlanningController.java index be63eb2..abf0659 100644 --- a/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/controller/planning/PlanningController.java +++ b/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/controller/planning/PlanningController.java
@@ -1557,18 +1557,24 @@ currentDate); if (lsFittingDurationsEndingAtStart != null && !lsFittingDurationsEndingAtStart.isEmpty()) { for (StandbyDuration dur : lsFittingDurationsEndingAtStart) { - int startWeekDayInt = DateHelper.getDayOfWeek(currentDate); - int endDurationWeekDayInt = dur.getValidDayTo(); - - int coveredDays = DateHelper.calculateDifferenceOfDays(startWeekDayInt, endDurationWeekDayInt, - dur.getValidFrom(), dur.getValidTo()); - if (coveredDays != 0) { - // only durations should be added that start at least one day before and their - // ending at the phase start + int currentWeekDayInt = DateHelper.getDayOfWeek(currentDate); + int startDurationWeekDayInt = dur.getValidDayFrom(); + // do not use durations that start at the current day because they will be found + // in the normal calculation. + if (startDurationWeekDayInt != currentWeekDayInt) { StandbyDuration tmpDuration = dur.copy(); - tmpDuration.setValidFrom(DateHelper.getStartOfDay(tmpDuration.getValidFrom())); + // set start to current day 00:00 because duration comes from day earlier. + tmpDuration.setValidFrom(DateHelper.getStartOfDay(tmpDuration.getValidTo())); tmpDuration.setValidDayFrom(DateHelper.getDayOfWeek(currentDate)); - tmpDuration.setValidDayTo(DateHelper.getDayOfWeek(currentDate)); + int endDurationWeekDayInt = dur.getValidDayTo(); + if (endDurationWeekDayInt == currentWeekDayInt) { + // if durations ends current day use the end of duration + tmpDuration.setValidDayTo(DateHelper.getDayOfWeek(currentDate)); + } else { + // else use the end of day. + tmpDuration.setValidDayTo(DateHelper.getDayOfWeek(currentDate)); + tmpDuration.setValidTo(DateHelper.getEndOfDay(currentDate)); + } lsFittingDurations.add(tmpDuration); } }