aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndré Noack <noack@data-quest.de>2024-02-12 15:34:02 +0000
committerAndré Noack <noack@data-quest.de>2024-02-12 15:34:02 +0000
commita02daa90ef7411285810fc241c68a3f1e7d15d0b (patch)
tree9e074332feb1b7b823eda90f5a4707954e655cb7
parente36aea0881f808a9b4572034761135b3bdcb4d0e (diff)
Resolve #1043 "Belegungsplan: Bearbeiten von Wiederholungsterminen versucht, ausfallende Termine zu buchen"
Closes #1043 Merge request studip/studip!2602
-rw-r--r--lib/models/resources/ResourceBooking.class.php17
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/models/resources/ResourceBooking.class.php b/lib/models/resources/ResourceBooking.class.php
index e496867..84fc9c7 100644
--- a/lib/models/resources/ResourceBooking.class.php
+++ b/lib/models/resources/ResourceBooking.class.php
@@ -511,7 +511,24 @@ class ResourceBooking extends SimpleORMap implements PrivacyObject, Studip\Calen
$time_intervals = $this->calculateTimeIntervals(true);
$time_interval_overlaps = [];
+ $existing_deleted_intervals = [];
+ if (!$this->isNew()) {
+ $existing_deleted_intervals = array_filter(
+ $this->getTimeIntervals(),
+ function ($i): bool {
+ return !$i->takes_place;
+ }
+ );
+ }
foreach ($time_intervals as $time_interval) {
+ foreach ($existing_deleted_intervals as $deleted_interval) {
+ if (
+ $time_interval['begin']->getTimestamp() == $deleted_interval['begin']
+ && $time_interval['end']->getTimestamp() == $deleted_interval['end']
+ ) {
+ continue 2;
+ }
+ }
$is_locked = $derived_resource->isLocked(
$time_interval['begin'],
$time_interval['end'],