summaryrefslogtreecommitdiff
path: root/includes/controller/angeltypes_controller.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/controller/angeltypes_controller.php')
-rw-r--r--includes/controller/angeltypes_controller.php61
1 files changed, 60 insertions, 1 deletions
diff --git a/includes/controller/angeltypes_controller.php b/includes/controller/angeltypes_controller.php
index eaaa9c0f..5c3bd859 100644
--- a/includes/controller/angeltypes_controller.php
+++ b/includes/controller/angeltypes_controller.php
@@ -1,5 +1,7 @@
<?php
+use Engelsystem\ShiftsFilter;
+use Engelsystem\ShiftsFilterRenderer;
/**
* Text for Angeltype related links.
*
@@ -182,6 +184,14 @@ function angeltype_controller()
$user_angeltype = UserAngelType_by_User_and_AngelType($user, $angeltype);
$user_driver_license = UserDriverLicense($user['UID']);
$members = Users_by_angeltype($angeltype);
+
+ $days = angeltype_controller_shiftsFilterDays($angeltype);
+ $shiftsFilter = angeltype_controller_shiftsFilter($angeltype, $days);
+
+ $shiftsFilterRenderer = new ShiftsFilterRenderer($shiftsFilter);
+ $shiftsFilterRenderer->enableDaySelection($days);
+
+ $shiftCalendarRenderer = shiftCalendarRendererByShiftFilter($shiftsFilter);
return [
sprintf(_('Team %s'), $angeltype['name']),
@@ -193,12 +203,61 @@ function angeltype_controller()
in_array('admin_angel_types', $privileges),
$user_angeltype['supporter'],
$user_driver_license,
- $user
+ $user,
+ $shiftsFilterRenderer,
+ $shiftCalendarRenderer
)
];
}
/**
+ * On which days do shifts for this angeltype occur? Needed for shiftCalendar.
+ *
+ * @param Angeltype $angeltype
+ * @return array
+ */
+function angeltype_controller_shiftsFilterDays($angeltype) {
+ $all_shifts = Shifts_by_angeltype($angeltype);
+ $days = [];
+ foreach ($all_shifts as $shift) {
+ $day = date('Y-m-d', $shift['start']);
+ if (!in_array($day, $days)) {
+ $days[] = $day;
+ }
+ }
+ return $days;
+}
+
+/**
+ * Sets up the shift filter for the angeltype.
+ *
+ * @param Angeltype $angeltype
+ * @param array $days
+ * @return ShiftsFilter
+ */
+function angeltype_controller_shiftsFilter($angeltype, $days) {
+ global $privileges;
+
+ $request = request();
+ $shiftsFilter = new ShiftsFilter(
+ in_array('user_shifts_admin', $privileges),
+ Room_ids(),
+ [$angeltype['id']]
+ );
+ $selected_day = date('Y-m-d');
+ if (!empty($days)) {
+ $selected_day = $days[0];
+ }
+ if ($request->has('shifts_filter_day')) {
+ $selected_day = $request->input('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'));
+
+ return $shiftsFilter;
+}
+
+/**
* View a list of all angeltypes.
*
* @return array