#!/usr/bin/php loadByExtref($netzgebiet_code); if(!$netzgebiet->id) { // create Netzgebiet $netzgebiet_data = [ 'name' => "$netzgebiet_name_main - $netzgebiet_subname", 'extref' => $netzgebiet_code, 'source' => "csv", 'source_id' => $csvname ]; $netzgebiet = ADBNetzgebietModel::create($netzgebiet_data); $netzgebiet_id = $netzgebiet->save(); if(!$netzgebiet_id) { die("Error creating Netzgebiet!\n"); } } //var_dump($netzgebiet);exit; $nutzung = trim($csv[10]); //$unit_count = $csv[10]; //if(!$unit_count) $unit_count = 1; //if(!$strasse_hausnummer) continue; if(!strlen($hausnummer_string) || !strlen($strasse_name)) { die("!! Hausnummer oder Strasse leer (adrcd $adrcd)\n"); } if(!$gem_name || !$plz_string || !$ort_name || !$strasse_name) { die("!! Konnte Adresse nicht parsen\n"); } if(!$hausnummer_extref) { die("!!! Keine Hausnummer Extref\n"); } if(!$netzgebiet_extref) { die("!!! Keine Netzgebiet Extref\n"); } $gemeinde = ADBGemeindeModel::getFirst(['kennziffer' => $gem_kz]); if(!$gemeinde) { die("Gemeinde ($gem_kz, $gem_name) nicht in addressdb gefunden\n"); } // check for GemeindeNetzgebiet checkGemeindeNetzgebiet($gemeinde, $netzgebiet); //continue; $strasse = ADBStrasseModel::getFirst(['kennziffer' => $skz]); if(!$strasse) { die("Strasse ($skz, $strasse_name) nicht in addressdb gefunden\n"); } /*$ortschaft = ADBOrtschaftModel::getFirst(['kennziffer' => $ort_kz]); if(!$ortschaft) { die("Ortschaft ($ort_kz, $ort_name) nicht in addressdb gefunden\n"); }*/ $ortschaft = ADBOrtschaftModel::getFirst(['gemeinde_id' => $gemeinde->id, 'name' => $ort_name]); if(!$ortschaft) { die("Ortschaft (gemeinde $gem_name ($gem_kz), $ort_name) nicht in addressdb gefunden\n"); } $plz = ADBPlzModel::getFirst(['gemeinde_id' => $gemeinde->id, 'plz' => $plz_string]); if(!$plz) { echo "PLZ $plz_string in Gemeinde $gemeinde_name nicht gefunden. Wird angelegt.\n"; $plz_data = [ 'gemeinde_id' => $gemeinde->id, 'plz' => $plz_string, 'plz_string' => $plz_string ]; $plz = ADBPlzModel::create($plz_data); $plz_id = $plz->save(); if(!$plz_id) { var_dump($plz); die("Error creating PLZ\n"); } } if(is_numeric($rollout_time)) { $rollout = $rollout_time; $rollout_info = null; $freigabe = $freigabe_default; } elseif($rollout_time == "2024/2025") { $rollout = null; $rollout_info = "2024/2025"; $freigabe = json_encode(['reorder']); } else { $rollout = null; $rollout_info = "unscheduled"; $freigabe = json_encode([]); } //$hausnummer = ADBHausnummerModel::getFirst(['gemeind_id' => $gemeinde->id, 'strasse_id' => $strasse->id, 'hausnummer' => $hausnummer_string]); $hausnummer = ADBHausnummerModel::getFirst(['adrcd' => $adrcd]); if(!$hausnummer) { $hausnummer_data = [ 'adrcd' => $adrcd, 'netzgebiet_id' => $netzgebiet->id, 'extref' => $adrcd, 'ortschaft_id' => $ortschaft->id, 'plz_id' => $plz->id, 'strasse_id' => $strasse->id, 'hausnummer' => $hausnummer_string, 'grund_nr' => $grundstueck_name, 'rollout' => $rollout, 'rollout_info' => $rollout_info, 'freigabe' => $freigabe ]; $hausnummer = ADBHausnummerModel::create($hausnummer_data); //var_dump($hausnummer);exit; if(!$hausnummer->save()) { var_dump($hausnummer_data); die("Konnte Hausnummer nicht anlegen\n"); } if(!$hausnummer->oaid) { $hausnummer->oaid = $hausnummer->getNewOAID(); if(!$hausnummer->oaid) { die("Error generating OAID for hausnummer ".$hausnummer->id); } $hausnummer->save(); } $c++; } else { $hausnummer->netzgebiet_id = $netzgebiet->id; $hausnummer->extref = $adrcd; $hausnummer->grund_nr = $grundstueck_name; $hausnummer->rollout = $rollout; $hausnummer->rollout_info = $rollout_info; $hausnummer->freigabe = $freigabe; if(!$hausnummer->oaid) { $hausnummer->oaid = $hausnummer->getNewOAID(); if(!$hausnummer->oaid) { die("Error generating OAID for hausnummer ".$hausnummer->id); } } if(!$hausnummer->save()) { var_dump($hausnummer); die("Konnte Hausnummer nicht speichern\n"); } $u++; } // get count of ccurnt wohneinheiten $existing_units_count = ADBWohneinheitModel::count(['hausnummer_id' => $hausnummer->id]); $new_units_count = $unit_count - $existing_units_count; $last_unit_num = 0; //if($new_units_count) { foreach(ADBWohneinheitModel::search(['hausnummer_id' => $hausnummer->id]) as $tmp_unit) { if(!$tmp_unit->oaid) { // generate missing oaid $tmp_unit->oaid = $tmp_unit->getNewOAID(); if(!$tmp_unit->oaid) { die("Error generating OAID for wohneinheit ".$tmp_unit->id); } $tmp_unit->save(); } if($tmp_unit->num > $last_unit_num) { $last_unit_num = $tmp_unit->num; } } //} // create wohneinheiten for($i = 1; $i <= $new_units_count; $i++) { $num = $last_unit_num + $i; //echo "$existing_units_count create wohneinheit $num\n"; $unit_data = [ 'hausnummer_id' => $hausnummer->id, 'num' => $num, ]; $wohneinheit = ADBWohneinheitModel::create($unit_data); $wohneinheit_id = $wohneinheit->save(); if(!$wohneinheit_id) { die("Cannot save Wohneinheit\n"); } $wohneinheit->oaid = $wohneinheit->getNewOAID(); if(!$wohneinheit->oaid) { die("Error generating OAID for wohneinheit ".$wohneinheit->id); } $wohneinheit->save(); $w++; } } echo "$l lines processed, $c created, $u updated\n"; echo "$w Wohneinheiten erstellt\n"; function checkGemeindeNetzgebiet($gemeinde, $netzgebiet) { global $db; $sql = "SELECT * FROM GemeindeNetzgebiet WHERE gemeinde_id=".$gemeinde->id." AND netzgebiet_id=".$netzgebiet->id; $res = $db->query($sql); if($db->num_rows($res)) { return true; } $sql = "INSERT INTO GemeindeNetzgebiet (gemeinde_id, netzgebiet_id, `create`, `edit`) VALUES (".$gemeinde->id.", ".$netzgebiet->id.", UNIX_TIMESTAMP(), UNIX_TIMESTAMP())"; if(!$db->query($sql)) { die("SQL Query failed: $sql\n ".$db->getLastError()); } return true; }