From bbb2bcd6159165703117eeece54ebefad7abf0c5 Mon Sep 17 00:00:00 2001 From: Frank Schubert Date: Thu, 1 Jun 2023 13:55:39 +0200 Subject: [PATCH 1/2] Voicenumbers can now exist without blocks --- Layout/default/Voicenumberblock/Index.php | 3 + .../Contractconfig/hooks/Voicenumberblock.php | 76 ++++++++++--------- application/Voicenumber/Voicenumber.php | 2 + .../Voicenumber/VoicenumberController.php | 23 ++---- 4 files changed, 55 insertions(+), 49 deletions(-) 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 @@
"> 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"; From a73cb4776d18e9d1cdc42869e34d0bbe1f43e70c Mon Sep 17 00:00:00 2001 From: Frank Schubert Date: Fri, 2 Jun 2023 14:44:53 +0200 Subject: [PATCH 2/2] Updated st. stefan preorder import script --- .../import-preorders-from-export-format.php | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/scripts/preorder/st-stefan-ob-stainz/import-preorders-from-export-format.php b/scripts/preorder/st-stefan-ob-stainz/import-preorders-from-export-format.php index c8d9da439..4b4c3a227 100755 --- a/scripts/preorder/st-stefan-ob-stainz/import-preorders-from-export-format.php +++ b/scripts/preorder/st-stefan-ob-stainz/import-preorders-from-export-format.php @@ -179,7 +179,7 @@ while($csv = fgetcsv($input, 0)) { if(!$adb->num_rows($res)) { if(preg_match('/^(schilcherland.+|Neuberg|Kastaniensiedlung|rosenhof|am kluggrund|Reicherfeldweg)$/i', $strasse_name)) continue; - //echo "Adresse '$strasse_name $hausnummer_name' nicht gefunden!\n"; + echo "=== Adresse '$strasse_name $hausnummer_name' nicht gefunden!\n"; continue; } @@ -189,7 +189,7 @@ while($csv = fgetcsv($input, 0)) { $hausnummer_id = $data->hausnummer_id; if(!$netzgebiet_id || !$hausnummer_id) { - echo "Netzgebiet oder Hausnummer leer\n"; + echo "=== Netzgebiet oder Hausnummer leer\n"; continue; } @@ -273,12 +273,12 @@ while($csv = fgetcsv($input, 0)) { if($connection_count == 1) { if($unit_count === 1) { - continue; + //continue; $unit = $wohneinheiten[0]; // check if wohneinheit in existing preorder if(PreorderModel::getFirst(["adb_wohneinheit_id" => $unit->id])) { - echo "1 Wohneinheit schon vergeben $strasse_name $hausnummer_name (unit id ".$unit->id."\n"; + echo "=== 1 Wohneinheit schon vergeben $strasse_name $hausnummer_name (unit id ".$unit->id."\n"; continue; } @@ -310,7 +310,7 @@ while($csv = fgetcsv($input, 0)) { foreach($wohneinheiten as $unit) { if(!$unit->tuer) continue; - if($unit->tuer > 1) { + if($unit->tuer > 0) { $unit_candidates[$unit->tuer] = $unit; if($tuer && $unit->tuer == $tuer) { $fixed_candidate = $unit; @@ -340,7 +340,7 @@ while($csv = fgetcsv($input, 0)) { } if(PreorderModel::getFirst(["adb_wohneinheit_id" => $unit->id])) { - //echo "2 Wohneinheit schon vergeben $strasse_name $hausnummer_name (unit id ".$unit->id."\n"; + echo "=== 2 Wohneinheit schon vergeben $strasse_name $hausnummer_name (unit id ".$unit->id.")\n"; continue; } @@ -371,7 +371,7 @@ while($csv = fgetcsv($input, 0)) { $mu['preorder'] = $preorder; $mu['unit_count'] = $unit_count; $missing_units[] = $mu;*/ - echo "$strasse_name $hausnummer_name: Nicht genug Wohneinheiten ".count($wohneinheiten)." - need ".$connection_count."\n"; + echo "=== $strasse_name $hausnummer_name: Nicht genug Wohneinheiten ".count($wohneinheiten)." - need ".$connection_count."\n"; continue; } //continue; @@ -393,8 +393,8 @@ while($csv = fgetcsv($input, 0)) { $md["door_count"] = count($available_units); $md["preorder"] = $preorder; $missing_doors[] = $md;*/ - /*echo "$strasse_name $hausnummer_name: Not enough units with tuer - units total: $unit_count; units with tuer: ".count($available_units)."; need: ".$connection_count."\n"; - foreach($available_units as $u) { + echo "=== $strasse_name $hausnummer_name: Not enough units with tuer - units total: $unit_count; units with tuer: ".count($available_units)."; need: ".$connection_count."\n"; + /*foreach($available_units as $u) { echo $u->oaid. " tuer ".$u->tuer."\n"; }*/ continue; @@ -411,7 +411,7 @@ while($csv = fgetcsv($input, 0)) { } if(count($topnumbers) < $connection_count) { - echo "$strasse_name $hausnummer_name: Nicht genug Topnummern für $connection_count Anschlüsse\n"; + echo "=== $strasse_name $hausnummer_name: Nicht genug Topnummern für $connection_count Anschlüsse\n"; continue; } } @@ -432,7 +432,7 @@ while($csv = fgetcsv($input, 0)) { } } if(!$unit) { - echo "$strasse_name $hausnummer_name: Unit mit Topnummer ".$topnumbers[$i]." nicht gefunden.\n"; + echo "=== $strasse_name $hausnummer_name: Unit mit Topnummer ".$topnumbers[$i]." nicht gefunden.\n"; continue; } //var_dump($unit); @@ -444,7 +444,7 @@ while($csv = fgetcsv($input, 0)) { if(PreorderModel::getFirst(["adb_wohneinheit_id" => $unit->id])) { - //echo "3 Wohneinheit schon vergeben $strasse_name $hausnummer_name (unit id ".$unit->id."\n"; + echo "=== 3 Wohneinheit schon vergeben $strasse_name $hausnummer_name (unit id ".$unit->id."\n"; continue; } @@ -464,7 +464,7 @@ while($csv = fgetcsv($input, 0)) { continue; } - echo "Not processed: $strasse_name $hausnummer_name -> need $connection_count but have $unit_count units \n"; + echo "=== Not processed: $strasse_name $hausnummer_name -> need $connection_count but have $unit_count units \n";