linkFrom = []; $this->linkTo = []; $this->upgradeFrom = []; $this->upgradeTo = []; $this->downgradeFrom = []; $this->downgradeTo = []; $this->productchangeFrom = []; $this->productchangeTo = []; $this->relocationFrom = []; $this->relocationTo = []; // Links targeting this contract (to) foreach(ContractLinkModel::search(['origin_contract_id' => $this->id]) as $link) { switch($link->type) { case "link": $this->linkTo[] = $link; break; case "upgrade": $this->upgradeTo[] = $link; break; case "downgrade": $this->downgradeTo[] = $link; break; case "productchange": $this->productchangeTo[] = $link; break; case "relocation": $this->relocationTo[] = $link; break; default: $this->log->warn("ContractLink with invalid type: ".$link->id." ".$link->type); break; } } foreach(ContractLinkModel::search(['contract_id' => $this->id]) as $link) { switch($link->type) { case "link": $this->linkFrom[] = $link; break; case "upgrade": $this->upgradeFrom[] = $link; break; case "downgrade": $this->downgradeFrom[] = $link; break; case "productchange": $this->productchangeFrom[] = $link; break; case "relocation": $this->relocationFrom[] = $link; break; default: $this->log->warn("ContractLink with invalid type: ".$link->id." ".$link->type); break; } } } public function isCancelled() { if(!$this->id) { return false; } if(!$this->cancel_date) { return false; } $now = date('U'); if($this->cancel_date <= $now) { return true; } return false; } public function generateMatchcode() { $owner_address = $this->getProperty("owner")->street.", ".$this->getProperty("owner")->zip." ".$this->getProperty("owner")->city; if($this->termination_id) { $termination = new Termination($this->termination_id); $termination_address = $termination->building->street.", ".$termination->building->zip." ".$termination->building->city; return $termination_address; } if(stripos($this->getProperty("product")->name, "dsl") != false) { return $owner_address; } return false; } public function getProperty($name) { if($this->$name == null) { if($name == "billingaddress" && $this->billingaddress_id) { $this->billingaddress = mfValuecache::singleton()->get("mfObjectmodel-Address-".$this->billingaddress_id); if($this->billingaddress === null) { $this->billingaddress = new Address($this->billingaddress_id); if($this->billingaddress->id) { mfValuecache::singleton()->set("mfObjectmodel-Address-".$this->billingaddress_id, $this->billingaddress); } } return $this->billingaddress; } if($name == "owner" && $this->owner_id) { $this->owner = mfValuecache::singleton()->get("mfObjectmodel-Address-".$this->owner_id); if($this->owner === null) { $this->owner = new Address($this->owner_id); if($this->owner->id) { mfValuecache::singleton()->set("mfObjectmodel-Address-".$this->owner_id, $this->owner); } } return $this->owner; } if($name == "product") { $this->product = mfValuecache::singleton()->get("mfObjectmodel-Product-".$this->product_id); if($this->product === null) { $this->product = new Product($this->product_id); if($this->product->id) { mfValuecache::singleton()->set("mfObjectmodel-Product-".$this->product_id, $this->product); } } return $this->product; } if($name == "orderproduct") { $this->orderproduct = mfValuecache::singleton()->get("mfObjectmodel-OrderProduct-".$this->orderproduct_id); if($this->orderproduct === null) { $this->orderproduct = new OrderProduct($this->orderproduct_id); if($this->orderproduct->id) { mfValuecache::singleton()->set("mfObjectmodel-OrderProduct-".$this->orderproduct_id, $this->orderproduct); } } return $this->orderproduct; } if(!$this->id) { return null; } /*if($name == "contractConfigGroups") { $product = $this->getProperty("product"); $this->contractConfigGroups = ContractconfigGroupModel::search(['producttech_id' => $product->producttech_id]); return $this->contractConfigGroups; }*/ if($name == "configgroups") { $product = $this->getProperty("product"); $this->configgroups = []; foreach(ContractconfiggroupProductgroupModel::search(['productgroup_id' => $product->productgroup_id]) as $ccpg) { $ccpg->contractconfiggroup->setContractId($this->id); $this->configgroups[] = $ccpg->contractconfiggroup; } return $this->configgroups; } if($name == "configvalues") { foreach($this->getProperty("configgroups") as $group) { foreach($group->items as $item) { $this->configvalues[$item->name] = $item; } } return $this->configvalues; } /*if($name == "contractConfigItems") { $product = $this->getProperty("product"); $this->contractConfigItems = []; foreach(ProducttechAttributeModel::search(['producttech_id' => $product->producttech_id, "forcontract" => 1]) as $item) { $item->setContractId($this->id); $this->contractConfigItems [] = $item; } return $this->contractConfigItems; }*/ if($name == "journals") { $this->journals = array_reverse(ContractjournalModel::search(["contract_id" => $this->id])); return $this->journals; } if($name == "links") { $this->links = ContractLinkModel::includesContractId($this->id, ["type" => $link]); //var_dump($this->links);exit; return $this->links; } if(in_array($name, ['linkFrom','linkTo','upgradeFrom','upgradeTo','downgradeFrom','downgradeTo','productchangeFrom','productchangeTo','relocationFrom','relocationTo'])) { if($this->$name === null) { $this->getLinks(); } return $this->$name; } if($name == "finisher") { $this->finisher = mfValuecache::singleton()->get("Worker-id-".$this->finish_date_by); if($this->finisher === null) { $this->finisher = new User($this->finish_date_by); if($this->finisher->id) { mfValuecache::singleton()->set("Worker-id-".$this->finish_date_by, $this->finisher); } } return $this->finisher; } if($name == "canceler") { $this->canceler = mfValuecache::singleton()->get("Worker-id-".$this->cancel_date_by); if($this->canceler === null) { $this->canceler = new User($this->cancel_date_by); if($this->canceler->id) { mfValuecache::singleton()->set("Worker-id-".$this->cancel_date_by, $this->canceler); } } return $this->canceler; } if($name == "creator") { $this->creator = mfValuecache::singleton()->get("Worker-id-".$this->create_by); if($this->creator === null) { $this->creator = new User($this->create_by); if($this->creator->id) { mfValuecache::singleton()->set("Worker-id-".$this->create_by, $this->creator); } } return $this->creator; } if($name == "editor") { $this->editor = mfValuecache::singleton()->get("Worker-id-".$this->edit_by); if($this->editor === null) { $this->editor = new User($this->edit_by); if($this->editor->id) { mfValuecache::singleton()->set("Worker-id-".$this->edit_by, $this->editor); } } return $this->editor; } $classname = ucfirst($name); $idfield = $name."_id"; $this->$name = mfValuecache::singleton()->get("mfObjectmodel-$name-".$this->$idfield); if(!$this->$name) { $this->$name = new $classname($this->$idfield); } if($this->$name->id) { mfValuecache::singleton()->set("mfObjectmodel-$name-".$this->$name->id, $this->$name); return $this->$name; } else { return null; } } return $this->$name; } /* * When object is cloned, new object will call this funtion to let us clean up the new Contract. * Throws Exception if cloning fails. */ public function __clone() { $me = new User; $me->loadMe(); $old_id = $this->id; $this->id = null; // cleanup Contract daten $this->orderproduct_id = null; $this->order_date = null; $this->finish_date = null; $this->finish_date_by = null; $this->cancel_date = null; $this->cancel_date_by = null; $this->create_by = $me->id; $this->edit_by = $me->id; $this->create = null; $this->edit = null; $this->saved = 0; $this->mode = "new"; $this->_old_data = new StdClass(); //$this->save(); if($old_id == $this->id) { $this->log->error("save() of cloned Contract $old_id failed!"); throw new Exception("Saving clone failed."); } $this->log->debug("Cloned Contract $old_id"); } }