From 1d1f846c20af881321e3e4d5a6390879dd5d9c4c Mon Sep 17 00:00:00 2001
From: Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de>
Date: Tue, 28 Nov 2023 19:21:20 +0000
Subject: [PATCH] check the dates in resource_request_appointments instead of
 all course dates, fixes #3509

Closes #3509

Merge request studip/studip!2399
---
 app/controllers/resources/room_request.php | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/app/controllers/resources/room_request.php b/app/controllers/resources/room_request.php
index c6aed3a4241..0ef07d2d7ce 100644
--- a/app/controllers/resources/room_request.php
+++ b/app/controllers/resources/room_request.php
@@ -302,7 +302,11 @@ class Resources_RoomRequestController extends AuthenticatedController
                     OR
                     (resource_requests.metadate_id <> '' AND EXISTS (SELECT * FROM termine WHERE termine.metadate_id=resource_requests.metadate_id AND termine.date BETWEEN :begin AND :semester_end))
                     OR
-                    (resource_requests.termin_id = '' AND resource_requests.metadate_id = '' AND EXISTS (SELECT * FROM termine WHERE termine.range_id=resource_requests.course_id AND termine.date BETWEEN :begin AND :semester_end))
+                    (resource_requests.termin_id = '' AND resource_requests.metadate_id = '' AND (
+                        EXISTS (SELECT * FROM termine JOIN resource_request_appointments ON termine.termin_id = appointment_id WHERE request_id = resource_requests.id AND termine.date BETWEEN :begin AND :semester_end)
+                        OR
+                        NOT EXISTS (SELECT * FROM resource_request_appointments WHERE request_id = resource_requests.id) AND EXISTS (SELECT * FROM termine WHERE termine.range_id=resource_requests.course_id AND termine.date BETWEEN :begin AND :semester_end)
+                    ))
                      ";
 
                 if (empty($this->filter['request_periods'])) {
-- 
GitLab