diff options
Diffstat (limited to 'includes/model/ShiftSignupState.php')
-rw-r--r-- | includes/model/ShiftSignupState.php | 234 |
1 files changed, 129 insertions, 105 deletions
diff --git a/includes/model/ShiftSignupState.php b/includes/model/ShiftSignupState.php index 393023ee..9b3de496 100644 --- a/includes/model/ShiftSignupState.php +++ b/includes/model/ShiftSignupState.php @@ -6,112 +6,136 @@ namespace Engelsystem; * BO to represent if there are free slots on a shift for a given angeltype * and if signup for a given user is possible (or not, because of collisions, etc.) */ -class ShiftSignupState { - - /** - * Shift has free places - */ - const FREE = 'FREE'; - - /** - * Shift collides with users shifts - */ - const COLLIDES = 'COLLIDES'; - - /** - * User cannot join because of a restricted angeltype or user is not in the angeltype - */ - const ANGELTYPE = 'ANGELTYPE'; - - /** - * Shift is full - */ - const OCCUPIED = 'OCCUPIED'; - - /** - * User is admin and can do what he wants. - */ - const ADMIN = 'ADMIN'; - - /** - * Shift has already ended, no signup - */ - const SHIFT_ENDED = 'SHIFT_ENDED'; - - /** - * User is already signed up - */ - const SIGNED_UP = 'SIGNED_UP'; - - private $state; - - private $freeEntries; - - public function __construct($state, $free_entries) { - $this->state = $state; - $this->freeEntries = $free_entries; - } - - /** - * Combine this state with another state from the same shift. - * - * @param ShiftSignupState $shiftSignupState - * The other state to combine - */ - public function combineWith(ShiftSignupState $shiftSignupState) { - $this->freeEntries += $shiftSignupState->getFreeEntries(); - - if ($this->valueForState($shiftSignupState->state) > $this->valueForState($this->state)) { - $this->state = $shiftSignupState->state; +class ShiftSignupState +{ + /** + * Shift has free places + */ + const FREE = 'FREE'; + + /** + * Shift collides with users shifts + */ + const COLLIDES = 'COLLIDES'; + + /** + * User cannot join because of a restricted angeltype or user is not in the angeltype + */ + const ANGELTYPE = 'ANGELTYPE'; + + /** + * Shift is full + */ + const OCCUPIED = 'OCCUPIED'; + + /** + * User is admin and can do what he wants. + */ + const ADMIN = 'ADMIN'; + + /** + * Shift has already ended, no signup + */ + const SHIFT_ENDED = 'SHIFT_ENDED'; + + /** + * User is already signed up + */ + const SIGNED_UP = 'SIGNED_UP'; + + /** @var string */ + private $state; + + /** @var int */ + private $freeEntries; + + /** + * ShiftSignupState constructor. + * + * @param string $state + * @param int $free_entries + */ + public function __construct($state, $free_entries) + { + $this->state = $state; + $this->freeEntries = $free_entries; } - } - - 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: - case ShiftSignupState::ADMIN: - return 60; + + /** + * Combine this state with another state from the same shift. + * + * @param ShiftSignupState $shiftSignupState + * The other state to combine + */ + public function combineWith(ShiftSignupState $shiftSignupState) + { + $this->freeEntries += $shiftSignupState->getFreeEntries(); + + if ($this->valueForState($shiftSignupState->state) > $this->valueForState($this->state)) { + $this->state = $shiftSignupState->state; + } } - } - - /** - * Returns true, if signup is allowed - */ - public function isSignupAllowed() { - switch ($this->state) { - case ShiftSignupState::FREE: - case ShiftSignupState::ADMIN: - return true; + + /** + * @param string $state + * @return int + */ + 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: + case ShiftSignupState::ADMIN: + return 60; + default: + return 0; + } + } + + /** + * Returns true, if signup is allowed + * + * @return bool + */ + public function isSignupAllowed() + { + switch ($this->state) { + case ShiftSignupState::FREE: + case ShiftSignupState::ADMIN: + return true; + } + return false; } - return false; - } - - /** - * Return the shift signup state - */ - public function getState() { - return $this->state; - } - - /** - * How many places are free in this shift for the angeltype? - */ - public function getFreeEntries() { - return $this->freeEntries; - } -} -?>
\ No newline at end of file + /** + * Return the shift signup state + * + * @return string + */ + public function getState() + { + return $this->state; + } + + /** + * How many places are free in this shift for the angeltype? + * + * @return int + */ + public function getFreeEntries() + { + return $this->freeEntries; + } +} |