diff --git a/application/AddressDB/AddressDB.php b/application/AddressDB/AddressDB.php index 36348001a..d0645743a 100644 --- a/application/AddressDB/AddressDB.php +++ b/application/AddressDB/AddressDB.php @@ -149,7 +149,11 @@ class AddressDB { $log = mfLoghandler::singleton(); $log->debug(__METHOD__.": =============================== in handleRimoStatusUpdate"); - $wohneinheit = new ADBWohneinheit($wohneinheit_id); + $wohneinheit = mfValuecache::singleton()->get("mfObjectmodel-adb_wohneinheit-$wohneinheit_id"); + if(!$wohneinheit) { + $wohneinheit = new ADBWohneinheit($wohneinheit_id); + if($wohneinheit->id) mfValuecache::singleton()->set("mfObjectmodel-adb_wohneinheit-$wohneinheit_id", $wohneinheit); + } if(!$wohneinheit->id) { //echo "no wohneinheit\n"; return false; diff --git a/application/AddressDB/AddressDBController.php b/application/AddressDB/AddressDBController.php index c491cf599..f8e5d4dc4 100644 --- a/application/AddressDB/AddressDBController.php +++ b/application/AddressDB/AddressDBController.php @@ -999,6 +999,9 @@ class AddressDBController extends mfBaseController { case 'findBuildings': $return = $this->findBuildingsApi(); break; + case 'countWithFilter': + $return = $this->countWithFilter(); + break; case 'getUnit': $return = $this->getUnitApi(); break; @@ -1020,6 +1023,14 @@ class AddressDBController extends mfBaseController { $this->returnJson($data); } + + private function countWithFilter() { + $filter = $this->getPreparedFilter($this->request->filter); + $filter["netzgebiet_id"] = true; + + return ["count" => ADBHausnummerModel::count($filter)]; + } + private function updateAddressStatusApi() { $address_id = $this->request->id; diff --git a/application/Preorder/Preorder.php b/application/Preorder/Preorder.php index a351598bc..b52634dfa 100644 --- a/application/Preorder/Preorder.php +++ b/application/Preorder/Preorder.php @@ -41,6 +41,11 @@ class Preorder extends mfBaseModel { if($this->uid === "string") { $this->uid = ""; } + + if($this->id) { + //echo "[{$this->_ruid}] preorder::afterload: adding to cache\n"; + mfValuecache::singleton()->set("mfObjectmodel-preorder-" . $this->id, $this); + } } public function beforeSave($_params = []) { @@ -57,6 +62,7 @@ class Preorder extends mfBaseModel { $this->building = null; $this->adb_hausnummer = null; $this->adb_wohneinheit = null; + $this->attribute = null; $this->services = null; $this->ordered_services = null; $this->creator = null; @@ -475,7 +481,11 @@ class Preorder extends mfBaseModel { return true; } - $hausnummer = new ADBHausnummer($this->adb_hausnummer_id); + $hausnummer = mfValuecache::singleton()->get("mfObjectmodel-adb_hausnummer-" . $this->adb_hausnummer_id); + if(!$hausnummer) { + $hausnummer = new ADBHausnummer($this->adb_hausnummer_id); + if($hausnummer->id) mfValuecache::singleton()->set("mfObjectmodel-adb_hausnummer-".$this->adb_hausnummer_id, $hausnummer); + } if(!$hausnummer->id) { $this->log->warning("[".$this->_ruid."] ".__METHOD__ . ": hausnummer " . $this->adb_hausnummer_id . " not found!"); return true; @@ -519,7 +529,11 @@ class Preorder extends mfBaseModel { return true; } - $wohneinheit = new ADBWohneinheit($this->adb_wohneinheit_id); + $wohneinheit = mfValuecache::singleton()->get("mfObjectmodel-adb_wohneinheit-" . $this->adb_wohneinheit_id); + if(!$wohneinheit) { + $wohneinheit = new ADBwohneinheit($this->adb_wohneinheit_id); + if($wohneinheit->id) mfValuecache::singleton()->set("mfObjectmodel-adb_wohneinheit-".$this->adb_wohneinheit_id, $wohneinheit); + } if(!$wohneinheit->id) return true; $this->log->debug("[".$this->_ruid."] ".__METHOD__ . ": new wohneinheit status code " . $new_wohneinheit_status->code); @@ -536,6 +550,24 @@ class Preorder extends mfBaseModel { if(is_array($flags) && count($flags)) { foreach($flags as $flag) { if(strlen($flag->value->value) && array_key_exists($flag->code, TT_PREORDER_STATUS_FLAG_MATRIX)) { + + if($flag->code == "145") { + //echo "flag 145\n"; + $attribs = $this->getProperty("attribute"); + if(!is_array($attribs)) { + $attribs = []; + } + + if(!array_key_exists("inhouse_cabling_supplied", $attribs) || $attribs["inhouse_cabling_supplied"] != $flag->value->value) { + $attribs["inhouse_cabling_supplied"] = (int)$flag->value->value; + //echo "[{$this->_ruid}] preorder::aftersave: updating attrib to ".(int)$flag->value->value."\n"; + $this->attributes = json_encode($attribs); + $this->save(["no_aftersave" => true]); + //print_r($this->attributes);echo "\n"; + } + } + + $flag_matrix_item = TT_PREORDER_STATUS_FLAG_MATRIX[$flag->code]; if(!$flag_matrix_item["flag"]) continue; @@ -1051,7 +1083,7 @@ class Preorder extends mfBaseModel { public function setStatusFlag($code, $value = 1) { if(!$code) return false; - $sflag = PreorderstatusflagModel::getFirst(["code" => $code]); + $sflag = PreorderStatusflagModel::getFirst(["code" => $code]); if(!$sflag) return false; $sflag->preorder_id = $this->id; @@ -1503,12 +1535,28 @@ class Preorder extends mfBaseModel { } if($name == "adb_hausnummer") { - $this->adb_hausnummer = new ADBHausnummer($this->adb_hausnummer_id); + $hausnummer = mfValuecache::singleton()->get("mfObjectmodel-adb_hausnummer-" . $this->adb_hausnummer_id); + if(!$hausnummer) { + $hausnummer = new ADBHausnummer($this->adb_hausnummer_id); + } + if($hausnummer && $hausnummer->id) { + mfValuecache::singleton()->set("mfObjectmodel-adb_hausnummer-" . $this->adb_hausnummer_id, $hausnummer); + $this->adb_hausnummer = $hausnummer; + } + return $this->adb_hausnummer; } if($name == "adb_wohneinheit") { - $this->adb_wohneinheit = new ADBWohneinheit($this->adb_wohneinheit_id); + $wohneinheit = mfValuecache::singleton()->get("mfObjectmodel-adb_wohneinheit-" . $this->adb_wohneinheit_id); + if(!$wohneinheit) { + $wohneinheit = new ADBWohneinheit($this->adb_wohneinheit_id); + } + if($wohneinheit && $wohneinheit->id) { + mfValuecache::singleton()->set("mfObjectmodel-adb_wohneinheit-" . $this->adb_wohneinheit_id, $wohneinheit); + $this->adb_wohneinheit = $wohneinheit; + } + return $this->adb_wohneinheit; } diff --git a/application/Preorder/PreorderModel.php b/application/Preorder/PreorderModel.php index 32321710e..3fd20ee5f 100644 --- a/application/Preorder/PreorderModel.php +++ b/application/Preorder/PreorderModel.php @@ -267,6 +267,13 @@ class PreorderModel if ($db->num_rows($res)) { $data = $db->fetch_object($res); + + // search in cache + $item = mfValuecache::singleton()->get("mfObjectmodel-preorder-".$data->id); + if($item) { + return $item; + } + // if not in cache, load regularly $item = new Preorder($data); if ($item->id) { return $item; @@ -559,7 +566,12 @@ class PreorderModel if ($returnArray) { $items[] = $data; } else { - $items[] = new Preorder($data); + $item = mfValuecache::singleton()->get("mfObjectmodel-preorder-".$data->id); + if($item) { + $items[] = $item; + } else { + $items[] = new Preorder($data); + } } } } diff --git a/application/PreorderStatusflagValue/PreorderStatusflagValue.php b/application/PreorderStatusflagValue/PreorderStatusflagValue.php index f4c77e1c1..f41db1b8d 100644 --- a/application/PreorderStatusflagValue/PreorderStatusflagValue.php +++ b/application/PreorderStatusflagValue/PreorderStatusflagValue.php @@ -4,6 +4,7 @@ class PreorderStatusflagValue extends mfBaseModel { private $preorder; protected function afterSave() { + //echo __METHOD__."\n"; if(!property_exists($this->_old_data, "value") || $this->_old_data->value != $this->data->value) { $history = PreorderHistoryModel::create([ "preorder_id" => $this->data->preorder_id, @@ -15,7 +16,10 @@ class PreorderStatusflagValue extends mfBaseModel { $history->save(); } - $this->getProperty("preorder")->afterSave(); + + $preorder = $this->getProperty("preorder"); + //echo "[{$preorder->_ruid}] flagvalue aftersave: loaded preorder\n"; + $preorder->afterSave(); } public function getProperty($name) { @@ -23,6 +27,7 @@ class PreorderStatusflagValue extends mfBaseModel { $classname = ucfirst($name); $idfield = $name."_id"; + //var_dump(mfValuecache::singleton()->cache["mfObjectmodel-$name-".$this->$idfield]);exit; $this->$name = mfValuecache::singleton()->get("mfObjectmodel-$name-".$this->$idfield); if(!$this->$name) { $this->$name = new $classname($this->$idfield);