Merge branch 'fronkdev' of code.fronk.at:fronk/thetool into fronkdev

This commit is contained in:
Frank Schubert
2024-01-29 11:42:24 +01:00
7 changed files with 135 additions and 37 deletions

View File

@@ -321,11 +321,9 @@ class Preorder extends mfBaseModel {
if($this->adb_wohneinheit_id) {
$unit = new ADBWohneinheit($this->adb_wohneinheit_id);
if($unit && $unit->oaid && $this->oaid != $unit->oaid) {
$campaign = new Preordercampaign($this->preordercampaign_id);
$unit_oaid = OpenAccessIdModel::getFirst(["oaid" => $unit->oaid]);
if($unit_oaid->origin == $campaign->oaid_origin) {
if($unit_oaid && $unit_oaid->origin == $campaign->oaid_origin) {
return $unit->oaid;
}
}

View File

@@ -438,8 +438,8 @@ class PreorderController extends mfBaseController {
$data['company'] = (trim($r->company)) ? trim($r->company) : null;
$data['uid'] = (trim($r->uid)) ? trim($r->uid) : null;
$data['firstname'] = (trim($r->firstname)) ? trim($r->firstname) : null;
$data['lastname'] = (trim($r->lastname)) ? trim($r->lastname) : null;
$data['firstname'] = trim($r->firstname);
$data['lastname'] = trim($r->lastname);
$data['street'] = (trim($r->street)) ? trim($r->street) : null;
$data['housenumber'] = (trim($r->housenumber)) ? trim($r->housenumber) : null;
$data['block'] = (trim($r->block)) ? trim($r->block) : null;

View File

@@ -0,0 +1,52 @@
<?php
namespace ADBRimoImport\ADBAddressHelper\Network;
/*
* Netzgebiet
* Premstätten Süd
*/
class Network_61105 {
public function checkAddress($data) {
/*
* array keys are a reference their original variables and must be manipulated directly
*
*/
// dererence input array keys into copies
foreach(["strasse_name", "hausnummer_name", "addresszusatz", "gem_kz", "gem_name", "ort_name", "plz_name"] as $var) {
$$var = $data[$var];
}
//if($strasse_name == "Bierbaumerstrasse") $strasse_name = "Bierbaumer Strasse";
//if($ort_name == "Oberpremstaetten") $ort_name = "Oberpremstätten";
if($gem_name == "Leoben") $gem_name = "Kalwang";
if($ort_name == "Leoben") $ort_name = "Kalwang";
//if($strasse_hausnummer == "Brudergarten") continue;
if($strasse_name == "Brudergarten Kohlbacher") $strasse_name = "Brudergarten";
if($strasse_name == "Brudergarten" && !$hausnummer_name) return false;
/*if(strpos($strasse_hausnummer, '"') !== false) {
$m = [];
if(preg_match('/^"Sonnenweg (\d+)(?:\s+([^"]+))?/', $strasse_hausnummer, $m)) {
$strasse_name = "Sonnenweg";
$hausnummer_name = $m[1];
if(array_key_exists(2, $m)) {
$addresszusatz = $m[2];
}
echo "$strasse_name $hausnummer_name $addresszusatz\n";
}
}*/
// put new values back into original pointer
foreach(["strasse_name", "hausnummer_name", "addresszusatz", "gem_kz", "gem_name", "ort_name", "plz_name"] as $var) {
$data[$var] = $$var;
}
return true;
}
}

View File

@@ -69,10 +69,10 @@ class AddressHelper {
return [$strasse_name, $hausnummer_name, $addresszusatz];
}
public function findAddressFromRimoBuilding($building) {
public function findUpdateAddressFromRimoBuilding($building) {
$hausnummer = false;
echo "===================================\n";
//echo "===================================\n";
$rimo_id = trim($building->id);
@@ -104,11 +104,10 @@ class AddressHelper {
return false;
}
$addr_dbg_str = "strasse: $strasse_name | hausnummer: $hausnummer_name | zusatz: $addresszusatz | gemkz: $gem_kz | gem_name: $gem_name | ort_name: $ort_name | plz_name: $plz_name";
echo "$addr_dbg_str\n";
$addr_dbg_str = "strasse: $strasse_name | hausnummer: $hausnummer_name | zusatz: $addresszusatz | gemkz: $gem_kz | gem_name: $gem_name | ort_name: $ort_name | plz_name: $plz_name | $rimo_id";
// pass variables by ref, so they can be manipulated directly
$this->NetworkHelper->checkAddress([
$continue = $this->NetworkHelper->checkAddress([
"strasse_name" => &$strasse_name,
"hausnummer_name" => &$hausnummer_name,
"addresszusatz" => &$addresszusatz,
@@ -118,11 +117,16 @@ class AddressHelper {
"plz_name" => &$plz_name
]);
if(!$continue) {
echo "[WW] ($addr_dbg_str) Wurde aussortiert\n";
return false;
}
$gemeinde = \ADBGemeindeModel::getFirst(["kennziffer" => $gem_kz]);
if(!$gemeinde) {
$this->log->warning("[WW] ($addr_dbg_str) Gemeinde nicht gefunden");
echo "Gemeinde $gem_name $gem_kz nicht gefunden\n";
$this->log->warning("[EE] ($addr_dbg_str) Gemeinde nicht gefunden (name: $gem_name, Kennzahl: $gem_kz");
echo "[EE] ($addr_dbg_str) Gemeinde $gem_name $gem_kz nicht gefunden\n";
return false;
}
$gemeinde_id = $gemeinde->id;
@@ -136,19 +140,19 @@ class AddressHelper {
$hausnummer = \ADBHausnummerModel::getFirst(["rimo_id" => $rimo_id]);
if($hausnummer) {
/*if($hausnummer) {
echo "found hausnummer from rimo_id $rimo_id\n";
}
}*/
if($adrcd && !$hausnummer) {
// get Hausnummer to update
$hausnummer = \ADBHausnummerModel::getFirst(['adrcd' => $adrcd]);
if(!$hausnummer) {
/*if(!$hausnummer) {
//echo "Hausnummer adrcd $adrcd not found\n";
} else {
echo "found hausnummer from adrcd $adrcd\n";
//echo "Hausnummer adrcd $adrcd gefunden!\n";
}
}*/
}
if(!$hausnummer) {
@@ -160,15 +164,23 @@ class AddressHelper {
//if(!$strasse) die("Strasse $strasse_name (gemeinde_id $gemeinde_id; gem_kz $gem_kz) nicht gefunden\n");
if(!$strasse) {
$strasse = $this->createStreet($gemeinde_id, $strasse_name);
echo "[EE] Konnte Strasse $strasse_name in Gemeinde $gemeinde_id nicht anlegen\n";
if(!$strasse) return false;
if(!$strasse) {
echo "[EE] ($addr_dbg_str) Konnte Strasse $strasse_name in Gemeinde $gemeinde_id nicht anlegen\n";
return false;
}
}
$plz = \ADBPlzModel::getFirst(["gemeinde_id" => $gemeinde_id, "plz" => $plz_name]);
if(!$plz) die("PLZ $plz_name nicht gefunden\n");
if(!$plz) {
echo "[EE] ($addr_dbg_str) PLZ $plz_name nicht gefunden\n";
return false;
}
$ortschaft = \ADBOrtschaftModel::getFirst(["gemeinde_id" => $gemeinde_id, "name" => $ort_name]);
if(!$ortschaft) die("$strasse_hausnummer: ortschaft $ort_name nicht gefunden\n");
if(!$ortschaft) {
echo "[EE] ($addr_dbg_str) Ortschaft $ort_name nicht gefunden\n";
return false;
}
$hausnummer_data = [
"netzgebiet_id" => $this->netzgebiet->id,

View File

@@ -72,7 +72,7 @@ $qs = http_build_query($params);
$req_url = $epGetClusters."?".$qs;
$req_ctx = stream_context_create($ctxOptsGet);
echo $req_url."\n";
//echo $req_url."\n";
$responseText = file_get_contents($req_url, false, $req_ctx);
if($responseText === false) {
echo "Error fetching clusters\n";
@@ -88,14 +88,21 @@ if(!is_object($clustersResponse) || !property_exists($clustersResponse, "item")
foreach($clustersResponse->item as $cluster) {
$cluster_rimo_id = $cluster->id;
echo "$cluster_rimo_id | name: ".$cluster->name."; label: ".$cluster->userLabel."\n";
//echo "##################################################\n";
//echo "$cluster_rimo_id | name: ".$cluster->name."; label: ".$cluster->userLabel."\n";
//continue;
$adb_netzgebiet = \ADBNetzgebietModel::getFirst(['rimo_id' => $cluster_rimo_id]);
if(!$adb_netzgebiet) {
echo "Kein Netzgebiet für Salescluster $cluster_rimo_id (".$cluster->name.")\n";
//echo "Kein Netzgebiet für Salescluster $cluster_rimo_id (".$cluster->name.")\n";
continue;
}
/*if($cluster_rimo_id != "SDISalesCluster_200193309697_1700559530") {
// kalwang
continue;
}*/
$AddressHelper = new ADBAddressHelper\AddressHelper(["log" => $log, "db" => $adb, "netzgebiet" => $adb_netzgebiet]);
/*
@@ -108,7 +115,7 @@ foreach($clustersResponse->item as $cluster) {
$req_url = $epGetBuildings."?".$qs;
$req_ctx = stream_context_create($ctxOptsGet);
echo $req_url."\n";
//echo $req_url."\n";
$responseText = file_get_contents($req_url, false, $req_ctx);
if($responseText === false) {
@@ -117,7 +124,11 @@ foreach($clustersResponse->item as $cluster) {
}
$buildingsResponse = json_decode($responseText);
$hausnummer_count = 0;
$hausnummer_found_count = 0;
$homes_count = 0;
if(is_object($buildingsResponse) && property_exists($buildingsResponse, "item") && is_array($buildingsResponse->item) && count($buildingsResponse->item)) {
foreach($buildingsResponse->item as $building) {
//var_dump($building);
@@ -126,6 +137,7 @@ foreach($clustersResponse->item as $cluster) {
} else {
continue;
}
$hausnummer_count++;
// ignore buildings without units
if(!$building->plannedTU) {
continue;
@@ -134,11 +146,12 @@ foreach($clustersResponse->item as $cluster) {
//print_r($building);exit;
$rimo_building_id = $building->id;
$hausnummer = $AddressHelper->findAddressFromRimoBuilding($building);
$hausnummer = $AddressHelper->findUpdateAddressFromRimoBuilding($building);
if(!$hausnummer) {
echo "Adresse nicht gefunden: $rimo_building_id\n";
continue;
}
$hausnummer_found_count++;
$rimo_home_count = count($building->homes->item);
@@ -153,6 +166,7 @@ foreach($clustersResponse->item as $cluster) {
foreach($building->homes->item as $home) {
//print_r($home);//exit;
$homes_count++;
$home_rimo_id = $home->id;
$home_name = $home->name;
@@ -173,14 +187,15 @@ foreach($clustersResponse->item as $cluster) {
"extref" => $home_rimo_id,
"num" => ++$last_unit_num
]);
echo "-- Creating new unit $home_rimo_id\n";
if(!$unit->save()) {
die("!!! Error saving new unit\n".print_r($home, true));
die("Error saving new unit\n".print_r($home, true));
}
} else {
if($unit->extref != $home_rimo_id) {
$unit->extref = $home_rimo_id;
$unit->save();
}
if($unit->extref != $home_rimo_id) {
$unit->extref = $home_rimo_id;
if(!$unit->save()) {
die("Error saving new extref on unit\n".print_r($home, true));
}
}
@@ -217,7 +232,7 @@ foreach($clustersResponse->item as $cluster) {
}
// check OAID
if(is_object($home->ftus->item[0]->oaidObject) && $home->ftus->item[0]->oaidObject->name) {
if(property_exists($home->ftus->item[0], "oaidObject") && is_object($home->ftus->item[0]->oaidObject) && $home->ftus->item[0]->oaidObject->name) {
if($home->ftus->item[0]->oaidObject->name != $unit->oaid) {
if(!$unit->oaid) {
// assign oaid to home
@@ -389,6 +404,7 @@ foreach($clustersResponse->item as $cluster) {
}
}
echo "Cluster $cluster->name: $hausnummer_count Buildings; $hausnummer_found_count Buildings verarbeitet; $homes_count Homes verarbeitet.\n";
}
}

View File

@@ -20,14 +20,22 @@ $ignore_preorders = [];
$campaign_prem_nord = 5;
$campaign_prem_sued = 6;
$campaign_gross_st_florian = 7;
$same_unit_count = 0;
$campaign_kalwang = 41;
$selected_campaign = $campaign_kalwang;
if(!$selected_campaign) {
echo "Keine Kampagne ausgewählt.\n";
exit;
}
$same_unit_count = 0;
$missing_units = [];
$missing_doors = [];
$total = 0;
$c = 0;
foreach(PreorderModel::search(["deleted" => 0, "preordercampaign_id" => $campaign_prem_nord, "connection_count" => 2]) as $preorder) {
foreach(PreorderModel::search(["deleted" => 0, "preordercampaign_id" => $selected_campaign, "connection_count" => 2]) as $preorder) {
// check if we have enough units with extref
$wohneinheiten = ADBWohneinheitModel::search(["hausnummer_id" => $preorder->adb_hausnummer_id]);
$unit_count = count($wohneinheiten);

View File

@@ -2,7 +2,7 @@
<?php
//require 'vendor/autoload.php';
require("../config/config.php");
require("../../config/config.php");
define('FRONKDB_SQLDEBUG',false);
error_reporting(E_ALL & ~(E_NOTICE | E_STRICT | E_DEPRECATED));
@@ -18,10 +18,21 @@ define("INTERNAL_USER_USERNAME", $me->username);
$ignore_preorders = [];
$campaign_prem_nord = 5;
$campaign_prem_sued = 6;
$campaign_gross_st_florian = 7;
$campaign_kalwang = 41;
$selected_campaign = $campaign_kalwang;
if(!$selected_campaign) {
echo "Keine Kampagne ausgewählt.\n";
exit;
}
$same_unit_count = 0;
$i = 0;
foreach(PreorderModel::search(['preordercampaign_id' => $campaign_prem_nord, 'adb_wohneinheit_id' => null, 'connection_count' => 1, "connection_type" => "single-dwelling", "deleted" => 0]) as $preorder) {
foreach(PreorderModel::search(['preordercampaign_id' => $selected_campaign, 'adb_wohneinheit_id' => null, 'connection_count' => 1, "connection_type" => "single-dwelling", "deleted" => 0]) as $preorder) {
if(in_array($preorder->id, $ignore_preorders)) continue;
//if($preorder->connection_type != "single-dwelling") continue;
@@ -73,6 +84,7 @@ foreach(PreorderModel::search(['preordercampaign_id' => $campaign_prem_nord, 'ad
ksort($unit_candidates, SORT_NUMERIC);
$new_unit = array_shift($unit_candidates);
$preorder->adb_wohneinheit_id = $new_unit->id;
//var_dump($preorder, $new_unit);exit;
$preorder->save();
echo "$i Wohneinheit saved\n";