From a02daa90ef7411285810fc241c68a3f1e7d15d0b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Noack?= <noack@data-quest.de>
Date: Mon, 12 Feb 2024 15:34:02 +0000
Subject: [PATCH] Resolve #1043 "Belegungsplan: Bearbeiten von
 Wiederholungsterminen versucht, ausfallende Termine zu buchen"

Closes #1043

Merge request studip/studip!2602
---
 lib/models/resources/ResourceBooking.class.php | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/lib/models/resources/ResourceBooking.class.php b/lib/models/resources/ResourceBooking.class.php
index e496867aa43..84fc9c79ad5 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'],
-- 
GitLab