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
This commit is contained in:
abijah
2009-05-28 22:09:04 +00:00
parent 1249854514
commit 8f4f3c054e
2 changed files with 38 additions and 5 deletions

View File

@@ -10,15 +10,21 @@ class UnitsController extends AppController {
$this->all(); $this->all();
} }
function unavailable() {
$this->Unit->recursive = 0;
$this->set('units', $this->paginate(array($this->Unit->conditionUnavailable())));
$this->render('index');
}
function vacant() { function vacant() {
$this->Unit->recursive = 0; $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'); $this->render('index');
} }
function occupied() { function occupied() {
$this->Unit->recursive = 0; $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'); $this->render('index');
} }

View File

@@ -45,8 +45,35 @@ class Unit extends AppModel {
) )
); );
function occupiedEnumValue() { function statusEnums() {
$enums = $this->getEnumValues('status'); static $status_enums;
return $enums['OCCUPIED']; 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'));
}
} }