From 675477c734281e6d4339552e3d00ee066b9dfddb Mon Sep 17 00:00:00 2001 From: arifal Date: Fri, 21 Feb 2025 18:49:42 +0700 Subject: [PATCH] fix service sync simbg upsert integrations --- app/Services/ServiceSIMBG.php | 73 +++++++++++++++++++++++------------ 1 file changed, 49 insertions(+), 24 deletions(-) diff --git a/app/Services/ServiceSIMBG.php b/app/Services/ServiceSIMBG.php index e700cee..212d10d 100644 --- a/app/Services/ServiceSIMBG.php +++ b/app/Services/ServiceSIMBG.php @@ -61,32 +61,37 @@ class ServiceSIMBG } } - public function syncIndexIntegration($uuid, $token) + public function syncIndexIntegration($uuids, $token) { try{ - $url = "/api/pbg/v1/detail/" . $uuid . "/retribution/indeks-terintegrasi/"; - - $headers = [ - 'Authorization' => "Bearer " . $token, - ]; - - $res = $this->service_client->get($url, $headers); - - if (empty($res->original['success']) || !$res->original['success']) { - // Log error - Log::error("API response indicates failure", ['url' => $url, 'uuid' => $uuid]); + if(empty($uuids)){ return false; } + + $integrations = []; + foreach($uuids as $uuid){ + $url = "/api/pbg/v1/detail/" . $uuid . "/retribution/indeks-terintegrasi/"; - $data = $res->original['data']['data'] ?? null; - if (!$data) { - Log::error("No valid data returned from API", ['url' => $url, 'uuid' => $uuid]); - return false; - } - - $resultData = PbgTaskIndexIntegrations::updateOrCreate( - ['pbg_task_uid' => $uuid], - [ + $headers = [ + 'Authorization' => "Bearer " . $token, + ]; + + $res = $this->service_client->get($url, $headers); + + if (empty($res->original['success']) || !$res->original['success']) { + // Log error + Log::error("API response indicates failure", ['url' => $url, 'uuid' => $uuid]); + return false; + } + + $data = $res->original['data']['data'] ?? null; + if (!$data) { + Log::error("No valid data returned from API", ['url' => $url, 'uuid' => $uuid]); + return false; + } + + $integrations[] = [ + 'pbg_task_uid' => $uuid, 'indeks_fungsi_bangunan' => $data['indeks_fungsi_bangunan'] ?? null, 'indeks_parameter_kompleksitas' => $data['indeks_parameter_kompleksitas'] ?? null, 'indeks_parameter_permanensi' => $data['indeks_parameter_permanensi'] ?? null, @@ -94,8 +99,24 @@ class ServiceSIMBG 'faktor_kepemilikan' => $data['faktor_kepemilikan'] ?? null, 'indeks_terintegrasi' => $data['indeks_terintegrasi'] ?? null, 'total' => $data['total'] ?? null, - ] - ); + ]; + } + + PbgTaskIndexIntegrations::upsert($integrations, ['pbg_task_uid'], ['indeks_fungsi_bangunan', + 'indeks_parameter_kompleksitas', 'indeks_parameter_permanensi', 'indeks_parameter_ketinggian', 'faktor_kepemilikan', 'indeks_terintegrasi', 'total']); + + // $resultData = PbgTaskIndexIntegrations::updateOrCreate( + // ['pbg_task_uid' => $uuid], + // [ + // 'indeks_fungsi_bangunan' => $data['indeks_fungsi_bangunan'] ?? null, + // 'indeks_parameter_kompleksitas' => $data['indeks_parameter_kompleksitas'] ?? null, + // 'indeks_parameter_permanensi' => $data['indeks_parameter_permanensi'] ?? null, + // 'indeks_parameter_ketinggian' => $data['indeks_parameter_ketinggian'] ?? null, + // 'faktor_kepemilikan' => $data['faktor_kepemilikan'] ?? null, + // 'indeks_terintegrasi' => $data['indeks_terintegrasi'] ?? null, + // 'total' => $data['total'] ?? null, + // ] + // ); return true; }catch (Exception $e){ @@ -190,7 +211,7 @@ class ServiceSIMBG 'created_at' => now(), ]; - $this->syncIndexIntegration($item['uid'], $token); + // $this->syncIndexIntegration($item['uid'], $token); $this->syncTaskDetailSubmit($item['uid'], $token); @@ -209,6 +230,10 @@ class ServiceSIMBG } } + $uuids = array_column($tasksCollective, 'uuid'); + + $this->syncIndexIntegration($uuids, $token); + PbgTask::upsert($tasksCollective, ['uuid'], [ 'name', 'owner_name', 'application_type', 'application_type_name', 'condition', 'registration_number', 'document_number', 'address', 'status', 'status_name',