summaryrefslogtreecommitdiff
path: root/includes/controller/rooms_controller.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/controller/rooms_controller.php')
-rw-r--r--includes/controller/rooms_controller.php88
1 files changed, 88 insertions, 0 deletions
diff --git a/includes/controller/rooms_controller.php b/includes/controller/rooms_controller.php
index 5d55e1b7..0e8560d5 100644
--- a/includes/controller/rooms_controller.php
+++ b/includes/controller/rooms_controller.php
@@ -1,7 +1,95 @@
<?php
+use Engelsystem\ShiftsFilterRenderer;
+use Engelsystem\ShiftsFilter;
+use Engelsystem\ShiftCalendarRenderer;
+
+/**
+ * Room controllers for managing everything room related.
+ */
+
+/**
+ * View a room with its shifts.
+ */
+function room_controller() {
+ global $privileges, $user;
+
+ if (! in_array('view_rooms', $privileges)) {
+ redirect(page_link_to());
+ }
+
+ $room = load_room();
+ $all_shifts = Shifts_by_room($room);
+ $days = [];
+ foreach ($all_shifts as $shift) {
+ $day = date("Y-m-d", $shift['start']);
+ if (! in_array($day, $days)) {
+ $days[] = $day;
+ }
+ }
+
+ $shiftsFilter = new ShiftsFilter(true, [
+ $room['RID']
+ ], AngelType_ids());
+ $selected_day = date("Y-m-d");
+ if (! empty($days)) {
+ $selected_day = $days[0];
+ }
+ if (isset($_REQUEST['shifts_filter_day'])) {
+ $selected_day = $_REQUEST['shifts_filter_day'];
+ }
+ $shiftsFilter->setStartTime(parse_date("Y-m-d H:i", $selected_day . ' 00:00'));
+ $shiftsFilter->setEndTime(parse_date("Y-m-d H:i", $selected_day . ' 23:59'));
+
+ $shiftsFilterRenderer = new ShiftsFilterRenderer($shiftsFilter);
+ $shiftsFilterRenderer->enableDaySelection($days);
+
+ $shifts = Shifts_by_ShiftsFilter($shiftsFilter, $user);
+
+ return [
+ $room['Name'],
+ Room_view($room, $shiftsFilterRenderer, new ShiftCalendarRenderer($shifts, $shiftsFilter))
+ ];
+}
+
+/**
+ * Dispatch different room actions.
+ */
+function rooms_controller() {
+ if (! isset($_REQUEST['action'])) {
+ $_REQUEST['action'] = 'list';
+ }
+
+ switch ($_REQUEST['action']) {
+ default:
+ case 'list':
+ redirect(page_link_to('admin_rooms'));
+ case 'view':
+ return room_controller();
+ }
+}
function room_link($room) {
+ return page_link_to('rooms') . '&action=view&room_id=' . $room['RID'];
+}
+
+function room_edit_link($room) {
return page_link_to('admin_rooms') . '&show=edit&id=' . $room['RID'];
}
+/**
+ * Loads room by request param room_id
+ */
+function load_room() {
+ if (! test_request_int('room_id')) {
+ redirect(page_link_to());
+ }
+
+ $room = Room($_REQUEST['room_id']);
+ if ($room == null) {
+ redirect(page_link_to());
+ }
+
+ return $room;
+}
+
?> \ No newline at end of file