From 8f4f3c054e59db30a83af55deb3361733a4b575f Mon Sep 17 00:00:00 2001 From: abijah Date: Thu, 28 May 2009 22:09:04 +0000 Subject: [PATCH] Moved the unit status logic into the model where it belongs. git-svn-id: file:///svn-source/pmgr/branches/initial_20090526/site@30 97e9348a-65ac-dc4b-aefc-98561f571b83 --- controllers/units_controller.php | 10 ++++++++-- models/unit.php | 33 +++++++++++++++++++++++++++++--- 2 files changed, 38 insertions(+), 5 deletions(-) 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')); + } + }