diff --git a/application/Preordercampaign/PreordercampaignController.php b/application/Preordercampaign/PreordercampaignController.php index 1c9240943..3b16c3691 100644 --- a/application/Preordercampaign/PreordercampaignController.php +++ b/application/Preordercampaign/PreordercampaignController.php @@ -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 ]); diff --git a/application/RimoWorkorder/RimoWorkorderModel.php b/application/RimoWorkorder/RimoWorkorderModel.php index aab834bfb..ff9c102b2 100644 --- a/application/RimoWorkorder/RimoWorkorderModel.php +++ b/application/RimoWorkorder/RimoWorkorderModel.php @@ -1,14 +1,15 @@ 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);