Importing Workorders from salescluster instead of from building now

This commit is contained in:
Frank Schubert
2024-10-23 13:33:28 +02:00
parent f94135c44d
commit f29831e5a4
3 changed files with 98 additions and 80 deletions

View File

@@ -823,10 +823,16 @@ class PreordercampaignController extends mfBaseController {
$this->log->error("Cannot create RimoWorkorder! Invalid Response! (Preorder code: ".$preorder->ucode.") | Response: \n$response");
throw new Exception("Cannot create RimoWorkorder! Invalid Response! (Preorder code: ".$preorder->ucode.")");
}
$rimo_status = $resp_data->status->userLabel;
if(!$rimo_status) {
$rimo_status = "";
}
$wo = RimoWorkorderModel::create([
"rimo_id" => $resp_data->id,
"rimo_name" => $resp_data->name,
"rimo_status" => $rimo_status,
"adb_wohneinheit_id" => $preorder->adb_wohneinheit_id,
"create_data" => $response
]);

View File

@@ -1,14 +1,15 @@
<?php
class RimoWorkorderModel {
public $rimo_id;
public $rimo_name;
public $adb_wohneinheit_id;
public $termination_id;
public $rimo_id;
public $rimo_name;
public $rimo_status;
public $rimo_team_id;
public $rimo_team_name;
public $create_data;
public $create_by;
public $edit_by;
public $create;

View File

@@ -537,83 +537,7 @@ foreach ($clusters as $cluster_data) {
}
//continue;
/*
* get workorders
*/
$params = $baseParams;
$params["buildingId"] = $rimo_building_id;
$qs = http_build_query($params);
$req_url = $epGetWorkorders . "?" . $qs;
$req_ctx = stream_context_create($ctxOptsGet);
//echo $req_url."\n";
$responseText = file_get_contents($req_url, false, $req_ctx);
if ($responseText === false) {
//echo "Error fetching Workorders for building $rimo_building_id\n";
continue;
}
$workordersResponse = json_decode($responseText);
//print_r($workordersResponse);exit;
if (is_object($workordersResponse) && property_exists($workordersResponse, "item") && is_array($workordersResponse->item) && count($workordersResponse->item)) {
foreach ($workordersResponse->item as $workorder) {
$rimo_workorder_id = $workorder->id;
$rimo_workorder_name = $workorder->name;
$workorder_status = $workorder->state->userLabel;
$workorder_home_id = $workorder->home->id;
$team_id = (is_array($workorder->teams->item) && count($workorder->teams->item)) ? $workorder->teams->item[0]->id : null;
$team_name = (is_array($workorder->teams->item) && count($workorder->teams->item)) ? $workorder->teams->item[0]->name : null;
$wo = \RimoWorkorderModel::getFirst(["rimo_id" => $rimo_workorder_id]);
if ($wo) {
//echo "Updating Workorder $rimo_workorder_id ($workorder_home_id)\n";
if ($workorder_status != $wo->rimo_status) {
\mfValuecache::singleton()->set("adbhausnummer-save-nesting-level-".$hausnummer->id, 0);
\mfValuecache::singleton()->set("adbwohneinheit-save-nesting-level-".$unit->id, 0);
$wo->rimo_status = $workorder_status;
$wo->save();
}
if ($team_id != $wo->rimo_team_id) {
$wo->rimo_team_id = $team_id;
$wo->save();
}
if ($team_name != $wo->rimo_team_name) {
$wo->rimo_team_name = $team_name;
$wo->save();
}
}
if (!$wo) {
$wo_home = \ADBWohneinheitModel::getFirst(["extref" => $workorder_home_id]);
if (!$wo_home) {
//echo "Home zu Workorder $rimo_workorder_id ($workorder_home_id) nicht gefunden\n";
continue;
}
\mfValuecache::singleton()->set("adbhausnummer-save-nesting-level-".$hausnummer->id, 0);
\mfValuecache::singleton()->set("adbwohneinheit-save-nesting-level-".$unit->id, 0);
//echo "Creating Workorder $rimo_workorder_id ($workorder_home_id)\n";
$wo = \RimoWorkorderModel::create([
"adb_wohneinheit_id" => $wo_home->id,
"rimo_id" => $rimo_workorder_id,
"rimo_name" => $rimo_workorder_name,
"rimo_status" => $workorder_status,
"rimo_team_id" => $team_id,
"rimo_team_name" => $team_name
]);
if (!$wo->save()) {
echo "Fehler beim Erstellen der RimoWorkorder $rimo_workorder_id ($workorder_home_id)\n";
}
}
}
}
/*
* Get Geodata
@@ -695,6 +619,93 @@ foreach ($clusters as $cluster_data) {
}
}
/*
* get workorders
*/
$params = $baseParams;
$params["clusterId"] = $cluster_rimo_id;
$qs = http_build_query($params);
$req_url = $epGetWorkorders . "?" . $qs;
$req_ctx = stream_context_create($ctxOptsGet);
//echo $req_url."\n";
$responseText = file_get_contents($req_url, false, $req_ctx);
if ($responseText === false) {
//echo "Error fetching Workorders for building $rimo_building_id\n";
continue;
}
$workordersResponse = json_decode($responseText);
//print_r($workordersResponse);exit;
if (is_object($workordersResponse) && property_exists($workordersResponse, "item") && is_array($workordersResponse->item) && count($workordersResponse->item)) {
foreach ($workordersResponse->item as $workorder) {
//$wo_building_external_id = $workorder->location->id;
$wo_home_external_id = $workorder->home->id;
$rimo_workorder_id = $workorder->id;
$rimo_workorder_name = $workorder->name;
$workorder_status = $workorder->state->userLabel;
$workorder_home_id = $workorder->home->id;
$team_id = (is_array($workorder->teams->item) && count($workorder->teams->item)) ? $workorder->teams->item[0]->id : null;
$team_name = (is_array($workorder->teams->item) && count($workorder->teams->item)) ? $workorder->teams->item[0]->name : null;
$wo = \RimoWorkorderModel::getFirst(["rimo_id" => $rimo_workorder_id]);
if($wo) {
if($wo_home_external_id) {
$wo_home = \ADBWohneinheitModel::getFirst(["extref" => $wo_home_external_id]);
if($wo_home != $wo->adb_wohneinheit_id) {
$addressErrors[] = "Wohneinheit für Workorder ".$wo->name." hat sich geändert von ".$wo->adb_wohneinheit_id." auf ".$wo_home->extref." (aber wurde nicht im Tool übernommen)";
}
} else {
$addressErrors[] = "Wohneinheit für Workorder ".$wo->name." ist jetzt leer";
}
//echo "Updating Workorder $rimo_workorder_id ($workorder_home_id)\n";
if ($workorder_status != $wo->rimo_status) {
\mfValuecache::singleton()->set("adbhausnummer-save-nesting-level-".$hausnummer->id, 0);
\mfValuecache::singleton()->set("adbwohneinheit-save-nesting-level-".$unit->id, 0);
$wo->rimo_status = $workorder_status ?: "";
$wo->save();
}
if ($team_id != $wo->rimo_team_id) {
$wo->rimo_team_id = $team_id;
$wo->save();
}
if ($team_name != $wo->rimo_team_name) {
$wo->rimo_team_name = $team_name;
$wo->save();
}
} else {
$wo_home = \ADBWohneinheitModel::getFirst(["extref" => $workorder_home_id]);
if (!$wo_home) {
//echo "Home zu Workorder $rimo_workorder_id ($workorder_home_id) nicht gefunden\n";
continue;
}
\mfValuecache::singleton()->set("adbhausnummer-save-nesting-level-".$hausnummer->id, 0);
\mfValuecache::singleton()->set("adbwohneinheit-save-nesting-level-".$unit->id, 0);
//echo "Creating Workorder $rimo_workorder_id ($workorder_home_id)\n";
$wo = \RimoWorkorderModel::create([
"adb_wohneinheit_id" => $wo_home->id,
"rimo_id" => $rimo_workorder_id,
"rimo_name" => $rimo_workorder_name,
"rimo_status" => $workorder_status ?: "",
"rimo_team_id" => $team_id,
"rimo_team_name" => $team_name
]);
if (!$wo->save()) {
echo "Fehler beim Erstellen der RimoWorkorder $rimo_workorder_id ($workorder_home_id)\n";
}
}
}
}
// save address errors
if ($addressErrors) {
$netzname = preg_replace('/[^a-z0-9.-]/i', "_", $adb_netzgebiet->name);