summaryrefslogtreecommitdiff
path: root/includes/view/ShiftCalendarLane.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/view/ShiftCalendarLane.php')
-rw-r--r--includes/view/ShiftCalendarLane.php125
1 files changed, 74 insertions, 51 deletions
diff --git a/includes/view/ShiftCalendarLane.php b/includes/view/ShiftCalendarLane.php
index 33fccec3..fd4c6f06 100644
--- a/includes/view/ShiftCalendarLane.php
+++ b/includes/view/ShiftCalendarLane.php
@@ -2,62 +2,85 @@
namespace Engelsystem;
+use Exception;
+
/**
* Represents a single lane in a shifts calendar.
*/
-class ShiftCalendarLane {
-
- private $firstBlockStartTime;
-
- private $blockCount;
-
- private $header;
-
- private $shifts = [];
-
- public function __construct($header, $firstBlockStartTime, $blockCount) {
- $this->header = $header;
- $this->firstBlockStartTime = $firstBlockStartTime;
- $this->blockCount = $blockCount;
- }
-
- /**
- * Adds a shift to the lane, but only if it fits.
- * Returns true on success.
- *
- * @param Shift $shift
- * The shift to add
- * @return boolean true on success
- */
- public function addShift($shift) {
- if ($this->shiftFits($shift)) {
- $this->shifts[] = $shift;
- return true;
+class ShiftCalendarLane
+{
+ /** @var int */
+ private $firstBlockStartTime;
+
+ /** @var int */
+ private $blockCount;
+
+ /** @var string */
+ private $header;
+
+ /** @var array[] */
+ private $shifts = [];
+
+ /**
+ * ShiftCalendarLane constructor.
+ *
+ * @param string $header
+ * @param int $firstBlockStartTime Unix timestamp
+ * @param int $blockCount
+ */
+ public function __construct($header, $firstBlockStartTime, $blockCount)
+ {
+ $this->header = $header;
+ $this->firstBlockStartTime = $firstBlockStartTime;
+ $this->blockCount = $blockCount;
}
- return false;
- }
-
- /**
- * Returns true if given shift fits into this lane.
- *
- * @param Shift $shift
- * The shift to fit into this lane
- */
- public function shiftFits($newShift) {
- foreach ($this->shifts as $laneShift) {
- if (! ($newShift['start'] >= $laneShift['end'] || $newShift['end'] <= $laneShift['start'])) {
- return false;
- }
+
+ /**
+ * Adds a shift to the lane, but only if it fits.
+ * Returns true on success.
+ *
+ * @param array $shift The shift to add
+ * @throws Exception if the shift doesn't fit into the lane.
+ */
+ public function addShift($shift)
+ {
+ if ($this->shiftFits($shift)) {
+ $this->shifts[] = $shift;
+ return;
+ }
+ throw new Exception('Unable to add shift to shift calendar lane.');
}
- return true;
- }
- public function getHeader() {
- return $this->header;
- }
+ /**
+ * Returns true if given shift fits into this lane.
+ *
+ * @param array $newShift
+ * @return bool
+ * @internal param array $shift The shift to fit into this lane
+ */
+ public function shiftFits($newShift)
+ {
+ foreach ($this->shifts as $laneShift) {
+ if (!($newShift['start'] >= $laneShift['end'] || $newShift['end'] <= $laneShift['start'])) {
+ return false;
+ }
+ }
+ return true;
+ }
- public function getShifts() {
- return $this->shifts;
- }
+ /**
+ * @return string
+ */
+ public function getHeader()
+ {
+ return $this->header;
+ }
+
+ /**
+ * @return array[]
+ */
+ public function getShifts()
+ {
+ return $this->shifts;
+ }
}
-?> \ No newline at end of file