From 90fbf15a9bf66ba83011eeedc48d687a4d94cbb2 Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Tue, 6 Sep 2022 14:54:39 +0000
Subject: [PATCH] fix creation and deletion of consultation events, fixes #982

Closes #982

Merge request studip/studip!971
---
 lib/models/ConsultationBlock.php | 2 +-
 lib/models/ConsultationEvent.php | 2 +-
 lib/models/ConsultationSlot.php  | 4 ++++
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/lib/models/ConsultationBlock.php b/lib/models/ConsultationBlock.php
index 4104ad8ca4f..7ae2bfe46ab 100644
--- a/lib/models/ConsultationBlock.php
+++ b/lib/models/ConsultationBlock.php
@@ -24,7 +24,7 @@
  * @property bool has_bookings computed column
  * @property Range range computed column
  * @property SimpleORMapCollection slots has_many ConsultationSlot
- * @property ConsultationResponsibility[] responsibilities has_many ConsultationResponsibility
+ * @property ConsultationResponsibility[]|SimpleCollection responsibilities has_many ConsultationResponsibility
  * @property User[] responsible_persons
  */
 class ConsultationBlock extends SimpleORMap implements PrivacyObject
diff --git a/lib/models/ConsultationEvent.php b/lib/models/ConsultationEvent.php
index d02e2d8a0b0..afc69805ffd 100644
--- a/lib/models/ConsultationEvent.php
+++ b/lib/models/ConsultationEvent.php
@@ -22,7 +22,7 @@ class ConsultationEvent extends SimpleORMap
             'class_name'  => ConsultationSlot::class,
             'foreign_key' => 'slot_id',
         ];
-        $config['belongs_to']['event'] = [
+        $config['has_one']['event'] = [
             'class_name'        => EventData::class,
             'foreign_key'       => 'event_id',
             'assoc_foreign_key' => 'event_id',
diff --git a/lib/models/ConsultationSlot.php b/lib/models/ConsultationSlot.php
index aac384c6677..217631128dc 100644
--- a/lib/models/ConsultationSlot.php
+++ b/lib/models/ConsultationSlot.php
@@ -193,6 +193,10 @@ class ConsultationSlot extends SimpleORMap
      */
     public function updateEvents()
     {
+        if ($this->isNew()) {
+            return;
+        }
+
         // If no range is associated, remove the event
         if (!$this->block->range) {
             $this->events->delete();
-- 
GitLab