diff --git a/app/controllers/resources/room_request.php b/app/controllers/resources/room_request.php index 58842dddaec08cfddbf165c127e070a48fbb524d..6a0c9087edbeb4886b2d18205dd0aa9e9a28b78a 100644 --- a/app/controllers/resources/room_request.php +++ b/app/controllers/resources/room_request.php @@ -1760,6 +1760,7 @@ class Resources_RoomRequestController extends AuthenticatedController } $errors = []; + $warnings = []; $bookings = []; foreach ($this->selected_rooms as $range_str => $room_id) { @@ -1858,6 +1859,7 @@ class Resources_RoomRequestController extends AuthenticatedController return; } if ($metadate->dates) { + $overlap_messages = []; foreach ($metadate->dates as $date) { if ($date->room_booking->resource_id != $room_id) { try { @@ -1878,12 +1880,20 @@ class Resources_RoomRequestController extends AuthenticatedController if ($booking instanceof ResourceBooking) { $bookings[] = $booking; } + } catch (ResourceBookingException $e) { + $overlap_messages[] = $e->getMessage(); } catch (Exception $e) { $errors[] = $e->getMessage(); continue; } } } + if (count($overlap_messages) == count($metadate->dates)) { + //The booking could not be saved at all. + $errors = array_merge($errors, $overlap_messages); + } else { + $warnings = array_merge($warnings, $overlap_messages); + } } } elseif ($range_data[0] == 'User') { $user = User::find($range_data[1]); @@ -1938,6 +1948,12 @@ class Resources_RoomRequestController extends AuthenticatedController _('Es traten Fehler beim Auflösen der Anfrage auf!'), $errors ); + } else if ($warnings && !$force_resolve && !$save_only) { + PageLayout::postWarning( + _('Es wurden nicht für alle Termine der Anfrage Räume ausgewählt! Soll die Anfrage wirklich aufgelöst werden?'), + $warnings + ); + $this->show_force_resolve_button = true; } else if (!$save_only) { //No errors: We can close the request.