diff --git a/application/Building/Building.php b/application/Building/Building.php index 5eac00956..19b14d447 100644 --- a/application/Building/Building.php +++ b/application/Building/Building.php @@ -3,6 +3,7 @@ class Building extends mfBaseModel { protected $forcestr = ['street','zip','phone','email','note']; + private $in_after_save; private $network; private $networksection; private $pop; @@ -29,7 +30,12 @@ class Building extends mfBaseModel { } protected function afterSave() { + if($this->in_after_save) return true; + $this->in_after_save++; + $this->resetProperties(); + + $this->in_after_save--; } public function resetProperties() { @@ -43,6 +49,18 @@ class Building extends mfBaseModel { $this->files = null; } + public function updateUnitCount() { + if(!$this->id) return true; + + $unit_count = TerminationModel::count(["building_id" => $this->id]); + if($this->units != $unit_count) { + $this->units = $unit_count; + $this->save(); + } + + return true; + } + public function getNewObjectCode() { if(!$this->zip) { return false; diff --git a/application/Termination/Termination.php b/application/Termination/Termination.php index 2e5f7d178..8f19c38e6 100644 --- a/application/Termination/Termination.php +++ b/application/Termination/Termination.php @@ -3,6 +3,7 @@ class Termination extends mfBaseModel { protected $forcestr = ['phone','email','note']; + private $in_after_save = 0; private $building; private $status; private $lineworker; @@ -14,7 +15,16 @@ class Termination extends mfBaseModel { private $creator; private $editor; - + protected function afterSave() { + if($this->in_after_save) return true; + $this->in_after_save++; + + if($this->building_id) { + $this->getProperty("building")->updateUnitCount(); + } + + $this->in_after_save--; + } public function getAddress($singelLine = false) { if(!$this->id) { diff --git a/application/Termination/TerminationController.php b/application/Termination/TerminationController.php index 7b21cf476..c164d3f5d 100644 --- a/application/Termination/TerminationController.php +++ b/application/Termination/TerminationController.php @@ -69,10 +69,10 @@ class TerminationController extends mfBaseController { } // increment Building::units - if(is_numeric($building->units)) { + /*if(is_numeric($building->units)) { ++$building->units; $building->save(); - } + }*/ $this->layout()->setFlash("Anschluss gespeichert.", "success"); $this->redirect("Building", "Index", [], "building=".$term->building_id); @@ -132,10 +132,11 @@ class TerminationController extends mfBaseController { $term->delete(); - if($building->units) { + $building->updateUnitCount(); + /*if($building->units) { --$building->units; $building->save(); - } + }*/ $this->layout()->setFlash("Anschluss gelöscht", "success");