diff --git a/app/controllers/resources/room_request.php b/app/controllers/resources/room_request.php index 4d435a78c229f950dbfadc8e6985bae3fd716e98..8130a4aba6e8de7fa350c2dae1de2d9106a5cd24 100644 --- a/app/controllers/resources/room_request.php +++ b/app/controllers/resources/room_request.php @@ -1758,6 +1758,7 @@ class Resources_RoomRequestController extends AuthenticatedController } $errors = []; + $warnings = []; $bookings = []; foreach ($this->selected_rooms as $range_str => $room_id) { @@ -1856,6 +1857,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 { @@ -1876,12 +1878,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]); @@ -1936,6 +1946,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.