diff --git a/app/controllers/resources/room_request.php b/app/controllers/resources/room_request.php index 2b25b7f9d6efb1f512cfb0e2aa6b8878a5595c16..0592b119cf2745d564382db814c0188d9221ec51 100644 --- a/app/controllers/resources/room_request.php +++ b/app/controllers/resources/room_request.php @@ -380,13 +380,15 @@ class Resources_RoomRequestController extends AuthenticatedController protected function getRoomAvailability(Room $room, $time_intervals = []) { $availability = []; + foreach ($time_intervals as $interval) { $begin = new DateTime(); $end = new DateTime(); $begin->setTimestamp($interval['begin']); $end->setTimestamp($interval['end']); - $availability[] = $room->isAvailable($begin, $end); + $availability[] = $room->isAvailable($begin, $end, [$interval['booking_id']]); } + return $availability; } diff --git a/app/views/resources/room_request/resolve_room_tr.php b/app/views/resources/room_request/resolve_room_tr.php index edac4b509a5c6d03fe6dd8b3ec0537c577dcde0b..83b6ae7cacb3e8de548216cfa22ab1523ba58167 100644 --- a/app/views/resources/room_request/resolve_room_tr.php +++ b/app/views/resources/room_request/resolve_room_tr.php @@ -55,6 +55,20 @@ ? 'checked="checked"' : ''?>> <?= Icon::create('check-circle', Icon::ROLE_STATUS_GREEN)->asImg(['class' => 'text-bottom']) ?> + + <? $stats = 0; array_walk($data['intervals'], function(&$item, $key, $room_id) use (&$stats) { + if ($item['booked_room'] == $room_id) { + $stats++; + } + }, $room->id) ?> + + <? if ($stats > 0) : ?> + <?= tooltipIcon(sprintf( + _('%s von %s Terminen sind in diesem Raum'), + $stats, sizeof($data['intervals']) + )); + ?> + <? endif ?> <? else: ?> <input type="radio" name="<?= htmlReady($room_radio_name) ?>" value="1" disabled="disabled" diff --git a/lib/models/resources/ResourceRequest.class.php b/lib/models/resources/ResourceRequest.class.php index d7435c8cde8129e3b9f40935b4b5b9ea47a68241..b65e39ca3d07a793336c278efc65e711736f1efe 100644 --- a/lib/models/resources/ResourceRequest.class.php +++ b/lib/models/resources/ResourceRequest.class.php @@ -926,9 +926,12 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen 'end' => $appointment->appointment->end_time ]; } + + $date = CourseDate::find($appointment->appointment_id); $interval['range'] = 'CourseDate'; $interval['range_id'] = $appointment->appointment_id; - $interval['booked_room'] = CourseDate::find($appointment->appointment_id)->room_booking->resource_id; + $interval['booked_room'] = $date->room_booking->resource_id; + $interval['booking_id'] = $date->room_booking->id; $time_intervals['']['intervals'][] = $interval; } @@ -949,9 +952,12 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen 'end' => $this->date->end_time ]; } + + $date = CourseDate::find($this->termin_id); $interval['range'] = 'CourseDate'; $interval['range_id'] = $this->termin_id; - $interval['booked_room'] = CourseDate::find($this->termin_id)->room_booking->resource_id; + $interval['booked_room'] = $date->room_booking->resource_id; + $interval['booking_id'] = $date->room_booking->id; if (!empty($interval)) { return [ @@ -985,6 +991,7 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen $interval['range'] = 'CourseDate'; $interval['range_id'] = $date->id; $interval['booked_room'] = $date->room_booking->resource_id; + $interval['booking_id'] = $date->room_booking->id; $time_intervals[$this->metadate_id]['intervals'][] = $interval; } return $time_intervals; @@ -1012,6 +1019,7 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen $interval['range'] = 'CourseDate'; $interval['range_id'] = $date->id; $interval['booked_room'] = $date->room_booking->resource_id; + $interval['booking_id'] = $date->room_booking->id; $time_intervals[$cycle->id]['intervals'][] = $interval; } }