From 46bcded3dfbb180fe94341d7ed2f2d31bd48273a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Till=20Gl=C3=B6ggler?= <till@gundk.it>
Date: Fri, 8 Oct 2021 12:49:47 +0200
Subject: [PATCH] fixes #281, improve query, consider aperiodic case as well

---
 app/controllers/resources/room_request.php | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/app/controllers/resources/room_request.php b/app/controllers/resources/room_request.php
index 0c1b6eec286..0986dbce97c 100644
--- a/app/controllers/resources/room_request.php
+++ b/app/controllers/resources/room_request.php
@@ -210,15 +210,31 @@ class Resources_RoomRequestController extends AuthenticatedController
 
         if ($this->filter['request_periods'] == 'periodic') {
             // get rid of requests for single dates AND requests for multiple single dates
+            // also check if there exists cycle dates in case it is a request for the whole seminar
             $sql .= " AND resource_requests.termin_id = ''
             AND NOT EXISTS
             (
                 SELECT * FROM resource_request_appointments
                 WHERE resource_request_appointments.request_id = resource_requests.id
+            )
+            AND EXISTS (
+                SELECT * FROM seminar_cycle_dates
+                WHERE seminar_cycle_dates.seminar_id = resource_requests.course_id
             )";
         }
         if ($this->filter['request_periods'] == 'aperiodic') {
-            $sql .= " AND resource_requests.termin_id <> '' ";
+            $sql .= " AND (
+                resource_requests.termin_id <> ''
+                OR EXISTS
+                (
+                    SELECT * FROM resource_request_appointments
+                    WHERE resource_request_appointments.request_id = resource_requests.id
+                )
+                OR NOT EXISTS (
+                    SELECT * FROM seminar_cycle_dates
+                    WHERE seminar_cycle_dates.seminar_id = resource_requests.course_id
+                )
+            )";
         }
 
 
-- 
GitLab