From 8e819eedb57059df15e73b9eab62436e930133fe Mon Sep 17 00:00:00 2001 From: arifal hidayat Date: Sun, 26 Jan 2025 02:21:02 +0700 Subject: [PATCH] add scheduler execute scraping data daily midnight --- app/Console/Commands/ExecuteScraping.php | 34 ++++++++++++++++++++++++ app/Providers/AppServiceProvider.php | 3 ++- app/ServiceSIMBG.php | 30 +++++++++++---------- package-lock.json | 2 +- routes/console.php | 3 +++ 5 files changed, 56 insertions(+), 16 deletions(-) create mode 100644 app/Console/Commands/ExecuteScraping.php diff --git a/app/Console/Commands/ExecuteScraping.php b/app/Console/Commands/ExecuteScraping.php new file mode 100644 index 0000000..77d4e21 --- /dev/null +++ b/app/Console/Commands/ExecuteScraping.php @@ -0,0 +1,34 @@ +syncTaskList(); + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 452e6b6..3666085 100755 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -3,6 +3,7 @@ namespace App\Providers; use Illuminate\Support\ServiceProvider; +use Carbon\Carbon; class AppServiceProvider extends ServiceProvider { @@ -19,6 +20,6 @@ class AppServiceProvider extends ServiceProvider */ public function boot(): void { - // + } } diff --git a/app/ServiceSIMBG.php b/app/ServiceSIMBG.php index 48159af..1b1da42 100644 --- a/app/ServiceSIMBG.php +++ b/app/ServiceSIMBG.php @@ -10,6 +10,8 @@ use App\Models\PbgTaskPrasarana; use App\Models\PbgTaskRetributions; use Exception; use App\Models\PbgTask; +use Illuminate\Support\Facades\Log; + class ServiceSIMBG { private $email; @@ -33,7 +35,7 @@ class ServiceSIMBG $res = $clientHelper->post($url, $body); if(!$res->original['success']){ - \Log::error("Token not retrieved ", ['response' => $res]); + Log::error("Token not retrieved ", ['response' => $res]); return null; } return $res; @@ -47,7 +49,7 @@ class ServiceSIMBG if (!isset($resToken) || empty($resToken->original['data']['token']['access'])) { // Log error - \Log::error("Token not retrieved for syncIndexIntegration", ['uuid' => $uuid]); + Log::error("Token not retrieved for syncIndexIntegration", ['uuid' => $uuid]); return null; } @@ -60,13 +62,13 @@ class ServiceSIMBG if (empty($res->original['success']) || !$res->original['success']) { // Log error - \Log::error("API response indicates failure", ['url' => $url, 'uuid' => $uuid]); + Log::error("API response indicates failure", ['url' => $url, 'uuid' => $uuid]); return null; } $data = $res->original['data']['data'] ?? null; if (!$data) { - \Log::error("No valid data returned from API", ['url' => $url, 'uuid' => $uuid]); + Log::error("No valid data returned from API", ['url' => $url, 'uuid' => $uuid]); return null; } @@ -84,7 +86,7 @@ class ServiceSIMBG ); // Log success - \Log::info("syncIndexIntegration completed successfully", ['uuid' => $uuid]); + Log::info("syncIndexIntegration completed successfully", ['uuid' => $uuid]); } @@ -99,7 +101,7 @@ class ServiceSIMBG ]); if (!isset($resToken) || empty($resToken->original['data']['token']['access'])) { - \Log::error("Token not retrieved for syncTaskList"); + Log::error("Token not retrieved for syncTaskList"); $importDatasource->update([ 'status' => ImportDatasourceStatus::Failed->value, 'message' => 'Failed to retrive token' @@ -120,7 +122,7 @@ class ServiceSIMBG $initialResponse = $clientHelper->get($url, $headers); if (empty($initialResponse->original['data']['total_page'])) { - \Log::error("Invalid response: no total_page", ['response' => $initialResponse->original]); + Log::error("Invalid response: no total_page", ['response' => $initialResponse->original]); $importDatasource->update([ 'status' => ImportDatasourceStatus::Failed->value, 'message' => 'Invalid response: no total_page' @@ -144,7 +146,7 @@ class ServiceSIMBG $response = $clientHelper->get($url, $headers); if (empty($response->original['data']['data'])) { - \Log::warning("No data found on page", ['page' => $currentPage]); + Log::warning("No data found on page", ['page' => $currentPage]); $importDatasource->update([ 'status' => ImportDatasourceStatus::Success->value, 'message' => 'Success but no data loaded on page' @@ -186,7 +188,7 @@ class ServiceSIMBG $this->syncTaskDetailSubmit($item['uid']); $savedCount++; } catch (Exception $e) { - \Log::error("Failed to process task", [ + Log::error("Failed to process task", [ 'error' => $e->getMessage(), 'task' => $item, ]); @@ -211,7 +213,7 @@ class ServiceSIMBG 'message' => "Successfully success data: " .$savedCount. " failed data : " .$failedCount ]); - \Log::info("syncTaskList completed", $result); + Log::info("syncTaskList completed", $result); return ApiResponse::successResponse(json_encode($result), "Successfully saved"); } @@ -223,7 +225,7 @@ class ServiceSIMBG if (!isset($resToken) || empty($resToken->original['data']['token']['access'])) { // Log error - \Log::error("Token not retrieved for syncTaskDetailSubmit"); + Log::error("Token not retrieved for syncTaskDetailSubmit"); return null; } @@ -237,13 +239,13 @@ class ServiceSIMBG if (empty($res->original['success']) || !$res->original['success']) { // Log error - \Log::error("API response indicates failure", ['url' => $url, 'uuid' => $uuid]); + Log::error("API response indicates failure", ['url' => $url, 'uuid' => $uuid]); return null; } $data = $res->original['data']['data'] ?? []; if (empty($data)) { - \Log::error("No data returned from API", ['url' => $url, 'uuid' => $uuid]); + Log::error("No data returned from API", ['url' => $url, 'uuid' => $uuid]); return null; } @@ -300,7 +302,7 @@ class ServiceSIMBG } } - \Log::info("syncTaskDetailSubmit completed successfully", ['uuid' => $uuid]); + Log::info("syncTaskDetailSubmit completed successfully", ['uuid' => $uuid]); } } diff --git a/package-lock.json b/package-lock.json index 6037de1..96d3a4a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "Darkone-Laravel", + "name": "dashboard-pupr", "lockfileVersion": 3, "requires": true, "packages": { diff --git a/routes/console.php b/routes/console.php index eff2ed2..e718d8f 100755 --- a/routes/console.php +++ b/routes/console.php @@ -1,8 +1,11 @@ comment(Inspiring::quote()); })->purpose('Display an inspiring quote')->hourly(); + +Schedule::command("app:execute-scraping")->daily(); \ No newline at end of file