128 lines
3.9 KiB
PHP
128 lines
3.9 KiB
PHP
<?php
|
|
|
|
class Voicenumber extends mfBaseModel {
|
|
private $block;
|
|
private $orderproduct;
|
|
private $contract;
|
|
|
|
public function loadFromBlock(Voicenumberblock $block) {
|
|
$this->voicenumberblock_id = $block->id;
|
|
//$this->countrycode = $block->countrycode;
|
|
//$this->areacode = $block->areacode;
|
|
//$this->number_prepend_zero = $block->number_prepend_zero;
|
|
return true;
|
|
}
|
|
|
|
public function beforeSave() {
|
|
if($this->ported_from && $this->port_in_date) {
|
|
$this->ported_in = 1;
|
|
} else {
|
|
$this->ported_in = 0;
|
|
}
|
|
|
|
if($this->ported_to && $this->port_out_date) {
|
|
$this->ported_out = 1;
|
|
} else {
|
|
$this->ported_out = 0;
|
|
}
|
|
//var_dump($this);exit;
|
|
if(is_array($this->_old_data) && count($this->_old_data)) {
|
|
if($this->active == 1 && !$this->_old_data->active) {
|
|
$this->activated_date = date("U");
|
|
}
|
|
}
|
|
}
|
|
|
|
public function afterSave() {
|
|
// if contract_id is given, add number to contract
|
|
if($this->contract_id) {
|
|
if(is_array($this->contract->configvalues) && array_key_exists("voicenumberblock_voicenumber", $this->contract->configvalues)) {
|
|
$cc_item = $this->contract->configvalues["voicenumberblock_voicenumber"];
|
|
} else {
|
|
$cc_item = ContractconfigItemModel::getFirst(["name" => "voicenumberblock_voicenumber"]);
|
|
$cc_item->setContractId($this->contract_id);
|
|
}
|
|
|
|
$contract_numbers = [];
|
|
|
|
$numbers_json = $cc_item->value->json;
|
|
if($numbers_json) {
|
|
$contract_numbers = json_decode($numbers_json);
|
|
}
|
|
|
|
//var_dump($contract_numbers);
|
|
if(!in_array($this->number, $contract_numbers)) {
|
|
$contract_numbers[] = $this->number;
|
|
$cc_item->value->set($contract_numbers);
|
|
$cc_item->value->save();
|
|
}
|
|
|
|
// if contract_id was changed, remove number from old contract
|
|
if($this->_old_data->contract_id > 0 && $this->_old_data->contract_id != $this->contract_id) {
|
|
$old_contract = new Contract($this->_old_data->contract_id);
|
|
$cc_item = $old_contract->configvalues["voicenumberblock_voicenumber"];
|
|
$numbers_json = $cc_item->value->json;
|
|
if($numbers_json) {
|
|
$contract_numbers = json_decode($numbers_json);
|
|
$new_numbers = [];
|
|
foreach($contract_numbers as $cnum) {
|
|
if($this->number != $cnum) {
|
|
$new_numbers[] = $cnum;
|
|
}
|
|
}
|
|
$cc_item->value->set($new_numbers);
|
|
$cc_item->value->save();
|
|
}
|
|
}
|
|
|
|
} elseif($this->_old_data->contract_id > 0) {
|
|
// removed contract_id, so remove number from old contract
|
|
$old_contract = new Contract($this->_old_data->contract_id);
|
|
$cc_item = $old_contract->configvalues["voicenumberblock_voicenumber"];
|
|
$numbers_json = $cc_item->value->json;
|
|
if($numbers_json) {
|
|
$contract_numbers = json_decode($numbers_json);
|
|
$new_numbers = [];
|
|
foreach($contract_numbers as $cnum) {
|
|
if($this->number != $cnum) {
|
|
$new_numbers[] = $cnum;
|
|
}
|
|
}
|
|
$cc_item->value->set($new_numbers);
|
|
$cc_item->value->save();
|
|
}
|
|
}
|
|
}
|
|
|
|
public function getProperty($name) {
|
|
if($this->$name == null) {
|
|
|
|
if($name == "block") {
|
|
$this->block = new Voicenumberblock($this->voicenumberblock_id);
|
|
return $this->block;
|
|
}
|
|
|
|
if($name == "orderproduct") {
|
|
$this->orderproduct = new Orderproduct($this->orderproduct_id);
|
|
return $this->orderproduct;
|
|
}
|
|
|
|
if($name == "contract") {
|
|
$this->contract = new Contract($this->contract_id);
|
|
return $this->contract;
|
|
}
|
|
|
|
$classname = ucfirst($name);
|
|
$idfield = $name."_id";
|
|
$this->$name = new $classname($this->$idfield);
|
|
|
|
if($this->$name->id) {
|
|
return $this->$name;
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
return $this->$name;
|
|
}
|
|
} |