124 lines
3.7 KiB
PHP
124 lines
3.7 KiB
PHP
<?php
|
|
|
|
class Contractconfig_Hook_Voicenumberblock extends Contractconfig_Hook {
|
|
protected $required_product_attributes = ["needs_number"];
|
|
private $voip_routing;
|
|
|
|
|
|
/*
|
|
* Checks to determine if class needs to work on contract.
|
|
*/
|
|
public function isResponsible() {
|
|
|
|
/*
|
|
* Test for standard checks
|
|
* (Only Producttech attributes for now)
|
|
*/
|
|
if(!parent::isResponsible()) {
|
|
return false;
|
|
}
|
|
|
|
// do additional checks
|
|
//$contract = $this->contract;
|
|
return true;
|
|
}
|
|
|
|
public function init() {
|
|
// get voip routing for number
|
|
if(is_array($this->contract->configvalues)) {
|
|
// look in contract config
|
|
if(array_key_exists("voip_routing",$this->contract->configvalues) && $this->contract->configvalues['voip_routing']->value->string) {
|
|
$this->voip_routing = $this->contract->configvalues['voip_routing']->value->string;
|
|
} else {
|
|
// else take first value (default)
|
|
$typedata = $this->voip_routing = $this->contract->configvalues['voip_routing']->getTypedataArray();
|
|
$this->voip_routing = $typedata[0];
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public function beforeSave() {
|
|
|
|
}
|
|
|
|
public function afterSave() {
|
|
// check if number was saved
|
|
if(!array_key_exists("voicenumber", $this->configitems)) {
|
|
echo "configitem voicenumber does not exists\n";
|
|
return true;
|
|
}
|
|
echo "configitem voicenumber exists\n";
|
|
$item = $this->configitems['voicenumber'];
|
|
$number = $item->value->string;
|
|
if(!$number) {
|
|
echo "Keine nummer gespeichert\n";
|
|
return true;
|
|
}
|
|
echo "Nummer: $number\n";
|
|
|
|
// check if Voicenumber exists
|
|
$voicenumberblock = Voicenumberblock::findBlock($number);
|
|
if(!$voicenumberblock) {
|
|
$this->errors[] = "Ungültige Rufnummer: Kein aktiver Rufnummernblock gefunden";
|
|
echo "Voicenumberblock für $number nicht gefunden\n";
|
|
}
|
|
|
|
if(!$voicenumberblock->isNumberInBlock($number)) {
|
|
$this->errors[] = "Ungültige Rufnummer: Bitte Rufnummernlänge kontrollieren! Block erlaubt ".$voicenumberblock->first ." bis ".$voicenumberblock->last;
|
|
echo "Voicenumber $number not in Block ".$voicenumberblock->prefix."\n";
|
|
return false;
|
|
}
|
|
|
|
$voicenumber = VoicenumberModel::getFirst(['number' => $number]);
|
|
if($voicenumber) {
|
|
// check if number belongs to another contract
|
|
if($voicenumber->contract_id) {
|
|
if($voicenumber->contract_id == $this->contract->id) {
|
|
// belongs to our contract already => no changes needed
|
|
return true;
|
|
}
|
|
$this->errors[] = "Ungültige Rufnummer: Rufnummer gehört zu bestehendem contract ".$voicenumber->contract_id;
|
|
return false;
|
|
}
|
|
// check if number is locked
|
|
if($voicenumber->disabled) {
|
|
$this->errors[] = "Ungültige Rufnummer: Rufnummer ist gesperrt ".$voicenumber->contract_id;
|
|
return false;
|
|
}
|
|
// check if number was ported out
|
|
if($voicenumber->ported_out) {
|
|
$this->errors[] = "Ungültige Rufnummer: Rufnummer wurde rausportiert ".$voicenumber->contract_id;
|
|
return false;
|
|
}
|
|
} else {
|
|
echo "creating voicenumber $number in block ".$voicenumberblock->prefix."\n";
|
|
$voicenumber = VoicenumberModel::create([
|
|
'voicenumberblock_id' => $voicenumberblock->id,
|
|
"contract_id" => $this->contract->id,
|
|
'active' => 1,
|
|
'activated_date' => date('U'),
|
|
'routing' => $this->voip_routing,
|
|
'number' => $number,
|
|
'disabled' => 0
|
|
]);
|
|
if(!$voicenumber->save()) {
|
|
echo "Error saving new number\n";
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
public function beforeDelete() {
|
|
|
|
}
|
|
|
|
public function afterDelete() {
|
|
|
|
}
|
|
} |