summaryrefslogtreecommitdiff
path: root/includes/model/ShiftSignupState.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/model/ShiftSignupState.php')
-rw-r--r--includes/model/ShiftSignupState.php23
1 files changed, 21 insertions, 2 deletions
diff --git a/includes/model/ShiftSignupState.php b/includes/model/ShiftSignupState.php
index f9226375..393023ee 100644
--- a/includes/model/ShiftSignupState.php
+++ b/includes/model/ShiftSignupState.php
@@ -61,10 +61,29 @@ class ShiftSignupState {
public function combineWith(ShiftSignupState $shiftSignupState) {
$this->freeEntries += $shiftSignupState->getFreeEntries();
- switch ($this->state) {
+ if ($this->valueForState($shiftSignupState->state) > $this->valueForState($this->state)) {
+ $this->state = $shiftSignupState->state;
+ }
+ }
+
+ private function valueForState($state) {
+ switch ($state) {
+ case ShiftSignupState::SHIFT_ENDED:
+ return 100;
+
+ case ShiftSignupState::SIGNED_UP:
+ return 90;
+
+ case ShiftSignupState::FREE:
+ return 80;
+
case ShiftSignupState::ANGELTYPE:
+ case ShiftSignupState::COLLIDES:
+ return 70;
+
case ShiftSignupState::OCCUPIED:
- $this->state = $shiftSignupState->getState();
+ case ShiftSignupState::ADMIN:
+ return 60;
}
}