diff --git a/Layout/default/Voicenumberblock/Index.php b/Layout/default/Voicenumberblock/Index.php index 950a1439b..76bd47b96 100644 --- a/Layout/default/Voicenumberblock/Index.php +++ b/Layout/default/Voicenumberblock/Index.php @@ -84,6 +84,7 @@

Rufnummernblöcke

+ ["voicenumberblock_id" => "null"]])?>"> Zu Rufnummern ohne Block
"> Neuen Rufnummernblock anlegen @@ -144,9 +145,11 @@ if($('#block-detail-' + id).is(":hidden")) { $('#block-' + id).removeClass("table-info"); $('#block-' + id).removeClass("text-info"); + window.location.hash = ""; } else { $('#block-' + id).addClass("text-info"); $('#block-' + id).addClass("table-info"); + window.location.hash = "#block=" + id; } } diff --git a/application/Contractconfig/hooks/Voicenumberblock.php b/application/Contractconfig/hooks/Voicenumberblock.php index ee55f2c0f..c7ae23974 100644 --- a/application/Contractconfig/hooks/Voicenumberblock.php +++ b/application/Contractconfig/hooks/Voicenumberblock.php @@ -68,9 +68,12 @@ class Contractconfig_Hook_Voicenumberblock extends Contractconfig_Hook { foreach($this->create_numbers as $voicenumberblock_id => $numbers) { foreach($numbers as $number){ $voicenumber = VoicenumberModel::getFirst(['number' => $number]); - + if(!$voicenumber) { - $this->log->debug("creating voicenumber $number in block ".$voicenumberblock->prefix); + if($voicenumberblock_id == "none") { + $voicenumberblock_id = null; + } + $this->log->debug("creating voicenumber $number in block $voicenumberblock_id"); $voicenumber = VoicenumberModel::create([ 'voicenumberblock_id' => $voicenumberblock_id, "contract_id" => $this->contract->id, @@ -124,42 +127,47 @@ class Contractconfig_Hook_Voicenumberblock extends Contractconfig_Hook { // check if Voicenumber exists $voicenumberblock = Voicenumberblock::findBlock($number); - if(!$voicenumberblock) { - $this->errors["voicenumberblock_voicenumber"][] = "Ungültige Rufnummer $number: Kein aktiver Rufnummernblock gefunden"; - continue; - } + if(!$voicenumberblock) { // XXX: Create without block! + //$this->errors["voicenumberblock_voicenumber"][] = "Ungültige Rufnummer $number: Kein aktiver Rufnummernblock gefunden"; + //continue; + if(!array_key_exists("none", $this->create_numbers)) { + $this->create_numbers["none"] = []; + } + $this->create_numbers["none"][] = $number; + + } else { + if(!$voicenumberblock->isNumberInBlock($number)) { + $this->errors["voicenumberblock_voicenumber"][] = "Ungültige Rufnummer $number: Bitte Rufnummernlänge kontrollieren! Block erlaubt ".$voicenumberblock->first ." bis ".$voicenumberblock->last; + continue; + } - if(!$voicenumberblock->isNumberInBlock($number)) { - $this->errors["voicenumberblock_voicenumber"][] = "Ungültige Rufnummer $number: Bitte Rufnummernlänge kontrollieren! Block erlaubt ".$voicenumberblock->first ." bis ".$voicenumberblock->last; - continue; - } - - $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 + $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 + continue; + } + $this->errors["voicenumberblock_voicenumber"][] = "Ungültige Rufnummer $number: Rufnummer gehört zu bestehendem contract ".$voicenumber->contract_id; continue; } - $this->errors["voicenumberblock_voicenumber"][] = "Ungültige Rufnummer $number: Rufnummer gehört zu bestehendem contract ".$voicenumber->contract_id; - continue; + // check if number is locked + if($voicenumber->disabled) { + $this->errors["voicenumberblock_voicenumber"][] = "Ungültige Rufnummer $number: Rufnummer ist gesperrt ".$voicenumber->contract_id; + continue; + } + // check if number was ported out + if($voicenumber->ported_out) { + $this->errors["voicenumberblock_voicenumber"][] = "Ungültige Rufnummer $number: Rufnummer wurde rausportiert ".$voicenumber->contract_id; + continue; + } + } else { + if(!array_key_exists($voicenumberblock->id, $this->create_numbers)) { + $this->create_numbers[$voicenumberblock->id] = []; + } + $this->create_numbers[$voicenumberblock->id][] = $number; } - // check if number is locked - if($voicenumber->disabled) { - $this->errors["voicenumberblock_voicenumber"][] = "Ungültige Rufnummer $number: Rufnummer ist gesperrt ".$voicenumber->contract_id; - continue; - } - // check if number was ported out - if($voicenumber->ported_out) { - $this->errors["voicenumberblock_voicenumber"][] = "Ungültige Rufnummer $number: Rufnummer wurde rausportiert ".$voicenumber->contract_id; - continue; - } - } else { - if(!array_key_exists($voicenumberblock->id, $this->create_numbers)) { - $this->create_numbers[$voicenumberblock->id] = []; - } - $this->create_numbers[$voicenumberblock->id][] = $number; } } diff --git a/application/Voicenumber/Voicenumber.php b/application/Voicenumber/Voicenumber.php index 97ee64dab..d5370b09e 100644 --- a/application/Voicenumber/Voicenumber.php +++ b/application/Voicenumber/Voicenumber.php @@ -34,6 +34,8 @@ class Voicenumber extends mfBaseModel { } public function afterSave() { + // XXX Move to some ContractConfig add number function + // 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)) { diff --git a/application/Voicenumber/VoicenumberController.php b/application/Voicenumber/VoicenumberController.php index 29c4e2ba7..1e192288c 100644 --- a/application/Voicenumber/VoicenumberController.php +++ b/application/Voicenumber/VoicenumberController.php @@ -58,34 +58,27 @@ class VoicenumberController extends mfBaseController { $r = $this->request; //var_dump($r);exit; $block_id = $r->block_id; - if(!is_numeric($block_id) || !$block_id) { - $this->layout()->setFlash("Rufnummer nicht gefunden1", "error"); + + $num = (string)$r->number; + if(!strlen($num)) { + $this->layout()->setFlash("Rufnummer nicht gefunden", "error"); $this->redirect("Voicenumberblock"); } $block = new Voicenumberblock($block_id); - if(!$block->id) { - $this->layout()->setFlash("Rufnummer nicht gefunden2", "error"); - $this->redirect("Voicenumberblock"); - } - $num = (string)$r->number; - if(!strlen($num)) { - $this->layout()->setFlash("Rufnummer nicht gefunden3", "error"); - $this->redirect("Voicenumberblock", "Index", null, ["block" => $block->id]); - } - - if(!$block->isNumberInBlock($num)) { + if($block->id && !$block->isNumberInBlock($num)) { $this->layout()->setFlash("Rufnummer nicht gefunden4", "error"); $this->redirect("Voicenumberblock", "Index", null, ["block" => $block->id]); } - $number = VoicenumberModel::getFirst(["block_id" => $block_id, "number" => (string)$num]); + $number = VoicenumberModel::getFirst(["number" => (string)$num]); $mode = "edit"; if(!$number) { $number = new Voicenumber(); - $number->loadFromBlock($block); + + if($block->id) $number->voicenumberblock_id = $block->id; $number->number = $num; $number->create_by = $this->me->id; $mode = "add";