BP-804, fix holiday expand for non overlapping duration
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 79cad33..6823d70 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
@@ -343,7 +343,7 @@
validTo = DateHelper.getEndOfDay(validTo);
stbyBody.setValidTo(validTo);
- stbyBody = this.calculateHoliday(group, date, stbyBody);
+ stbyBody = this.calculateHoliday(group, date, stbyBody, false);
lsStandbyScheduleBodies.add(stbyBody);
if (loopPos + 1 == loopLength) {
@@ -356,7 +356,7 @@
stbyBody2.setValidFrom(validFrom);
validTo = DateHelper.getDateWithTime(nextDay, duration.getValidTo());
stbyBody2.setValidTo(validTo);
- this.calculateHoliday(group, nextDay, stbyBody2);
+ this.calculateHoliday(group, nextDay, stbyBody2, false);
lsStandbyScheduleBodies.add(stbyBody2);
}
@@ -372,14 +372,21 @@
* @param stbyBody
* @return
*/
- public StandbyScheduleBody calculateHoliday(StandbyGroup group, Date date, StandbyScheduleBody stbyBody) {
+ public StandbyScheduleBody calculateHoliday(StandbyGroup group, Date date, StandbyScheduleBody stbyBody,
+ boolean isSingleDay) {
if (isHoliday(date, group)) {
if (group.getExtendStandbyTime()) {
// if extend of standby time is needed
stbyBody = this.calculateHolidayExtend(group, date, stbyBody);
+ if (isSingleDay) { // additional calculation if no day overlapping time slot
+ stbyBody = this.calculateHolidayPreDraw(group, date, stbyBody);
+ }
} else {
// is pre-draw of standby time needed
stbyBody = this.calculateHolidayPreDraw(group, date, stbyBody);
+ if (isSingleDay) { // additional calculation if no day overlapping time slot
+ stbyBody = this.calculateHolidayExtend(group, date, stbyBody);
+ }
}
}
return stbyBody;
@@ -463,7 +470,7 @@
// no last duration for the day has been found. Therefore the start of day has
// been used for current entry
if (DateHelper.isDateAfter(DateHelper.getEndOfDay(date), stbyBody.getValidTo())) {
- stbyBody.setValidTo(DateHelper.getDateWithTime(date, DateHelper.getEndOfDay(date)));
+ stbyBody.setValidTo(DateHelper.getEndOfDay(date));
stbyBody.setModifiedCause(TXT_AUTOMATIC_PLANNING_HOLIDAY);
this.createMsgExtendHoliday(stbyBody, date, true);
}
@@ -471,7 +478,7 @@
// no last duration for the day has been found. Therefore the start of day has
// been used for current entry
if (DateHelper.isDateAfter(DateHelper.getEndOfDay(date), stbyBody.getValidTo())) {
- stbyBody.setValidTo(DateHelper.getDateWithTime(date, DateHelper.getEndOfDay(date)));
+ stbyBody.setValidTo(DateHelper.getEndOfDay(date));
stbyBody.setModifiedCause(TXT_AUTOMATIC_PLANNING_HOLIDAY);
this.createMsgExtendHoliday(stbyBody, date, true);
}
@@ -509,8 +516,8 @@
lsUserInGroup.get(currentPosition).getUser(), fittingDuration, TXT_AUTOMATIC_PLANNING);
standbyScheduleBodyRepository.save(stbyBody);
// calculate if holiday
- stbyBody = this.calculateHoliday(group, currentDate, stbyBody);
- // because o
+ stbyBody = this.calculateHoliday(group, currentDate, stbyBody, true);
+
createMsgSavingBody(stbyBody);
} else {
resultObj = this.calculateMultiScheduleBodyEntries(lsUserInGroup, currentDate, lastDate,
diff --git a/oKBereitschaftsplanungBackend/src/test/java/org/eclipse/openk/sp/controller/planning/PlanningControllerTest.java b/oKBereitschaftsplanungBackend/src/test/java/org/eclipse/openk/sp/controller/planning/PlanningControllerTest.java
index 8067739..de5226f 100644
--- a/oKBereitschaftsplanungBackend/src/test/java/org/eclipse/openk/sp/controller/planning/PlanningControllerTest.java
+++ b/oKBereitschaftsplanungBackend/src/test/java/org/eclipse/openk/sp/controller/planning/PlanningControllerTest.java
@@ -1054,20 +1054,20 @@
// test success 01 - holiday extend
group.setExtendStandbyTime(true);
- StandbyScheduleBody result = planningController.calculateHoliday(group, date, stbyBody);
+ StandbyScheduleBody result = planningController.calculateHoliday(group, date, stbyBody, false);
assertNotNull(result);
assertTrue(result.getId() == 1);
// test success 02 - holiday pre draw
group.setExtendStandbyTime(false);
- result = planningController.calculateHoliday(group, date, stbyBody);
+ result = planningController.calculateHoliday(group, date, stbyBody, false);
assertTrue(result.getId() == 2);
assertNotNull(result);
// test success 03 - no holiday
Mockito.doReturn(false).when(planningController).isHoliday(Mockito.any(Date.class),
Mockito.any(StandbyGroup.class));
- result = planningController.calculateHoliday(group, date, stbyBody);
+ result = planningController.calculateHoliday(group, date, stbyBody, false);
assertNotNull(result);
} catch (Exception e) {