summaryrefslogtreecommitdiff
path: root/includes/controller
diff options
context:
space:
mode:
authormsquare <msquare@notrademark.de>2016-12-27 23:02:05 +0100
committermsquare <msquare@notrademark.de>2016-12-27 23:02:05 +0100
commit46528fe1d888ae09d125c2ae8ac1952f1d7f29f6 (patch)
treeb8361bb6aff1307845c9903d2693121835e8d033 /includes/controller
parentffc33993d4cea15d4d8a4af631afdd97c3567c36 (diff)
shift view performance improvements
Diffstat (limited to 'includes/controller')
-rw-r--r--includes/controller/rooms_controller.php4
-rw-r--r--includes/controller/shift_entries_controller.php5
-rw-r--r--includes/controller/shifts_controller.php8
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 [