diff --git a/controllers/units_controller.php b/controllers/units_controller.php index e6569b3..6e0e931 100644 --- a/controllers/units_controller.php +++ b/controllers/units_controller.php @@ -10,15 +10,21 @@ class UnitsController extends AppController { $this->all(); } + function unavailable() { + $this->Unit->recursive = 0; + $this->set('units', $this->paginate(array($this->Unit->conditionUnavailable()))); + $this->render('index'); + } + function vacant() { $this->Unit->recursive = 0; - $this->set('units', $this->paginate(array('Unit.status < ' . $this->Unit->occupiedEnumValue()))); + $this->set('units', $this->paginate(array($this->Unit->conditionVacant()))); $this->render('index'); } function occupied() { $this->Unit->recursive = 0; - $this->set('units', $this->paginate(array('Unit.status >= ' . $this->Unit->occupiedEnumValue()))); + $this->set('units', $this->paginate(array($this->Unit->conditionOccupied()))); $this->render('index'); } diff --git a/models/unit.php b/models/unit.php index 72c1af9..fb0b173 100644 --- a/models/unit.php +++ b/models/unit.php @@ -45,8 +45,35 @@ class Unit extends AppModel { ) ); - function occupiedEnumValue() { - $enums = $this->getEnumValues('status'); - return $enums['OCCUPIED']; + function statusEnums() { + static $status_enums; + if (!isset($status_enums)) + $status_enums = $this->getEnumValues('status'); + return $status_enums; } + + function statusValue($enum) { + $enums = $this->statusEnums(); + return $enums[$enum]; + } + + function occupiedEnumValue() { + return statusValue('OCCUPIED'); + } + + function conditionOccupied() { + return ('Unit.status >= ' . $this->statusValue('OCCUPIED')); + } + + function conditionVacant() { + return ('Unit.status BETWEEN ' . + ($this->statusValue('UNAVAILABLE')+1) . + ' AND ' . + ($this->statusValue('OCCUPIED')-1)); + } + + function conditionUnavailable() { + return ('Unit.status <= ' . $this->statusValue('UNAVAILABLE')); + } + }