diff options
Diffstat (limited to 'includes/controller')
-rw-r--r-- | includes/controller/rooms_controller.php | 4 | ||||
-rw-r--r-- | includes/controller/shift_entries_controller.php | 5 | ||||
-rw-r--r-- | includes/controller/shifts_controller.php | 8 |
3 files changed, 13 insertions, 4 deletions
diff --git a/includes/controller/rooms_controller.php b/includes/controller/rooms_controller.php index 0e8560d5..7a4f543b 100644 --- a/includes/controller/rooms_controller.php +++ b/includes/controller/rooms_controller.php @@ -44,10 +44,12 @@ function room_controller() { $shiftsFilterRenderer->enableDaySelection($days); $shifts = Shifts_by_ShiftsFilter($shiftsFilter, $user); + $needed_angeltypes = NeededAngeltypes_by_ShiftsFilter($shiftsFilter, $user); + $shift_entries = ShiftEntries_by_ShiftsFilter($shiftsFilter, $user); return [ $room['Name'], - Room_view($room, $shiftsFilterRenderer, new ShiftCalendarRenderer($shifts, $shiftsFilter)) + Room_view($room, $shiftsFilterRenderer, new ShiftCalendarRenderer($shifts, $needed_angeltypes, $shift_entries, $shiftsFilter)) ]; } diff --git a/includes/controller/shift_entries_controller.php b/includes/controller/shift_entries_controller.php index 32c94a6b..d0a12288 100644 --- a/includes/controller/shift_entries_controller.php +++ b/includes/controller/shift_entries_controller.php @@ -48,7 +48,10 @@ function shift_entry_add_controller() { $user_id = $user['UID']; } - $shift_signup_allowed = Shift_signup_allowed(User($user_id), $shift, $type); + $needed_angeltype = NeededAngeltype_by_Shift_and_Angeltype($shift, $type); + $shift_entries = ShiftEntries_by_shift_and_angeltype($shift['SID'], $type['id']); + + $shift_signup_allowed = Shift_signup_allowed(User($user_id), $shift, $type, null, null, $needed_angeltype, $shift_entries); if (! $shift_signup_allowed->isSignupAllowed()) { error(_("You are not allowed to sign up for this shift. Maybe shift is full or already running.")); redirect(shift_link($shift)); diff --git a/includes/controller/shifts_controller.php b/includes/controller/shifts_controller.php index 1e04c5a8..9ac8a766 100644 --- a/includes/controller/shifts_controller.php +++ b/includes/controller/shifts_controller.php @@ -202,13 +202,17 @@ function shift_controller() { $user_shifts = Shifts_by_user($user); $shift_signup_state = new ShiftSignupState(ShiftSignupState::OCCUPIED, 0); - foreach ($angeltypes as $angeltype) { - $angeltype_signup_state = Shift_signup_allowed($user, $shift, $angeltype, null, $user_shifts); + foreach ($angeltypes as &$angeltype) { + $needed_angeltype = NeededAngeltype_by_Shift_and_Angeltype($shift, $angeltype); + $shift_entries = ShiftEntries_by_shift_and_angeltype($shift['SID'], $angeltype['id']); + + $angeltype_signup_state = Shift_signup_allowed($user, $shift, $angeltype, null, $user_shifts, $needed_angeltype, $shift_entries); if ($shift_signup_state == null) { $shift_signup_state = $angeltype_signup_state; } else { $shift_signup_state->combineWith($angeltype_signup_state); } + $angeltype['shift_signup_state'] = $angeltype_signup_state; } return [ |