#!/usr/bin/php id) { die("$hausnummer_id not found\n"); } //continue; $updates = []; if($existing_hausnummer->netzgebiet->extref != $netzgebiet_extref) { echo "$hausnummer_id - netzgebiet '".$existing_hausnummer->netzgebiet->name."' => '$netzgebiet_name'\n"; $updates[] = "netzgebiet"; } if($existing_hausnummer->strasse->name != $strasse_name) { echo "$hausnummer_id - strasse '".$existing_hausnummer->strasse->name."' => '$strasse_name'\n"; $updates[] = "strasse"; } if($existing_hausnummer->strasse->gemeinde->name != $gem_name) { echo "$hausnummer_id - gemeinde '".$existing_hausnummer->strasse->gemeinde->name."' => '$gem_name'\n"; $updates[] = "gemeinde"; } if($existing_hausnummer->hausnummer != $hausnummer_string) { echo "$hausnummer_id - hausnummer '".$existing_hausnummer->hausnummer."' => '$hausnummer_string'\n"; $updates[] = "hausnummer"; } if($existing_hausnummer->grund_nr != $grund_nr) { echo "$hausnummer_id - grund_nr '".$existing_hausnummer->grund_nr."' => '$grund_nr'\n"; $updates[] = "grund_nr"; } if($existing_hausnummer->gps_lat!= $gps_lat) { echo "$hausnummer_id - gps_lat '".$existing_hausnummer->gps_lat."' => '$gps_lat'\n"; $updates[] = "gps_lat"; } if($existing_hausnummer->gps_long!= $gps_long) { echo "$hausnummer_id - gps_long '".$existing_hausnummer->gps_long."' => '$gps_long'\n"; $updates[] = "gps_long"; } if($existing_hausnummer->ortschaft->name != $ort_name) { echo "$hausnummer_id - ortschaft '".$existing_hausnummer->ortschaft->name."' => '$ort_name'\n"; $updates[] = "ortschaft"; } if($existing_hausnummer->plz->plz != $plz_string) { echo "$hausnummer_id - plz '".$existing_hausnummer->plz->plz."' => '$plz_string'\n"; $updates[] = "plz"; } if($existing_hausnummer->rollout != $rollout_time) { echo "$hausnummer_id - rollout '".$existing_hausnummer->rollout."' => '$rollout_time'\n"; $updates[] = "rollout"; } if($existing_hausnummer->rollout_info != $rollout_info) { echo "$hausnummer_id - rollout_info '".$existing_hausnummer->rollout_info."' => '$rollout_info'\n"; $updates[] = "rollout_info"; } if($existing_hausnummer->unit_count != $unit_count) { echo "$hausnummer_id - unit_count '".$existing_hausnummer->unit_count."' => '$unit_count'\n"; $updates[] = "unit_count"; } if($existing_hausnummer->gdaeigenschaft != $gdaeigenschaft) { echo "$hausnummer_id - gdaeigenschaft '".$existing_hausnummer->gdaeigenschaft."' => '$gdaeigenschaft'\n"; $updates[] = "gdaeigenschaft"; } if($existing_hausnummer->meridian != $meridian) { echo "$hausnummer_id - meridian '".$existing_hausnummer->meridian."' => '$meridian'\n"; $updates[] = "meridian"; } if($existing_hausnummer->rw != $rw) { echo "$hausnummer_id - rw '".$existing_hausnummer->rw."' => '$rw'\n"; $updates[] = "rw"; } if($existing_hausnummer->hw != $hw) { echo "$hausnummer_id - hw '".$existing_hausnummer->hw."' => '$hw'\n"; $updates[] = "hw"; } //continue; if(!count($updates)) { continue; } if(in_array("netzgebiet", $updates)) { $netzgebiet = ADBNetzgebietModel::getFirst(['extref' => $netzgebiet_extref]); if(!$netzgebiet) { die("$hausnummer_id: Netzgebiet ($netzgebiet_extref: $netzgebiet_name) nicht gefunden\n"); } $existing_hausnummer->netzgebiet_id = $netzgebiet->id; echo "$hausnummer_id: Updating Netzgebiet to ".$netzgebiet->id."\n"; //$existing_hausnummer->save(); } if(in_array("strasse", $updates)) { $strasse = ADBStrasseModel::getFirst(["gemeinde_id" => $existing_hausnummer->strasse->gemeinde_id, "name" => $strasse_name]); if(!$strasse) { die("Strasse $skz $strasse_name not found!\n"); } } if(in_array("hausnummer", $updates)) { if($hausnummer_string) { $existing_hausnummer->hausnummer = $hausnummer_string; } } if(in_array("gdaeigenschaft", $updates)) { $existing_hausnummer->gdaeigenschaft = $gdaeigenschaft; } if(in_array("meridian", $updates)) { $existing_hausnummer->meridian = $meridian; } if(in_array("rw", $updates)) { if(is_numeric($rw)) { $existing_hausnummer->rw = $rw; } } if(in_array("hw", $updates)) { if(is_numeric($hw)) { $existing_hausnummer->hw = $hw; } } if(in_array("grund_nr", $updates)) { $existing_hausnummer->grund_nr = $grund_nr; } if(in_array("gps_lat", $updates)) { if(is_numeric($gps_lat)) { $existing_hausnummer->gps_lat = $gps_lat; } else { $existing_hausnummer->gps_lat = null; } } if(in_array("gps_long", $updates)) { if(is_numeric($gps_long)) { $existing_hausnummer->gps_long = $gps_long; } else { $existing_hausnummer->gps_long = null; } } if(in_array("rollout", $updates) || in_array("rollout_info", $updates)) { $new_rollout = false; $new_rollout_info = false; $freigabe = $freigabe_default; if(is_numeric($rollout_time)) { $new_rollout = $rollout_time; $new_rollout_info = null; $freigabe = $freigabe_default; } elseif($rollout_info == "2024/2025") { $new_rollout = null; $new_rollout_info = "2024/2025"; $freigabe = json_encode(['reorder']); } elseif($rollout_info == "2025/2026") { $new_rollout = null; $new_rollout_info = "2025/2026"; $freigabe = json_encode(['reorder']); } elseif($rollout_info == "2099") { $new_rollout = null; $new_rollout_info = "2099"; $freigabe = json_encode(['reorder']); } else { $new_rollout = null; $new_rollout_info = "unscheduled"; $freigabe = json_encode([]); } $existing_hausnummer->rollout = $new_rollout; $existing_hausnummer->rollout_info = $new_rollout_info; $existing_hausnummer->freigabe = $freigabe; echo "$hausnummer_id: updating rollout/info/freigabe to $new_rollout / $new_rollout_info / $freigabe\n"; } $existing_hausnummer->save(); $preorder = PreorderModel::getFirst(["adb_hausnummer_id" => $existing_hausnummer->id]); if($preorder) { echo "========================================================================\n"; echo "========================================================================\n"; echo "=============== [Hausnummer id: ".$existing_hausnummer->id."] Existing Preorder!! (".$preorder->id.")"; echo "========================================================================\n"; echo "========================================================================\n"; } //$existing_hausnummer->save(); $u++; // update GemeindeNetzgebiet if needed $netzgebiet = new ADBNetzgebiet($existing_hausnummer->netzgebiet_id); $gemeinde = new ADBGemeinde($existing_hausnummer->strasse->gemeinde_id); checkGemeindeNetzgebiet($gemeinde, $netzgebiet); // add new units $existing_units_count = ADBWohneinheitModel::count(['hausnummer_id' => $existing_hausnummer->id]); if($existing_units_count != $unit_count) { if($existing_units_count > $unit_count) { echo "========================================================================\n"; echo "=============== [".$existing_hausnummer->id."] Need to delete ".($existing_units_count - $unit_count)." units\n"; echo "========================================================================\n"; } if($existing_units_count < $unit_count) { echo "=============== Adding ".($unit_count - $existing_units_count)." units\n"; $new_units_count = $unit_count - $existing_units_count; $last_unit_num = 0; foreach(ADBWohneinheitModel::search(['hausnummer_id' => $existing_hausnummer->id]) as $tmp_unit) { 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' => $existing_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); } var_dump($wohneinheit); //$wohneinheit->save(); $w++; } } } echo "=================================\n"; } echo "$l lines processed, $u updated\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()); } echo "updated GemeindeNetzgebiet\n"; return true; }