From 591fc0c0d98f7ed040b0c18968ab6c92a433ebcc Mon Sep 17 00:00:00 2001
From: Moritz Strohm <strohm@data-quest.de>
Date: Wed, 19 Jul 2023 06:30:54 +0000
Subject: [PATCH] display course name if a course booking overlaps a new
 booking, re #2119

Merge request studip/studip!1914
---
 .../resources/ResourceBooking.class.php       | 52 +++++++++++++++----
 1 file changed, 42 insertions(+), 10 deletions(-)

diff --git a/lib/models/resources/ResourceBooking.class.php b/lib/models/resources/ResourceBooking.class.php
index 3d8ec289916..218a3e43091 100644
--- a/lib/models/resources/ResourceBooking.class.php
+++ b/lib/models/resources/ResourceBooking.class.php
@@ -531,18 +531,50 @@ class ResourceBooking extends SimpleORMap implements PrivacyObject, Studip\Calen
                     ($this->isNew() ? [] : [$this->id])
                 );
                 if ($is_assigned) {
+                    //Find the other booking:
+                    $other_booking = self::findByResourceAndTimeRanges(
+                        $derived_resource,
+                        [$time_interval],
+                        [0, 2],
+                        [$this->id]
+                    );
+                    $course = null;
+                    if (
+                        count($other_booking) >= 1
+                        && !empty($other_booking[0]->assigned_course_date->course)
+                    ) {
+                        $course = $other_booking[0]->assigned_course_date->course;
+                    }
                     if ($time_interval['begin']->format('Ymd') == $time_interval['end']->format('Ymd')) {
-                        $time_interval_overlaps[] = sprintf(
-                            _('Gebucht im Bereich vom %1$s bis %2$s'),
-                            $time_interval['begin']->format('d.m.Y H:i'),
-                            $time_interval['end']->format('H:i')
-                        );
+                        if ($course) {
+                            $time_interval_overlaps[] = sprintf(
+                                    _('Gebucht im Bereich vom %1$s bis %2$s durch die Veranstaltung %3$s.'),
+                                    $time_interval['begin']->format('d.m.Y H:i'),
+                                    $time_interval['end']->format('H:i'),
+                                    $course->getFullName()
+                                );
+                        } else {
+                            $time_interval_overlaps[] = sprintf(
+                                _('Gebucht im Bereich vom %1$s bis %2$s'),
+                                $time_interval['begin']->format('d.m.Y H:i'),
+                                $time_interval['end']->format('H:i')
+                            );
+                        }
                     } else {
-                        $time_interval_overlaps[] = sprintf(
-                            _('Gebucht im Bereich vom %1$s bis zum %2$s'),
-                            $time_interval['begin']->format('d.m.Y H:i'),
-                            $time_interval['end']->format('d.m.Y H:i')
-                        );
+                        if ($course) {
+                            $time_interval_overlaps[] = sprintf(
+                                    _('Gebucht im Bereich vom %1$s bis zum %2$s durch die Veranstaltung %3$s.'),
+                                    $time_interval['begin']->format('d.m.Y H:i'),
+                                    $time_interval['end']->format('d.m.Y H:i'),
+                                    $course->getFullName()
+                                );
+                        } else {
+                            $time_interval_overlaps[] = sprintf(
+                                _('Gebucht im Bereich vom %1$s bis zum %2$s'),
+                                $time_interval['begin']->format('d.m.Y H:i'),
+                                $time_interval['end']->format('d.m.Y H:i')
+                            );
+                        }
                     }
                 }
             }
-- 
GitLab