Files
thetool/scripts/construction/import-lesky.php
2025-02-04 23:02:13 +01:00

264 lines
6.6 KiB
PHP

#!/usr/bin/php
<?php
//require 'vendor/autoload.php';
require("../../config/config.php");
define('FRONKDB_SQLDEBUG', false);
error_reporting(E_ALL & ~(E_NOTICE | E_STRICT | E_DEPRECATED));
require_once(LIBDIR . "/mvcfronk/mfRouter/mfRouter.php");
require_once(LIBDIR . "/mvcfronk/mfBase/mfBaseModel.php");
require_once(LIBDIR . "/mvcfronk/mfBase/mfBaseController.php");
$me = new User(1);
define("INTERNAL_USER_ID", $me->id);
define("INTERNAL_USER_USERNAME", $me->username);
define("MFBASE_BYPASS_LOGIN", true);
$folder = __DIR__."/source";
$filename = "$folder/Export Ly 04022025.csv";
$log = mfLoghandler::singleton();
$input = fopen($filename, "r");
$network_id = 7;
$pop_id = 35;
$lineworker_id = 1;
$zip = 8160;
$city = "Mortantsch";
$buildingtypes = [
1 => 1, // Einfamilienhaus
2 => 2 // Zweifamilienhaus
];
$buildingstatus = [
"geplant" => 2,
"Rohr am Grundstück" => 4,
"Rohr im Haus" => 5,
"Kabel eingeblasen" => 5,
];
$terminationstatus = [
"geplant" => 1,
"Rohr am Grundstück" => 1,
"Rohr im Haus" => 1,
"Kabel eingeblasen" => 4,
];
$colors = [
"rt" => "rot",
"gn" => "gruen",
"bl" => "blau",
"ge" => "gelb",
"ws" => "weiss",
"natur" => "natur",
"gr" => "grau",
"br" => "braun",
"vi" => "violett",
"tr" => "tuerkis",
"sw" => "schwarz",
"or" => "orange",
"rs" => "rosa",
"rt|ge" => "Rot-Gelb",
"rt|gn" => "Rot-Gruen",
"rt|bl" => "Rot-Blau",
"rt|vi" => "Rot-Violett",
"rt|gr" => "Rot-Grau",
"ge|bl" => "Gelb-Blau",
"ge|vi" => "Gelb-Violett",
"ge|gr" => "Gelb-Grau",
"gn|bl" => "Gruen-Blau",
"gn|vi" => "Gruen-Violett",
"gn|gr" => "Gruen-Grau",
"br|bl" => "Braun-Blau",
"br|vi" => "Braun-Violett",
"br|gr" => "Braun-Grau",
"br|gn" => "Braun-Gruen",
"br|ge" => "Braun-Gelb",
"br|rt" => "Braun-Rot",
"sw|rt" => "Schwarz-Rot",
"sw|ge" => "Schwarz-Gelb",
"sw|gn" => "Schwarz-Gruen",
"sw|bl" => "Schwarz-Blau",
"sw|vi" => "Schwarz-Violett",
"sw|gr" => "Schwarz-Grau",
"sw|br" => "Schwarz-Braun",
];
$existing_count = 0;
$l = 0;
while($csv = fgetcsv($input, 0)) {
$l++;
if($l == 1) continue;
if(!trim($csv[0])) {
continue;
}
$address = trim($csv[0]);
$unit_count = trim($csv[1]);
$status = trim($csv[2]);
$farbe1 = trim($csv[3]);
$rohrname = trim($csv[4]);
$gps_long = trim($csv[11]);
$gps_lat = trim($csv[12]);
$contact_name = trim($csv[14]);
$farbe2 = trim($csv[18]);
$farbe3 = trim($csv[20]);
$fcp_name = trim($csv[22]);
$street = "";
$housenumber = "";
if($address == "Leska 25 Haus 25a Altbau") continue;
$m = [];
if(!preg_match('/(.+)\s+(\.?\d+[a-z0-9\/&#._-]*|Ost)(.+)?/', $address, $m)) {
echo "adresse nicht gefunden\n";
continue;
}
if(isset($m[1])) {
$street = $m[1];
if(isset($m[2])) {
$housenumber = $m[2];
}
}
if(preg_match('/(.+) GST/', $street, $m)) {
$street = $m[1];
$housenumber = "GST $housenumber";
}
echo "$address => $street - $housenumber\n";
$existing_building = BuildingModel::getFirst(["=street" => $address ]);
if($existing_building) {
echo "===========FOUND $address: ".$existing_building->street.", ".$existing_building->zip." ".$existing_building->city."\n";
$existing_count++;
$building = $existing_building;
$building_id = $existing_building->id;
//var_dump($existing_building);exit;
}
if(!$existing_building) {
$building_data = [
"network_id" => $network_id,
"pop_id" => $pop_id,
"type_id" => $buildingtypes[$unit_count],
"status_id" => $buildingstatus[$status],
"lineworker_id" => $lineworker_id,
"street" => $address,
"zip" => $zip,
"city" => $city,
"gps_lat" => $gps_lat,
"gps_long" => $gps_long,
"oaid" => "",
"contact" => "",
"phone" => "",
"email" => "",
"units" => 0,
"note" => "",
];
$building = BuildingModel::create($building_data);
$building->code = $building->getNewObjectCode();
if(!$building->save()) {
var_dump($building);
die("Error saving building\n");
}
$building_id = $building->id;
}
// workflow stuff
foreach($building->workflowitems as $wftype => $wfitem) {
if($wfitem->value && ($wfitem->value->value_string || $wfitem->value->value_int)) continue;
$wfitem->value->create_by = $me->id;
$wfitem->value->edit_by = $me->id;
if($wftype == "rohrfarbe") {
if(!$farbe1 && !$farbe2 && !$farbe3) continue;
if($farbe3) {
$farbe = $farbe3;
} elseif($farbe2) {
$farbe = $farbe2;
} else {
$farbe = $farbe1;
}
$m = [];
if(preg_match('/^\d+-(.+)$/', $farbe, $m)) {
$fb_code = $m[1];
}
if(!$fb_code) {
echo "Keine Farbe\n";
continue;
}
if(!array_key_exists($fb_code, $colors)) {
echo "Unbekannter Farbcode\n";
continue;
}
$wfitem->value->setValue($colors[$fb_code]);
}
if($wftype == "rohrverband_name") {
$wfitem->value->setValue($rohrname);
/*$wfvalue = WorkflowvalueModel::create([
"value_string" => $rohrname,
]);*/
}
if($wftype == "anschlusspunkt_typ") {
$wfitem->value->setValue("Verteiler");
}
if($wftype == "anschlusspunkt_name") {
$wfitem->value->setValue($fcp_name);
}
if($wftype == "rohrtype") {
$wfitem->value->setValue("MR7/4");
}
if($wfitem->value && ($wfitem->value->value_string || $wfitem->value->value_int || $wfitem->value->value_text)) {
//var_dump($wfitem->value);
$wfitem->value->save();
}
}
if(!$unit_count || $existing_building) continue;
for($i = 0; $i < $unit_count; $i++) {
$unit_data = [
"building_id" => $building->id,
"status_id" => $terminationstatus[$status],
"contact" => ($contact_name) ?: null
];
$unit = TerminationModel::create($unit_data);
$unit->code = $unit->getNewObjectCode();
//var_dump($unit);exit;
if(!$unit->save()) {
var_dump($unit);
die("Error saving unit\n");
}
}
}