diff --git a/app/Http/Controllers/Api/DashboardController.php b/app/Http/Controllers/Api/DashboardController.php index ce0e72f..323577b 100644 --- a/app/Http/Controllers/Api/DashboardController.php +++ b/app/Http/Controllers/Api/DashboardController.php @@ -11,11 +11,21 @@ class DashboardController extends Controller { use GlobalApiResponse; - public function businnessDocument(Request $request){ - $query = once(function () { + public function businnessDocument(Request $request) + { + $request->validate([ + "year" => "required|integer" + ]); + + $current_year = $request->get('year'); + + $startOfYear = "$current_year-01-01 00:00:00"; + $endOfYear = "$current_year-12-31 23:59:59"; + $query = once(function () use ($startOfYear, $endOfYear) { return DB::table('pbg_task AS pt') ->leftJoin('pbg_task_google_sheet AS ptgs', 'pt.registration_number', '=', 'ptgs.no_registrasi') ->leftJoin('pbg_task_retributions AS ptr', 'pt.uuid', '=', 'ptr.pbg_task_uid') + ->whereBetween("pt.task_created_at", [$startOfYear, $endOfYear]) ->where(function ($query) { $query->whereRaw('LOWER(TRIM(ptgs.status_verifikasi)) != ?', [strtolower(trim('Selesai Verifikasi'))]) ->orWhereNull('ptgs.status_verifikasi'); @@ -37,11 +47,20 @@ class DashboardController extends Controller ]); } public function nonBusinnessDocument(Request $request){ + $request->validate([ + "year" => "required|integer" + ]); - $query = once( function () { + $current_year = $request->get('year'); + + $startOfYear = "$current_year-01-01 00:00:00"; + $endOfYear = "$current_year-12-31 23:59:59"; + + $query = once( function () use ($startOfYear, $endOfYear) { return DB::table('pbg_task AS pt') ->leftJoin('pbg_task_google_sheet AS ptgs', 'pt.registration_number', '=', 'ptgs.no_registrasi') ->leftJoin('pbg_task_retributions AS ptr', 'pt.uuid', '=', 'ptr.pbg_task_uid') // Join ke pbg_task_retributions + ->whereBetween("pt.task_created_at", [$startOfYear, $endOfYear]) ->where(function ($query) { $query->whereRaw('LOWER(TRIM(ptgs.status_verifikasi)) != ?', [strtolower(trim('Selesai Verifikasi'))]) ->orWhereNull('ptgs.status_verifikasi'); // Include NULL values @@ -61,13 +80,22 @@ class DashboardController extends Controller "total" => $taskTotal ]); } - public function allTaskDocuments(){ - $query = once( function () { - return DB::table('pbg_task') - ->leftJoin('pbg_task_retributions', 'pbg_task.uuid', '=', 'pbg_task_retributions.pbg_task_uid') + public function allTaskDocuments(Request $request){ + $request->validate([ + "year" => "required|integer" + ]); + + $current_year = $request->get('year'); + + $startOfYear = "$current_year-01-01 00:00:00"; + $endOfYear = "$current_year-12-31 23:59:59"; + $query = once( function () use ($startOfYear, $endOfYear) { + return DB::table('pbg_task as pt') + ->leftJoin('pbg_task_retributions as ptr', 'pt.uuid', '=', 'ptr.pbg_task_uid') + ->whereBetween("pt.task_created_at", [$startOfYear, $endOfYear]) ->select( - DB::raw('COUNT(DISTINCT pbg_task.id) as task_count'), - DB::raw('SUM(pbg_task_retributions.nilai_retribusi_bangunan) as total_retribution') + DB::raw('COUNT(DISTINCT pt.id) as task_count'), + DB::raw('SUM(ptr.nilai_retribusi_bangunan) as total_retribution') ) ->first(); }); @@ -79,11 +107,20 @@ class DashboardController extends Controller ]); } - public function verificationDocuments(){ - $query = once( function (){ + public function verificationDocuments(Request $request){ + $request->validate([ + "year" => "required|integer" + ]); + + $current_year = $request->get('year'); + + $startOfYear = "$current_year-01-01 00:00:00"; + $endOfYear = "$current_year-12-31 23:59:59"; + $query = once( function () use ($startOfYear, $endOfYear){ return DB::table('pbg_task AS pt') ->leftJoin('pbg_task_google_sheet AS ptgs', 'pt.registration_number', '=', 'ptgs.no_registrasi') - ->leftJoin('pbg_task_retributions AS ptr', 'pt.uuid', '=', 'ptr.pbg_task_uid') // Menambahkan join ke pbg_task_retributions + ->leftJoin('pbg_task_retributions AS ptr', 'pt.uuid', '=', 'ptr.pbg_task_uid') + ->whereBetween("pt.task_created_at", [$startOfYear, $endOfYear]) ->whereRaw('LOWER(TRIM(ptgs.status_verifikasi)) = ?', [strtolower(trim('Selesai Verifikasi'))]) ->selectRaw('COUNT(pt.id) AS total_data, SUM(ptr.nilai_retribusi_bangunan) AS total_retribution') @@ -99,11 +136,21 @@ class DashboardController extends Controller ]); } - public function nonVerificationDocuments(){ - $query = once(function () { + public function nonVerificationDocuments(Request $request){ + $request->validate([ + "year" => "required|integer" + ]); + + $current_year = $request->get('year'); + + $startOfYear = "$current_year-01-01 00:00:00"; + $endOfYear = "$current_year-12-31 23:59:59"; + + $query = once(function () use ($startOfYear, $endOfYear) { return DB::table('pbg_task AS pt') ->leftJoin('pbg_task_google_sheet AS ptgs', 'pt.registration_number', '=', 'ptgs.no_registrasi') ->leftJoin('pbg_task_retributions AS ptr', 'pt.uuid', '=', 'ptr.pbg_task_uid') // Join tabel pbg_task_retributions + ->whereBetween("pt.task_created_at", [$startOfYear, $endOfYear]) ->where(function ($query) { $query->whereRaw('LOWER(TRIM(ptgs.status_verifikasi)) != ?', [strtolower(trim('Selesai Verifikasi'))]) ->orWhereNull('ptgs.status_verifikasi'); // Include NULL values diff --git a/app/Models/BigdataResume.php b/app/Models/BigdataResume.php new file mode 100644 index 0000000..a0e2407 --- /dev/null +++ b/app/Models/BigdataResume.php @@ -0,0 +1,125 @@ +belongsTo(ImportDatasource::class, 'import_datasource_id'); + } + + public static function generateResumeData($import_datasource_id){ + $query_verified = once( function () { + return DB::table('pbg_task AS pt') + ->leftJoin('pbg_task_google_sheet AS ptgs', 'pt.registration_number', '=', 'ptgs.no_registrasi') + ->leftJoin('pbg_task_retributions AS ptr', 'pt.uuid', '=', 'ptr.pbg_task_uid') + ->whereRaw('LOWER(TRIM(ptgs.status_verifikasi)) = ?', [strtolower(trim('Selesai Verifikasi'))]) + ->selectRaw('COUNT(pt.id) AS total_data, + SUM(ptr.nilai_retribusi_bangunan) AS total_retribution') + ->first(); + }); + + $verified_count = $query_verified->total_data ?? 0; + $verified_total = $query_verified->total_retribution ?? 0; + + $query_business = once(function () { + return DB::table('pbg_task AS pt') + ->leftJoin('pbg_task_google_sheet AS ptgs', 'pt.registration_number', '=', 'ptgs.no_registrasi') + ->leftJoin('pbg_task_retributions AS ptr', 'pt.uuid', '=', 'ptr.pbg_task_uid') + ->where(function ($query) { + $query->whereRaw('LOWER(TRIM(ptgs.status_verifikasi)) != ?', [strtolower(trim('Selesai Verifikasi'))]) + ->orWhereNull('ptgs.status_verifikasi'); + }) + ->where(function ($query) { + $query->whereRaw('LOWER(TRIM(pt.function_type)) = ?', [strtolower(trim('Sebagai Tempat Usaha'))]); + }) + ->selectRaw('COUNT(pt.id) AS total_data, + SUM(ptr.nilai_retribusi_bangunan) AS total_retribution') + ->first(); + }); + + $business_count = $query_business->total_data ?? 0; + $business_total = $query_business->total_retribution ?? 0; + + $query_non_business = once( function () { + return DB::table('pbg_task AS pt') + ->leftJoin('pbg_task_google_sheet AS ptgs', 'pt.registration_number', '=', 'ptgs.no_registrasi') + ->leftJoin('pbg_task_retributions AS ptr', 'pt.uuid', '=', 'ptr.pbg_task_uid') // Join ke pbg_task_retributions + ->where(function ($query) { + $query->whereRaw('LOWER(TRIM(ptgs.status_verifikasi)) != ?', [strtolower(trim('Selesai Verifikasi'))]) + ->orWhereNull('ptgs.status_verifikasi'); // Include NULL values + }) + ->where(function ($query) { + $query->whereRaw('LOWER(TRIM(pt.function_type)) != ?', [strtolower(trim('Sebagai Tempat Usaha'))]) + ->orWhereNull('pt.function_type'); // Include NULL values + }) + ->selectRaw('COUNT(pt.id) AS total_data, + SUM(ptr.nilai_retribusi_bangunan) AS total_retribution') // Menambahkan SUM dari pbg_task_retributions + ->first(); + }); + $non_business_count = $query_non_business->total_data ?? 0; + $non_business_total = $query_non_business->total_retribution ?? 0; + + $query_non_verified = once(function () { + return DB::table('pbg_task AS pt') + ->leftJoin('pbg_task_google_sheet AS ptgs', 'pt.registration_number', '=', 'ptgs.no_registrasi') + ->leftJoin('pbg_task_retributions AS ptr', 'pt.uuid', '=', 'ptr.pbg_task_uid') // Join tabel pbg_task_retributions + ->where(function ($query) { + $query->whereRaw('LOWER(TRIM(ptgs.status_verifikasi)) != ?', [strtolower(trim('Selesai Verifikasi'))]) + ->orWhereNull('ptgs.status_verifikasi'); // Include NULL values + }) + ->selectRaw('COUNT(pt.id) AS total_data, + SUM(ptr.nilai_retribusi_bangunan) AS total_retribution') // Menambahkan SUM dari pbg_task_retributions + ->first(); + }); + + $non_verified_count = $query_non_verified->total_data ?? 0; + $non_verified_total = $query_non_verified->total_retribution ?? 0; + + $query_potention = once( function () { + return DB::table('pbg_task as pt') + ->leftJoin('pbg_task_retributions as ptr', 'pt.uuid', '=', 'ptr.pbg_task_uid') + ->select( + DB::raw('COUNT(DISTINCT pt.id) as task_count'), + DB::raw('SUM(ptr.nilai_retribusi_bangunan) as total_retribution') + ) + ->first(); + }); + $potention_count = $query_potention->task_count ?? 0; + $potention_total = $query_potention->total_retribution ?? 0; + + return self::create([ + 'import_datasource_id' => $import_datasource_id, + 'potention_count' => $potention_count ?? 0, + 'potention_sum' => $potention_total ?? 0.00, + 'non_verified_count' => $non_verified_count ?? 0, + 'non_verified_sum' => $non_verified_total ?? 0.00, + 'verified_count' => $verified_count ?? 0, + 'verified_sum' => $verified_total ?? 0.00, + 'business_count' => $business_count ?? 0, + 'business_sum' => $business_total ?? 0.00, + 'non_business_count' => $non_business_count ?? 0, + 'non_business_sum' => $non_business_total ?? 0.00, + ]); + } +} diff --git a/app/Services/ServiceClient.php b/app/Services/ServiceClient.php index 5a0e199..3f82ac4 100644 --- a/app/Services/ServiceClient.php +++ b/app/Services/ServiceClient.php @@ -46,6 +46,7 @@ class ServiceClient $resultResponse = json_decode($response->getBody(), true); return $this->resSuccess($resultResponse); } catch (Exception $e) { + \Log::error('error from client service'. $e->getMessage()); return $this->resError($e->getMessage()); } } diff --git a/app/Services/ServiceSIMBG.php b/app/Services/ServiceSIMBG.php index 2f8d44b..136adc5 100644 --- a/app/Services/ServiceSIMBG.php +++ b/app/Services/ServiceSIMBG.php @@ -3,6 +3,7 @@ namespace App\Services; use App\Enums\ImportDatasourceStatus; +use App\Models\BigdataResume; use App\Models\GlobalSetting; use App\Models\ImportDatasource; use App\Models\PbgTaskIndexIntegrations; @@ -28,10 +29,10 @@ class ServiceSIMBG */ public function __construct() { - $this->email = trim((string) GlobalSetting::where('key','SIMBG_EMAIL')->first()->value); - $this->password = trim((string) GlobalSetting::where('key','SIMBG_PASSWORD')->first()->value); - $this->simbg_host = trim((string)GlobalSetting::where('key','SIMBG_HOST')->first()->value); - $this->fetch_per_page = trim((string)GlobalSetting::where('key','FETCH_PER_PAGE')->first()->value); + $this->email = trim((string) GlobalSetting::where('key','SIMBG_EMAIL')->firstOrFail()->value); + $this->password = trim((string) GlobalSetting::where('key','SIMBG_PASSWORD')->firstOrFail()->value); + $this->simbg_host = trim((string)GlobalSetting::where('key','SIMBG_HOST')->firstOrFail()->value); + $this->fetch_per_page = trim((string)GlobalSetting::where('key','FETCH_PER_PAGE')->firstOrFail()->value); $this->service_client = new ServiceClient($this->simbg_host); } @@ -59,8 +60,6 @@ class ServiceSIMBG ]; $res = $this->service_client->get($url, $headers); - - Log::info("response index integration", ['res' => $res]); if (empty($res->original['success']) || !$res->original['success']) { // Log error @@ -183,8 +182,22 @@ class ServiceSIMBG 'created_at' => now(), ]; - $this->syncIndexIntegration($item['uid'], $token); - $this->syncTaskDetailSubmit($item['uid'], $token); + $save_integration = $this->syncIndexIntegration($item['uid'], $token); + if (!$save_integration) { + $importDatasource->update([ + 'status' => ImportDatasourceStatus::Failed->value, + 'message' => "Successfully processed: $savedCount, Failed: $failedCount" + ]); + } + + $save_detail = $this->syncTaskDetailSubmit($item['uid'], $token); + if( !$save_detail ) { + $importDatasource->update([ + 'status' => ImportDatasourceStatus::Failed->value, + 'message' => "Successfully processed: $savedCount, Failed: $failedCount" + ]); + } + $savedCount++; } catch (Exception $e) { $failedCount++; @@ -213,6 +226,8 @@ class ServiceSIMBG 'message' => "Successfully processed: $savedCount, Failed: $failedCount" ]); + BigdataResume::generateResumeData($importDatasource->id); + Log::info("syncTaskList completed", ['savedCount' => $savedCount, 'failedCount' => $failedCount]); return $this->resSuccess(['savedCount' => $savedCount, 'failedCount' => $failedCount]); diff --git a/database/migrations/2025_02_12_155941_create_bigdata_resumes_table.php b/database/migrations/2025_02_12_155941_create_bigdata_resumes_table.php new file mode 100644 index 0000000..8a43b69 --- /dev/null +++ b/database/migrations/2025_02_12_155941_create_bigdata_resumes_table.php @@ -0,0 +1,39 @@ +id(); + $table->unsignedBigInteger('import_datasource_id'); + $table->integer('potention_count')->default(0); + $table->decimal('potention_sum', 20, 2)->default(0); + $table->integer('non_verified_count')->default(0); + $table->decimal('non_verified_sum', 20, 2)->default(0); + $table->integer('verified_count')->default(0); + $table->decimal('verified_sum', 20, 2)->default(0); + $table->integer('business_count')->default(0); + $table->decimal('business_sum', 20, 2)->default(0); + $table->integer('non_business_count')->default(0); + $table->decimal('non_business_sum', 20, 2)->default(0); + $table->timestamps(); + $table->foreign('import_datasource_id')->references('id')->on('import_datasources')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('bigdata_resumes'); + } +}; diff --git a/public/build/.vite/manifest.json b/public/build/.vite/manifest.json index e773eed..07051ba 100644 --- a/public/build/.vite/manifest.json +++ b/public/build/.vite/manifest.json @@ -94,16 +94,25 @@ "isEntry": true }, "resources/js/dashboards/bigdata.js": { - "file": "assets/bigdata-C1y9KS-u.js", + "file": "assets/bigdata-DCJUcfXz.js", "name": "bigdata", "src": "resources/js/dashboards/bigdata.js", "isEntry": true, "imports": [ "_global-config-9uDKFQ8j.js" + ], + "css": [ + "assets/flatpickr-CksuuEqD.css" ] }, + "resources/js/data-settings/create.js": { + "file": "assets/create-C1IbeTHP.js", + "name": "create", + "src": "resources/js/data-settings/create.js", + "isEntry": true + }, "resources/js/data-settings/index.js": { - "file": "assets/index-CzuDcG6g.js", + "file": "assets/index-Bm5aE3Il.js", "name": "index", "src": "resources/js/data-settings/index.js", "isEntry": true, @@ -113,8 +122,26 @@ "__commonjsHelpers-C4iS2aBk.js" ] }, + "resources/js/data-settings/update.js": { + "file": "assets/update-nNw3P4hj.js", + "name": "update", + "src": "resources/js/data-settings/update.js", + "isEntry": true + }, + "resources/js/master/users/create.js": { + "file": "assets/create-RO4xgm-f.js", + "name": "create", + "src": "resources/js/master/users/create.js", + "isEntry": true + }, + "resources/js/master/users/update.js": { + "file": "assets/update-DhoG4v8r.js", + "name": "update", + "src": "resources/js/master/users/update.js", + "isEntry": true + }, "resources/js/master/users/users.js": { - "file": "assets/users-BoDXPe3W.js", + "file": "assets/users-uzXjZCws.js", "name": "users", "src": "resources/js/master/users/users.js", "isEntry": true, @@ -124,6 +151,29 @@ "__commonjsHelpers-C4iS2aBk.js" ] }, + "resources/js/menus/create.js": { + "file": "assets/create-ChUgh-yc.js", + "name": "create", + "src": "resources/js/menus/create.js", + "isEntry": true + }, + "resources/js/menus/index.js": { + "file": "assets/index-qw4Wj-LG.js", + "name": "index", + "src": "resources/js/menus/index.js", + "isEntry": true, + "imports": [ + "_gridjs.umd-BiCNXlqL.js", + "_global-config-9uDKFQ8j.js", + "__commonjsHelpers-C4iS2aBk.js" + ] + }, + "resources/js/menus/update.js": { + "file": "assets/update-8JQOGES4.js", + "name": "update", + "src": "resources/js/menus/update.js", + "isEntry": true + }, "resources/js/pages/chart.js": { "file": "assets/chart-DQBoD9wk.js", "name": "chart", @@ -233,6 +283,35 @@ "__commonjsHelpers-C4iS2aBk.js" ] }, + "resources/js/roles/create.js": { + "file": "assets/create-Dd-lHOwF.js", + "name": "create", + "src": "resources/js/roles/create.js", + "isEntry": true + }, + "resources/js/roles/index.js": { + "file": "assets/index-B9clkWIC.js", + "name": "index", + "src": "resources/js/roles/index.js", + "isEntry": true, + "imports": [ + "_gridjs.umd-BiCNXlqL.js", + "_global-config-9uDKFQ8j.js", + "__commonjsHelpers-C4iS2aBk.js" + ] + }, + "resources/js/roles/role_menu.js": { + "file": "assets/role_menu-BuFAi1wM.js", + "name": "role_menu", + "src": "resources/js/roles/role_menu.js", + "isEntry": true + }, + "resources/js/roles/update.js": { + "file": "assets/update-CapXnAP8.js", + "name": "update", + "src": "resources/js/roles/update.js", + "isEntry": true + }, "resources/js/settings/general/general-settings.js": { "file": "assets/general-settings-BoJeYQk1.js", "name": "general-settings", @@ -277,7 +356,7 @@ "isEntry": true }, "resources/scss/style.scss": { - "file": "assets/style-B2v4WMju.css", + "file": "assets/style-B3TufzIa.css", "src": "resources/scss/style.scss", "isEntry": true } diff --git a/resources/js/dashboards/bigdata.js b/resources/js/dashboards/bigdata.js index 13c5771..20653e7 100644 --- a/resources/js/dashboards/bigdata.js +++ b/resources/js/dashboards/bigdata.js @@ -1,16 +1,64 @@ import Big from "big.js"; import GlobalConfig, { addThousandSeparators } from "../global-config.js"; +import flatpickr from "flatpickr"; +import "flatpickr/dist/flatpickr.min.css"; class BigData { async init() { try { - this.totalTargetPAD = await this.getTargetPAD(); - this.resultDataTotal = await this.getDataTotalPotensi(); - this.dataVerification = await this.getDataVerfication(); - this.dataNonVerification = await this.getDataNonVerfication(); - this.dataBusiness = await this.getDataBusiness(); - this.dataNonBusiness = await this.getDataNonBusiness(); - this.dataTataRuang = await this.getDataTataRuang(); + this.filterYear = new Date().getFullYear(); // Set initial year + + let yearInput = document.querySelector("#yearPicker"); + let filterButton = document.querySelector("#btnFilterYear"); + + if (!yearInput || !filterButton) { + console.error( + "Element #yearPicker or #btnFilterYear not found." + ); + return; + } + + // Set default value for input + yearInput.value = this.filterYear; + + // Handle manual input (pressing Enter) + yearInput.addEventListener("keypress", (event) => { + if (event.key === "Enter") { + this.updateYear(yearInput.value); + } + }); + + // Handle button click + filterButton.addEventListener("click", () => { + this.updateYear(yearInput.value); + }); + + console.log("init filter this year", this.filterYear); + + // Load initial data + await this.updateData(this.filterYear); + } catch (error) { + console.error("Error initializing data:", error); + } + } + updateYear(value) { + let inputYear = parseInt(value, 10); + if (!isNaN(inputYear)) { + this.filterYear = inputYear; + this.updateData(this.filterYear); + } else { + console.error("Invalid year input"); + } + } + async updateData(year) { + try { + this.totalTargetPAD = await this.getTargetPAD(year); + this.resultDataTotal = await this.getDataTotalPotensi(year); + this.dataVerification = await this.getDataVerfication(year); + this.dataNonVerification = await this.getDataNonVerfication(year); + this.dataBusiness = await this.getDataBusiness(year); + this.dataNonBusiness = await this.getDataNonBusiness(year); + this.dataTataRuang = await this.getDataTataRuang(year); // total potensi this.bigTargetPAD = new Big(this.totalTargetPAD ?? 0); @@ -54,10 +102,13 @@ class BigData { this.bigTotalNonVerification = new Big( this.dataNonVerification.total ); - this.percentageResultNonVerification = this.bigTotalNonVerification - .div(this.bigTotalPotensi) - .times(100) - .toFixed(2); + this.percentageResultNonVerification = + this.bigTotalNonVerification <= 0 || this.bigTotalPotensi + ? 0 + : this.bigTotalNonVerification + .div(this.bigTotalPotensi) + .times(100) + .toFixed(2); // verification documents this.bigTotalVerification = new Big(this.dataVerification.total); @@ -82,7 +133,8 @@ class BigData { // non-business documents this.bigTotalNonBusiness = new Big(this.dataNonBusiness.total); this.percentageResultNonBusiness = - this.bigTotalNonBusiness <= 0 + this.bigTotalNonBusiness <= 0 || + this.bigTotalNonVerification <= 0 ? 0 : this.bigTotalNonBusiness .div(this.bigTotalNonVerification) @@ -110,10 +162,10 @@ class BigData { } } - async getDataTotalPotensi() { + async getDataTotalPotensi(year) { try { const response = await fetch( - `${GlobalConfig.apiHost}/api/all-task-documents`, + `${GlobalConfig.apiHost}/api/all-task-documents?year=${year}`, { credentials: "include", headers: { @@ -132,7 +184,6 @@ class BigData { const data = await response.json(); return { - seriesData: data.data.series, countData: data.data.count, totalData: data.data.total, }; @@ -142,7 +193,7 @@ class BigData { } } - async getTargetPAD() { + async getTargetPAD(year) { try { const response = await fetch( `${GlobalConfig.apiHost}/api/api-data-settings?search=target_pad`, @@ -160,20 +211,24 @@ class BigData { if (!response.ok) { console.error("Network response was not ok", response); + return 0; } const data = await response.json(); - return data.data[0].value; + const valueTargetPAD = data.data[0]?.value ?? 0; + const currentMonth = new Date().getMonth() + 1; + let result = (currentMonth / 12) * valueTargetPAD; + return result; } catch (error) { console.error("Error fetching chart data:", error); return 0; } } - async getDataVerfication() { + async getDataVerfication(year) { try { const response = await fetch( - `${GlobalConfig.apiHost}/api/verification-documents`, + `${GlobalConfig.apiHost}/api/verification-documents?year=${year}`, { credentials: "include", headers: { @@ -201,10 +256,10 @@ class BigData { } } - async getDataNonVerfication() { + async getDataNonVerfication(year) { try { const response = await fetch( - `${GlobalConfig.apiHost}/api/non-verification-documents`, + `${GlobalConfig.apiHost}/api/non-verification-documents?year=${year}`, { credentials: "include", headers: { @@ -232,10 +287,10 @@ class BigData { } } - async getDataBusiness() { + async getDataBusiness(year) { try { const response = await fetch( - `${GlobalConfig.apiHost}/api/business-documents`, + `${GlobalConfig.apiHost}/api/business-documents?year=${year}`, { credentials: "include", headers: { @@ -263,10 +318,10 @@ class BigData { } } - async getDataNonBusiness() { + async getDataNonBusiness(year) { try { const response = await fetch( - `${GlobalConfig.apiHost}/api/non-business-documents`, + `${GlobalConfig.apiHost}/api/non-business-documents?year=${year}`, { credentials: "include", headers: { diff --git a/resources/views/dashboards/bigdata.blade.php b/resources/views/dashboards/bigdata.blade.php index 0379566..e85123b 100644 --- a/resources/views/dashboards/bigdata.blade.php +++ b/resources/views/dashboards/bigdata.blade.php @@ -55,6 +55,11 @@ MELALUI APLIKASI SIBEDAS PBG + +
+ + +
@component('components.circle', [ 'document_title' => 'Kekurangan Potensi', diff --git a/vite.config.js b/vite.config.js index 7a329eb..30f1961 100755 --- a/vite.config.js +++ b/vite.config.js @@ -47,7 +47,6 @@ export default defineConfig({ //js-additional "resources/js/dashboards/bigdata.js", "resources/js/settings/syncronize/syncronize.js", - "resources/js/data-settings/index.js", "resources/js/pbg-task/index.js", "resources/js/settings/general/general-settings.js", "resources/js/tables/common-table.js", @@ -55,7 +54,7 @@ export default defineConfig({ "resources/js/roles/index.js", "resources/js/roles/create.js", "resources/js/roles/update.js", - "resources/roles/role_menu.js", + "resources/js/roles/role_menu.js", // users "resources/js/master/users/users.js", "resources/js/master/users/create.js", @@ -64,6 +63,10 @@ export default defineConfig({ "resources/js/menus/index.js", "resources/js/menus/create.js", "resources/js/menus/update.js", + //data-settings + "resources/js/data-settings/index.js", + "resources/js/data-settings/create.js", + "resources/js/data-settings/update.js", ], refresh: true, }),