From 5f93a18f60159386380d74cee3e4f34b6b10396d Mon Sep 17 00:00:00 2001 From: arifal Date: Fri, 24 Jan 2025 01:58:06 +0700 Subject: [PATCH] add dashboard, fix get data scraping, fix table --- .env.example | 4 + app/Helpers/ApiResponse.php | 29 + .../Controllers/Api/DashboardController.php | 72 ++ app/Http/Controllers/Api/UsersController.php | 24 + .../Dashboards/BigDataController.php | 13 + app/Http/Controllers/Home/HomeController.php | 2 +- .../Controllers/Master/UsersController.php | 70 ++ .../Settings/SettingsController.php | 17 + .../Settings/SyncronizeController.php | 39 + app/Models/PbgTask.php | 36 + app/Models/PbgTaskIndexIntegrations.php | 24 + app/Models/PbgTaskPrasarana.php | 24 + app/Models/PbgTaskRetributions.php | 38 + app/Models/User.php | 6 +- app/ServiceClient.php | 73 ++ app/ServiceSIMBG.php | 278 ++++++ bootstrap/app.php | 1 - composer.json | 1 + composer.lock | 2 +- config/cors.php | 34 + ...25_01_21_094056_add_firstname_to_users.php | 32 + ...025_01_22_035902_create_pbg_task_table.php | 44 + ...olumn_task_created_at_topbg_task_table.php | 28 + ...217_create_table_pbg_task_retributions.php | 45 + ...113242_create_table_pbg_task_prasarana.php | 35 + ...eate_pbg_task_index_integrations_table.php | 35 + ...ask_uid_to_table_pbg_task_retributions.php | 28 + ...fy_nilai_shst_in_pbg_task_retributions.php | 32 + ...949_modify_total_in_pbg_task_prasarana.php | 28 + database/seeders/DatabaseSeeder.php | 3 + public/images/dputr-kab-bandung.png | Bin 0 -> 23422 bytes public/images/dputr.ico | Bin 0 -> 270398 bytes public/images/logo-dputr.png | Bin 0 -> 35139 bytes resources/js/config.js | 2 +- resources/js/dashboards/bigdata.js | 868 ++++++++++++++++++ resources/js/global-config.js | 12 + .../js/settings/syncronize/syncronize.js | 23 + resources/js/tables/common-table.js | 128 +++ resources/views/auth/signup.blade.php | 6 +- resources/views/dashboards/bigdata.blade.php | 209 +++++ resources/views/home/index.blade.php | 2 +- .../views/layouts/partials/footer.blade.php | 2 +- .../views/layouts/partials/sidebar.blade.php | 53 +- .../layouts/partials/title-meta.blade.php | 11 +- resources/views/master/users/create.blade.php | 54 ++ resources/views/master/users/edit.blade.php | 54 ++ resources/views/master/users/index.blade.php | 25 + resources/views/master/users/show.blade.php | 49 + .../views/settings/general/create.blade.php | 31 + .../views/settings/general/index.blade.php | 24 + .../views/settings/syncronize/index.blade.php | 20 + routes/api.php | 21 + routes/web.php | 38 +- 53 files changed, 2671 insertions(+), 58 deletions(-) create mode 100644 app/Helpers/ApiResponse.php create mode 100644 app/Http/Controllers/Api/DashboardController.php create mode 100644 app/Http/Controllers/Api/UsersController.php create mode 100644 app/Http/Controllers/Dashboards/BigDataController.php create mode 100644 app/Http/Controllers/Master/UsersController.php create mode 100644 app/Http/Controllers/Settings/SettingsController.php create mode 100644 app/Http/Controllers/Settings/SyncronizeController.php create mode 100644 app/Models/PbgTask.php create mode 100644 app/Models/PbgTaskIndexIntegrations.php create mode 100644 app/Models/PbgTaskPrasarana.php create mode 100644 app/Models/PbgTaskRetributions.php create mode 100644 app/ServiceClient.php create mode 100644 app/ServiceSIMBG.php create mode 100644 config/cors.php create mode 100644 database/migrations/2025_01_21_094056_add_firstname_to_users.php create mode 100644 database/migrations/2025_01_22_035902_create_pbg_task_table.php create mode 100644 database/migrations/2025_01_22_105313_add_column_task_created_at_topbg_task_table.php create mode 100644 database/migrations/2025_01_22_113217_create_table_pbg_task_retributions.php create mode 100644 database/migrations/2025_01_22_113242_create_table_pbg_task_prasarana.php create mode 100644 database/migrations/2025_01_22_140748_create_pbg_task_index_integrations_table.php create mode 100644 database/migrations/2025_01_23_031742_add_column_pbg_task_uid_to_table_pbg_task_retributions.php create mode 100644 database/migrations/2025_01_23_043807_modify_nilai_shst_in_pbg_task_retributions.php create mode 100644 database/migrations/2025_01_23_045949_modify_total_in_pbg_task_prasarana.php create mode 100644 public/images/dputr-kab-bandung.png create mode 100644 public/images/dputr.ico create mode 100644 public/images/logo-dputr.png create mode 100644 resources/js/dashboards/bigdata.js create mode 100644 resources/js/global-config.js create mode 100644 resources/js/settings/syncronize/syncronize.js create mode 100644 resources/js/tables/common-table.js create mode 100644 resources/views/dashboards/bigdata.blade.php create mode 100644 resources/views/master/users/create.blade.php create mode 100644 resources/views/master/users/edit.blade.php create mode 100644 resources/views/master/users/index.blade.php create mode 100644 resources/views/master/users/show.blade.php create mode 100644 resources/views/settings/general/create.blade.php create mode 100644 resources/views/settings/general/index.blade.php create mode 100644 resources/views/settings/syncronize/index.blade.php diff --git a/.env.example b/.env.example index a1b3de4..b4fad41 100755 --- a/.env.example +++ b/.env.example @@ -64,3 +64,7 @@ AWS_BUCKET= AWS_USE_PATH_STYLE_ENDPOINT=false VITE_APP_NAME="${APP_NAME}" + +SIMBG_HOST="xxxxxx" +SIMBG_EMAIL="xxxxxx" +SIMBG_PASSWORD="xxxxx" \ No newline at end of file diff --git a/app/Helpers/ApiResponse.php b/app/Helpers/ApiResponse.php new file mode 100644 index 0000000..d5827cb --- /dev/null +++ b/app/Helpers/ApiResponse.php @@ -0,0 +1,29 @@ +json([ + 'success' => true, + 'message' => $message, + 'data' => $data + ]); + } + + public static function errorResponse($message, $statusCode = 400){ + return response()->json([ + 'success' => false, + 'message' => $message, + ], $statusCode); + } +} diff --git a/app/Http/Controllers/Api/DashboardController.php b/app/Http/Controllers/Api/DashboardController.php new file mode 100644 index 0000000..73a5c71 --- /dev/null +++ b/app/Http/Controllers/Api/DashboardController.php @@ -0,0 +1,72 @@ +leftJoin('pbg_task_retributions', 'pbg_task.uuid', '=', 'pbg_task_retributions.pbg_task_uid') + ->select( + DB::raw('COUNT(DISTINCT pbg_task.id) as task_count'), + DB::raw('SUM(pbg_task_retributions.nilai_retribusi_bangunan) as total_retribution') + ) + ->where(function ($query) { + $query->where("pbg_task.function_type", "NOT LIKE", "sebagai tempat usaha%") + ->orWhereNull("pbg_task.function_type"); + }) + ->first(); + $taskCount = $businessData->task_count; + $taskTotal = $businessData->total_retribution; + $result = [ + "count" => $taskCount, + "series" => [$taskCount], + "total" => $taskTotal + ]; + return ApiResponse::successResponse($result, "Successfully count businness doucument"); + } + public function nonBusinnessDocument(Request $request){ + $businessData = DB::table('pbg_task') + ->leftJoin('pbg_task_retributions', 'pbg_task.uuid', '=', 'pbg_task_retributions.pbg_task_uid') + ->select( + DB::raw('COUNT(DISTINCT pbg_task.id) as task_count'), + DB::raw('SUM(pbg_task_retributions.nilai_retribusi_bangunan) as total_retribution') + ) + ->where(function ($query) { + $query->where("pbg_task.function_type", "LIKE", "sebagai tempat usaha%"); + }) + ->first(); + $taskCount = $businessData->task_count; + $taskTotal = $businessData->total_retribution; + $result = [ + "count" => $taskCount, + "series" => [$taskCount], + "total" => $taskTotal + ]; + return ApiResponse::successResponse($result, "Successfully count not businness doucument"); + } + public function allTaskDocuments(){ + $query = DB::table('pbg_task') + ->leftJoin('pbg_task_retributions', 'pbg_task.uuid', '=', 'pbg_task_retributions.pbg_task_uid') + ->select( + DB::raw('COUNT(DISTINCT pbg_task.id) as task_count'), + DB::raw('SUM(pbg_task_retributions.nilai_retribusi_bangunan) as total_retribution') + ) + ->first(); + $taskCount = $query->task_count; + $taskTotal = $query->total_retribution; + $result = [ + "count" => $taskCount, + "series" => [$taskCount], + "total" => $taskTotal + ]; + return ApiResponse::successResponse($result, "Successfully count all tasks documents"); + } +} diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php new file mode 100644 index 0000000..a347152 --- /dev/null +++ b/app/Http/Controllers/Api/UsersController.php @@ -0,0 +1,24 @@ +email)->first(); + + if(!$user || !Hash::check($request->password, $user->password)){ + return response(['message' => 'Invalid credentials'], 401); + } + + $token = $user->createToken($_ENV['APP_KEY'])->plainTextToken; + + return response(['user' => $user, 'token' => $token], 200); + } +} diff --git a/app/Http/Controllers/Dashboards/BigDataController.php b/app/Http/Controllers/Dashboards/BigDataController.php new file mode 100644 index 0000000..7968421 --- /dev/null +++ b/app/Http/Controllers/Dashboards/BigDataController.php @@ -0,0 +1,13 @@ +validate([ + 'name' => ['required', 'string', 'max:255'], + 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], + 'password' => ['required', 'confirmed', Rules\Password::defaults()], + 'firstname' => ['required', 'string', 'max:255'], + 'lastname' => ['required', 'string', 'max:255'], + 'position' => ['required', 'string', 'max:255'] + ]); + + dd($request); + + $user = User::create([ + 'name' => $request->name, + 'email' => $request->email, + 'password' => Hash::make($request->password), + 'firstname' => $request->firstname, + 'lastname' => $request->lastname, + 'position' => $request->position + ]); + + return redirect()->route('master.users')->with('success','Successfully registered'); + } + public function show($id){ + $user = User::find($id); + return view('master.users.show', compact('user')); + } + public function edit($id){ + $user = User::find($id); + return view('master.users.edit', compact('user')); + } + public function update(Request $request, $id){ + $user = User::find($id); + $validate = $request->validate([ + 'name' => ['required', 'string', 'max:255'], + 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], + 'password' => ['required', 'confirmed', Rules\Password::defaults()], + 'firstname' => ['required', 'string', 'max:255'], + 'lastname' => ['required', 'string', 'max:255'], + 'position' => ['required', 'string', 'max:255'] + ]); + $user->update($validate); + return redirect()->route('master.users')->with('success', 'Successfully'); + } + public function destroy($id){ + $user = User::find($id); + $user->delete(); + return redirect()->route('master.users')->with('success','Successfully deleted'); + } +} diff --git a/app/Http/Controllers/Settings/SettingsController.php b/app/Http/Controllers/Settings/SettingsController.php new file mode 100644 index 0000000..1ba3af3 --- /dev/null +++ b/app/Http/Controllers/Settings/SettingsController.php @@ -0,0 +1,17 @@ +syncTaskList(); + return $res; + } + + public function syncronizeTask(Request $request){ + $res = (new ServiceSIMBG())->syncTaskList(); + return redirect()->back()->with('success', 'Processing completed successfully'); + } + + public function getUserToken(){ + $res = (new ServiceSIMBG())->getToken(); + return $res; + } + + public function syncIndexIntegration($uuid){ + $res = (new ServiceSIMBG())->syncIndexIntegration($uuid); + return $res; + } + + public function syncTaskDetailSubmit($uuid){ + $res = (new ServiceSIMBG())->syncTaskDetailSubmit($uuid); + return $res; + } +} diff --git a/app/Models/PbgTask.php b/app/Models/PbgTask.php new file mode 100644 index 0000000..493682b --- /dev/null +++ b/app/Models/PbgTask.php @@ -0,0 +1,36 @@ +hasOne(PbgTaskRetributions::class, 'pbg_task_uid', 'uuid'); + } +} diff --git a/app/Models/PbgTaskIndexIntegrations.php b/app/Models/PbgTaskIndexIntegrations.php new file mode 100644 index 0000000..d0405a0 --- /dev/null +++ b/app/Models/PbgTaskIndexIntegrations.php @@ -0,0 +1,24 @@ +belongsTo(PbgTask::class, 'pbg_task_uid', 'uuid'); + } +} diff --git a/app/Models/User.php b/app/Models/User.php index 3dfbd80..3c1f934 100755 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -6,11 +6,12 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; +use Laravel\Sanctum\HasApiTokens; class User extends Authenticatable { /** @use HasFactory<\Database\Factories\UserFactory> */ - use HasFactory, Notifiable; + use HasFactory, Notifiable, HasApiTokens; /** * The attributes that are mass assignable. @@ -21,6 +22,9 @@ class User extends Authenticatable 'name', 'email', 'password', + 'firstname', + 'lastname', + 'position' ]; /** diff --git a/app/ServiceClient.php b/app/ServiceClient.php new file mode 100644 index 0000000..5518d49 --- /dev/null +++ b/app/ServiceClient.php @@ -0,0 +1,73 @@ +client = new Client(); + $this->baseUrl = $baseUrl; + $this->headers = array_merge( + [ + 'Accept' => 'application/json', + 'Content-Type' => 'application/json' + ], + $headers + ); + } + + public function makeRequest($url, $method = 'GET', $body = null, $headers = []){ + try { + + $headers = array_merge($this->headers, $headers); + + $options = [ + 'headers' => $headers, + ]; + + if ($body) { + $options['json'] = $body; // Guzzle akan mengonversi array ke JSON + } + + $response = $this->client->request($method, $this->baseUrl . $url, $options); + + $resultResponse = json_decode($response->getBody(), true); + return ApiResponse::successResponse($resultResponse, "Successfully fetched data"); + } catch (Exception $e) { + return ApiResponse::errorResponse($e->getMessage(), $e->getCode()); + } + } + + // Fungsi untuk melakukan permintaan GET + public function get($url, $headers = []) + { + return $this->makeRequest($url, 'GET', null, $headers); + } + + // Fungsi untuk melakukan permintaan POST + public function post($url, $body, $headers = []) + { + return $this->makeRequest($url, 'POST', $body, $headers); + } + + // Fungsi untuk melakukan permintaan PUT + public function put($url, $body, $headers = []) + { + return $this->makeRequest($url, 'PUT', $body, $headers); + } + + // Fungsi untuk melakukan permintaan DELETE + public function delete($url, $headers = []) + { + return $this->makeRequest($url, 'DELETE', null, $headers); + } +} diff --git a/app/ServiceSIMBG.php b/app/ServiceSIMBG.php new file mode 100644 index 0000000..bff6674 --- /dev/null +++ b/app/ServiceSIMBG.php @@ -0,0 +1,278 @@ +email = $_ENV['SIMBG_EMAIL']; + $this->password = $_ENV['SIMBG_PASSWORD']; + } + + public function getToken(){ + $clientHelper = new ServiceClient($_ENV['SIMBG_HOST']); + $url = "api/user/v1/auth/login/"; + $body = [ + 'email' => $this->email, + 'password' => $this->password, + ]; + + $res = $clientHelper->post($url, $body); + if(!$res->original['success']){ + return null; + } + return $res; + } + + public function syncIndexIntegration($uuid) + { + $clientHelper = new ServiceClient($_ENV['SIMBG_HOST']); + $url = "api/pbg/v1/detail/" . $uuid . "/retribution/indeks-terintegrasi/"; + $resToken = $this->getToken(); + + if (!isset($resToken) || empty($resToken->original['data']['token']['access'])) { + // Log error + \Log::error("Token not retrieved for syncIndexIntegration", ['uuid' => $uuid]); + return null; + } + + $apiToken = $resToken->original['data']['token']['access']; + $headers = [ + 'Authorization' => "Bearer " . $apiToken, + ]; + + $res = $clientHelper->get($url, $headers); + + if (empty($res->original['success']) || !$res->original['success']) { + // Log error + \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]); + return null; + } + + 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, + ] + ); + + // Log success + \Log::info("syncIndexIntegration completed successfully", ['uuid' => $uuid]); + } + + + public function syncTaskList() + { + $clientHelper = new ServiceClient($_ENV['SIMBG_HOST']); + $resToken = $this->getToken(); + + if (!isset($resToken) || empty($resToken->original['data']['token']['access'])) { + \Log::error("Token not retrieved for syncTaskList"); + return ApiResponse::errorResponse("Failed to retrieve token", 401); + } + + $apiToken = $resToken->original['data']['token']['access']; + $queryParams = http_build_query([ + 'page' => 1, + 'size' => 20, + 'sort' => 'ASC', + 'type' => 'task', + ]); + + $url = "api/pbg/v1/list/?" . $queryParams; + $headers = ['Authorization' => "Bearer " . $apiToken]; + + $initialResponse = $clientHelper->get($url, $headers); + if (empty($initialResponse->original['data']['total_page'])) { + \Log::error("Invalid response: no total_page", ['response' => $initialResponse->original]); + return ApiResponse::errorResponse("Invalid response from API", 400); + } + + $totalPage = $initialResponse->original['data']['total_page']; + $savedCount = 0; + $failedCount = 0; + + for ($currentPage = 1; $currentPage <= $totalPage; $currentPage++) { + $queryParams = http_build_query([ + 'page' => $currentPage, + 'size' => 20, + 'sort' => 'ASC', + 'type' => 'task', + ]); + + $url = "api/pbg/v1/list/?" . $queryParams; + $response = $clientHelper->get($url, $headers); + + if (empty($response->original['data']['data'])) { + \Log::warning("No data found on page", ['page' => $currentPage]); + continue; + } + + foreach ($response->original['data']['data'] as $item) { + try { + $taskCreatedAt = isset($item['created_at']) + ? \Carbon\Carbon::parse($item['created_at'])->format('Y-m-d H:i:s') + : null; + PbgTask::updateOrCreate( + [ + 'uuid' => $item['uid'], + ], + [ + 'name' => $item['name'], + 'owner_name' => $item['owner_name'], + 'application_type' => $item['application_type'], + 'application_type_name' => $item['application_type_name'], + 'condition' => $item['condition'], + 'registration_number' => $item['registration_number'], + 'document_number' => $item['document_number'], + 'address' => $item['address'], + 'status' => $item['status'], + 'status_name' => $item['status_name'], + 'slf_status' => $item['slf_status'] ?? null, + 'slf_status_name' => $item['slf_status_name'] ?? null, + 'function_type' => $item['function_type'], + 'consultation_type' => $item['consultation_type'], + 'due_date' => $item['due_date'], + 'land_certificate_phase' => $item['land_certificate_phase'], + 'task_created_at' => $taskCreatedAt, + ] + ); + + // Synchronize additional details + $this->syncIndexIntegration($item['uid']); + $this->syncTaskDetailSubmit($item['uid']); + $savedCount++; + } catch (Exception $e) { + \Log::error("Failed to process task", [ + 'error' => $e->getMessage(), + 'task' => $item, + ]); + $failedCount++; + } + } + } + + $result = [ + "savedCount" => $savedCount, + "failedCount" => $failedCount, + ]; + + \Log::info("syncTaskList completed", $result); + + return ApiResponse::successResponse(json_encode($result), "Successfully saved"); + } + + + public function syncTaskDetailSubmit($uuid) + { + $clientHelper = new ServiceClient($_ENV['SIMBG_HOST']); + $resToken = $this->getToken(); + + if (!isset($resToken) || empty($resToken->original['data']['token']['access'])) { + // Log error + \Log::error("Token not retrieved for syncTaskDetailSubmit"); + return null; + } + + $apiToken = $resToken->original['data']['token']['access']; + $url = "api/pbg/v1/detail/" . $uuid . "/retribution/submit/"; + $headers = [ + 'Authorization' => "Bearer " . $apiToken, + ]; + + $res = $clientHelper->get($url, $headers); + + if (empty($res->original['success']) || !$res->original['success']) { + // Log error + \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]); + return null; + } + + $detailCreatedAt = isset($data['created_at']) + ? \Carbon\Carbon::parse($data['created_at'])->format('Y-m-d H:i:s') + : null; + + $detailUpdatedAt = isset($data['updated_at']) + ? \Carbon\Carbon::parse($data['updated_at'])->format('Y-m-d H:i:s') + : null; + + PbgTaskRetributions::updateOrCreate( + ['detail_id' => $data['id']], + [ + 'detail_uid' => $data['uid'] ?? null, + 'detail_created_at' => $detailCreatedAt ?? null, + 'detail_updated_at' => $detailUpdatedAt ?? null, + 'luas_bangunan' => $data['luas_bangunan'] ?? null, + 'indeks_lokalitas' => $data['indeks_lokalitas'] ?? null, + 'wilayah_shst' => $data['wilayah_shst'] ?? null, + 'kegiatan_id' => $data['kegiatan']['id'] ?? null, + 'kegiatan_name' => $data['kegiatan']['name'] ?? null, + 'nilai_shst' => $data['nilai_shst'] ?? null, + 'indeks_terintegrasi' => $data['indeks_terintegrasi'] ?? null, + 'indeks_bg_terbangun' => $data['indeks_bg_terbangun'] ?? null, + 'nilai_retribusi_bangunan' => $data['nilai_retribusi_bangunan'] ?? null, + 'nilai_prasarana' => $data['nilai_prasarana'] ?? null, + 'created_by' => $data['created_by'] ?? null, + 'pbg_document' => $data['pbg_document'] ?? null, + 'underpayment' => $data['underpayment'] ?? null, + 'skrd_amount' => $data['skrd_amount'] ?? null, + 'pbg_task_uid' => $uuid, + ] + ); + + $prasaranaData = $data['prasarana'] ?? []; + if (is_array($prasaranaData) && count($prasaranaData) > 0) { + foreach ($prasaranaData as $item) { + PbgTaskPrasarana::updateOrCreate( + [ + 'pbg_task_uid' => $uuid, + 'prasarana_id' => $item['id'] ?? null, + ], + [ + 'pbg_task_uid' => $uuid, + 'prasarana_type' => $item['prasarana_type'] ?? null, + 'building_type' => $item['building_type'] ?? null, + 'total' => $item['total'] ?? null, + 'quantity' => $item['quantity'] ?? null, + 'unit' => $item['unit'] ?? null, + 'index_prasarana' => $item['index_prasarana'] ?? null, + ] + ); + } + } + + \Log::info("syncTaskDetailSubmit completed successfully", ['uuid' => $uuid]); + } + +} + diff --git a/bootstrap/app.php b/bootstrap/app.php index c26e3d1..1c8e87b 100755 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -13,7 +13,6 @@ return Application::configure(basePath: dirname(__DIR__)) health: '/up', ) ->withMiddleware(function (Middleware $middleware) { - // $middleware->redirectGuestsTo('/auth/signin'); }) ->withExceptions(function (Exceptions $exceptions) { $exceptions->render(function (HttpException $exception){ diff --git a/composer.json b/composer.json index 71e9119..7ae003f 100755 --- a/composer.json +++ b/composer.json @@ -7,6 +7,7 @@ "license": "MIT", "require": { "php": "^8.2", + "guzzlehttp/guzzle": "^7.9", "laravel/framework": "^11.31", "laravel/sanctum": "^4.0", "laravel/tinker": "^2.9" diff --git a/composer.lock b/composer.lock index a76e7ea..f63b203 100755 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f60f8b6e279e6de64f92f6b9fb420141", + "content-hash": "7bb7c3b4b4eb50972252c4683f797104", "packages": [ { "name": "brick/math", diff --git a/config/cors.php b/config/cors.php new file mode 100644 index 0000000..8a39e6d --- /dev/null +++ b/config/cors.php @@ -0,0 +1,34 @@ + ['api/*', 'sanctum/csrf-cookie'], + + 'allowed_methods' => ['*'], + + 'allowed_origins' => ['*'], + + 'allowed_origins_patterns' => [], + + 'allowed_headers' => ['*'], + + 'exposed_headers' => [], + + 'max_age' => 0, + + 'supports_credentials' => false, + +]; diff --git a/database/migrations/2025_01_21_094056_add_firstname_to_users.php b/database/migrations/2025_01_21_094056_add_firstname_to_users.php new file mode 100644 index 0000000..ff0e1b5 --- /dev/null +++ b/database/migrations/2025_01_21_094056_add_firstname_to_users.php @@ -0,0 +1,32 @@ +string('firstname'); + $table->string('lastname'); + $table->string('position'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('firstname'); + $table->dropColumn('lastname'); + $table->dropColumn('position'); + }); + } +}; diff --git a/database/migrations/2025_01_22_035902_create_pbg_task_table.php b/database/migrations/2025_01_22_035902_create_pbg_task_table.php new file mode 100644 index 0000000..eefda07 --- /dev/null +++ b/database/migrations/2025_01_22_035902_create_pbg_task_table.php @@ -0,0 +1,44 @@ +id(); + $table->string('uuid'); + $table->string('name')->nullable(); + $table->string('owner_name')->nullable(); + $table->string('application_type')->nullable(); + $table->string('application_type_name')->nullable(); + $table->string('condition')->nullable(); + $table->string('registration_number')->nullable(); + $table->string('document_number')->nullable(); + $table->string('address')->nullable(); + $table->integer('status')->nullable(); + $table->string('status_name')->nullable(); + $table->string('slf_status')->nullable(); + $table->string('slf_status_name')->nullable(); + $table->string('function_type')->nullable(); + $table->string('consultation_type')->nullable(); + $table->date('due_date')->nullable(); + $table->boolean('land_certificate_phase')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('pbg_task'); + } +}; diff --git a/database/migrations/2025_01_22_105313_add_column_task_created_at_topbg_task_table.php b/database/migrations/2025_01_22_105313_add_column_task_created_at_topbg_task_table.php new file mode 100644 index 0000000..7df9cdc --- /dev/null +++ b/database/migrations/2025_01_22_105313_add_column_task_created_at_topbg_task_table.php @@ -0,0 +1,28 @@ +timestamp('task_created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('pbg_task', function (Blueprint $table){ + $table->dropColumn('task_created_at'); + }); + } +}; diff --git a/database/migrations/2025_01_22_113217_create_table_pbg_task_retributions.php b/database/migrations/2025_01_22_113217_create_table_pbg_task_retributions.php new file mode 100644 index 0000000..2575499 --- /dev/null +++ b/database/migrations/2025_01_22_113217_create_table_pbg_task_retributions.php @@ -0,0 +1,45 @@ +id(); + $table->integer('detail_id')->nullable(); + $table->timestamp('detail_created_at')->nullable(); + $table->timestamp('detail_updated_at')->nullable(); + $table->string('detail_uid')->nullable(); + $table->decimal('luas_bangunan')->nullable(); + $table->decimal('indeks_lokalitas', 10,4)->nullable(); + $table->string('wilayah_shst')->nullable(); + $table->integer('kegiatan_id')->nullable(); + $table->string('kegiatan_name')->nullable(); + $table->decimal('nilai_shst')->nullable(); + $table->decimal('indeks_terintegrasi')->nullable(); + $table->decimal('indeks_bg_terbangun')->nullable(); + $table->decimal('nilai_retribusi_bangunan')->nullable(); + $table->decimal('nilai_prasarana')->nullable(); + $table->integer('created_by')->nullable(); + $table->integer('pbg_document')->nullable(); + $table->integer('underpayment')->nullable(); + $table->decimal('skrd_amount')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('pbg_task_retributions'); + } +}; diff --git a/database/migrations/2025_01_22_113242_create_table_pbg_task_prasarana.php b/database/migrations/2025_01_22_113242_create_table_pbg_task_prasarana.php new file mode 100644 index 0000000..d75b897 --- /dev/null +++ b/database/migrations/2025_01_22_113242_create_table_pbg_task_prasarana.php @@ -0,0 +1,35 @@ +id(); + $table->string('pbg_task_uid')->nullable(); + $table->integer('prasarana_id')->nullable(); + $table->string('prasarana_type')->nullable(); + $table->string('building_type')->nullable(); + $table->decimal('total')->nullable(); + $table->decimal('quantity')->nullable(); + $table->string('unit')->nullable(); + $table->decimal('index_prasarana')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('pbg_task_prasarana'); + } +}; diff --git a/database/migrations/2025_01_22_140748_create_pbg_task_index_integrations_table.php b/database/migrations/2025_01_22_140748_create_pbg_task_index_integrations_table.php new file mode 100644 index 0000000..43df9f0 --- /dev/null +++ b/database/migrations/2025_01_22_140748_create_pbg_task_index_integrations_table.php @@ -0,0 +1,35 @@ +id(); + $table->string('pbg_task_uid')->nullable(); + $table->string('indeks_fungsi_bangunan')->nullable(); + $table->string('indeks_parameter_kompleksitas')->nullable(); + $table->string('indeks_parameter_permanensi')->nullable(); + $table->string('indeks_parameter_ketinggian')->nullable(); + $table->string('faktor_kepemilikan')->nullable(); + $table->string('indeks_terintegrasi')->nullable(); + $table->decimal('total')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('pbg_task_index_integrations'); + } +}; diff --git a/database/migrations/2025_01_23_031742_add_column_pbg_task_uid_to_table_pbg_task_retributions.php b/database/migrations/2025_01_23_031742_add_column_pbg_task_uid_to_table_pbg_task_retributions.php new file mode 100644 index 0000000..72dc36b --- /dev/null +++ b/database/migrations/2025_01_23_031742_add_column_pbg_task_uid_to_table_pbg_task_retributions.php @@ -0,0 +1,28 @@ +string('pbg_task_uid')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('pbg_task_retributions', function (Blueprint $table) { + $table->dropColumn('pbg_task_uid'); + }); + } +}; diff --git a/database/migrations/2025_01_23_043807_modify_nilai_shst_in_pbg_task_retributions.php b/database/migrations/2025_01_23_043807_modify_nilai_shst_in_pbg_task_retributions.php new file mode 100644 index 0000000..59da548 --- /dev/null +++ b/database/migrations/2025_01_23_043807_modify_nilai_shst_in_pbg_task_retributions.php @@ -0,0 +1,32 @@ +decimal('nilai_shst', 20,2)->nullable()->change(); + $table->decimal('nilai_retribusi_bangunan', 20,2)->nullable()->change(); + $table->decimal('indeks_terintegrasi', 20,15)->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('pbg_task_retributions', function (Blueprint $table) { + $table->decimal('nilai_shst', 20,2)->nullable()->change(); + $table->decimal('nilai_retribusi_bangunan',20,2)->nullable()->change(); + $table->decimal('indeks_terintegrasi',20,15)->nullable()->change(); + }); + } +}; diff --git a/database/migrations/2025_01_23_045949_modify_total_in_pbg_task_prasarana.php b/database/migrations/2025_01_23_045949_modify_total_in_pbg_task_prasarana.php new file mode 100644 index 0000000..b926789 --- /dev/null +++ b/database/migrations/2025_01_23_045949_modify_total_in_pbg_task_prasarana.php @@ -0,0 +1,28 @@ +decimal('total', 20,2)->nullable()->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('pbg_task_prasarana', function (Blueprint $table) { + $table->decimal('total',20,2)->nullable()->change(); + }); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 5166a2e..cb6f7dc 100755 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -22,6 +22,9 @@ class DatabaseSeeder extends Seeder 'email' => 'user@demo.com', 'email_verified_at' => now(), 'password' => Hash::make('password'), + 'firstname' => 'John', + 'lastname' => 'Doe', + 'position' => 'crusial', 'remember_token' => Str::random(10), ]); } diff --git a/public/images/dputr-kab-bandung.png b/public/images/dputr-kab-bandung.png new file mode 100644 index 0000000000000000000000000000000000000000..eef1f4c361afd2ef0d41ecf2edcbb69fe46cf08c GIT binary patch literal 23422 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υ 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 D&+At+ literal 0 HcmV?d00001 diff --git a/public/images/logo-dputr.png b/public/images/logo-dputr.png new file mode 100644 index 0000000000000000000000000000000000000000..b31c941874bc20ee39bbe84d91f1eb391b2d2674 GIT binary patch literal 35139 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 literal 0 HcmV?d00001 diff --git a/resources/js/config.js b/resources/js/config.js index da3ebf5..c6f0bc7 100755 --- a/resources/js/config.js +++ b/resources/js/config.js @@ -26,4 +26,4 @@ window.innerWidth <= 1140 ? e.setAttribute("data-sidebar-size", "hidden") : e.setAttribute("data-sidebar-size", config.menu.size)); -})(); +})(); \ No newline at end of file diff --git a/resources/js/dashboards/bigdata.js b/resources/js/dashboards/bigdata.js new file mode 100644 index 0000000..4dbfa7d --- /dev/null +++ b/resources/js/dashboards/bigdata.js @@ -0,0 +1,868 @@ +import ApexCharts from "apexcharts"; + +import jsVectorMap from "jsvectormap/dist/jsvectormap.js"; +import 'jsvectormap/dist/maps/world-merc.js'; +import 'jsvectormap/dist/maps/world.js'; +import GlobalConfig, {addThousandSeparators} from '../global-config.js'; + +class BigData { + init(){ + this.initChartKekuranganPotensi(); + this.initChartTargetPAD(); + this.initChartUsaha(); + this.initChartNonUsaha(); + } + + initChartTargetPAD() { + console.log("api host : " + GlobalConfig.apiHost); + fetch(`${GlobalConfig.apiHost}/api/all-task-documents`) + .then(response => { + if(!response.ok){ + throw new Error("Network response was not ok"); + } + return response.json(); + }) + .then(data => { + const seriesData = data.data.series; + document.getElementById("countTargetPAD").innerText = `${data.data.count} Berkas`; + document.getElementById("totalTargetPAD").innerText = `Rp.${addThousandSeparators(data.data.total)}`; + var options1 = { + chart: { + type: 'area', + height: 50, + sparkline: { + enabled: true + } + }, + series: [{ + data: seriesData + }], + stroke: { + width: 2, + curve: 'smooth' + }, + markers: { + size: 0 + }, + colors: ["#7e67fe"], + tooltip: { + fixed: { + enabled: false + }, + x: { + show: false + }, + y: { + title: { + formatter: function (seriesName) { + return '' + } + } + }, + marker: { + show: false + } + }, + fill: { + opacity: [1], + type: ['gradient'], + gradient: { + type: "vertical", + // shadeIntensity: 1, + inverseColors: false, + opacityFrom: 0.5, + opacityTo: 0, + stops: [0, 100] + }, + }, + } + + new ApexCharts(document.querySelector("#chart12"), options1).render(); + }) + .catch(error => { + console.error("error fetching chart dara : ", error); + }); + } + + initChartUsaha(){ + fetch(`${GlobalConfig.apiHost}/api/business-documents`) + .then(response => { + if(!response.ok){ + throw new Error("Network response was not ok"); + } + return response.json(); + }) + .then(data => { + const seriesData = data.data.series; + document.getElementById("countBusinessDocuments").innerText = `${data.data.count} Berkas`; + document.getElementById("totalBusinessDocuments").innerText = `Rp.${addThousandSeparators(data.data.total)}`; + var options1 = { + chart: { + type: 'area', + height: 50, + sparkline: { + enabled: true + } + }, + series: [{ + data: seriesData + }], + stroke: { + width: 2, + curve: 'smooth' + }, + markers: { + size: 0 + }, + colors: ["#7e67fe"], + tooltip: { + fixed: { + enabled: false + }, + x: { + show: false + }, + y: { + title: { + formatter: function (seriesName) { + return '' + } + } + }, + marker: { + show: false + } + }, + fill: { + opacity: [1], + type: ['gradient'], + gradient: { + type: "vertical", + // shadeIntensity: 1, + inverseColors: false, + opacityFrom: 0.5, + opacityTo: 0, + stops: [0, 100] + }, + }, + } + + new ApexCharts(document.querySelector("#chartBusinessDocuments"), options1).render(); + }) + .catch(error => { + console.error("error fetching chart dara : ", error); + }); + } + + initChartNonUsaha(){ + fetch(`${GlobalConfig.apiHost}/api/non-business-documents`) + .then(response => { + if(!response.ok){ + throw new Error("Network response was not ok"); + } + return response.json(); + }) + .then(data => { + const seriesData = data.data.series; + document.getElementById("countNonUsaha").innerText = `${data.data.count} Berkas`; + document.getElementById("totalNonUsaha").innerText = `Rp.${addThousandSeparators(data.data.total)}`; + var options1 = { + chart: { + type: 'area', + height: 50, + sparkline: { + enabled: true + } + }, + series: [{ + data: seriesData + }], + stroke: { + width: 2, + curve: 'smooth' + }, + markers: { + size: 0 + }, + colors: ["#7e67fe"], + tooltip: { + fixed: { + enabled: false + }, + x: { + show: false + }, + y: { + title: { + formatter: function (seriesName) { + return '' + } + } + }, + marker: { + show: false + } + }, + fill: { + opacity: [1], + type: ['gradient'], + gradient: { + type: "vertical", + // shadeIntensity: 1, + inverseColors: false, + opacityFrom: 0.5, + opacityTo: 0, + stops: [0, 100] + }, + }, + } + + new ApexCharts(document.querySelector("#chartNonUsaha"), options1).render(); + }) + .catch(error => { + console.error("error fetching chart dara : ", error); + }); + } + + initChartKekuranganPotensi(){ + var options1 = { + chart: { + type: 'area', + height: 50, + sparkline: { + enabled: true + } + }, + series: [{ + data: [80, 100, 50, 30, 90] + }], + stroke: { + width: 2, + curve: 'smooth' + }, + markers: { + size: 0 + }, + colors: ["#7e67fe"], + tooltip: { + fixed: { + enabled: false + }, + x: { + show: false + }, + y: { + title: { + formatter: function (seriesName) { + return '' + } + } + }, + marker: { + show: false + } + }, + fill: { + opacity: [1], + type: ['gradient'], + gradient: { + type: "vertical", + // shadeIntensity: 1, + inverseColors: false, + opacityFrom: 0.5, + opacityTo: 0, + stops: [0, 100] + }, + }, + } + + new ApexCharts(document.querySelector("#chart01"), options1).render(); + + var options1 = { + chart: { + type: 'area', + height: 50, + sparkline: { + enabled: true + } + }, + series: [{ + data: [87, 54, 4, 76, 31, 95, 70, 92, 53, 9, 6] + }], + stroke: { + width: 2, + curve: 'smooth' + }, + markers: { + size: 0 + }, + colors: ["#7e67fe"], + tooltip: { + fixed: { + enabled: false + }, + x: { + show: false + }, + y: { + title: { + formatter: function (seriesName) { + return '' + } + } + }, + marker: { + show: false + } + }, + fill: { + opacity: [1], + type: ['gradient'], + gradient: { + type: "vertical", + // shadeIntensity: 1, + inverseColors: false, + opacityFrom: 0.5, + opacityTo: 0, + stops: [0, 100] + }, + }, + } + + new ApexCharts(document.querySelector("#chart02"), options1).render(); + + var options1 = { + chart: { + type: 'area', + height: 50, + sparkline: { + enabled: true + } + }, + series: [{ + data: [41, 42, 35, 42, 6, 12, 13, 22, 42, 94, 95] + }], + stroke: { + width: 2, + curve: 'smooth' + }, + markers: { + size: 0 + }, + colors: ["#7e67fe"], + tooltip: { + fixed: { + enabled: false + }, + x: { + show: false + }, + y: { + title: { + formatter: function (seriesName) { + return '' + } + } + }, + marker: { + show: false + } + }, + fill: { + opacity: [1], + type: ['gradient'], + gradient: { + type: "vertical", + // shadeIntensity: 1, + inverseColors: false, + opacityFrom: 0.5, + opacityTo: 0, + stops: [0, 100] + }, + }, + } + + new ApexCharts(document.querySelector("#chart03"), options1).render(); + + // var options1 = { + // chart: { + // type: 'area', + // height: 50, + // sparkline: { + // enabled: true + // } + // }, + // series: [{ + // data: [8, 41, 40, 48, 77, 35, 0, 77, 63, 100, 71] + // }], + // stroke: { + // width: 2, + // curve: 'smooth' + // }, + // markers: { + // size: 0 + // }, + // colors: ["#7e67fe"], + // tooltip: { + // fixed: { + // enabled: false + // }, + // x: { + // show: false + // }, + // y: { + // title: { + // formatter: function (seriesName) { + // return '' + // } + // } + // }, + // marker: { + // show: false + // } + // }, + // fill: { + // opacity: [1], + // type: ['gradient'], + // gradient: { + // type: "vertical", + // // shadeIntensity: 1, + // inverseColors: false, + // opacityFrom: 0.5, + // opacityTo: 0, + // stops: [0, 100] + // }, + // }, + // } + + // new ApexCharts(document.querySelector("#chart04"), options1).render(); + + // var options1 = { + // chart: { + // type: 'area', + // height: 50, + // sparkline: { + // enabled: true + // } + // }, + // series: [{ + // data: [80, 100, 50, 30, 90] + // }], + // stroke: { + // width: 2, + // curve: 'smooth' + // }, + // markers: { + // size: 0 + // }, + // colors: ["#7e67fe"], + // tooltip: { + // fixed: { + // enabled: false + // }, + // x: { + // show: false + // }, + // y: { + // title: { + // formatter: function (seriesName) { + // return '' + // } + // } + // }, + // marker: { + // show: false + // } + // }, + // fill: { + // opacity: [1], + // type: ['gradient'], + // gradient: { + // type: "vertical", + // // shadeIntensity: 1, + // inverseColors: false, + // opacityFrom: 0.5, + // opacityTo: 0, + // stops: [0, 100] + // }, + // }, + // } + + // new ApexCharts(document.querySelector("#chart05"), options1).render(); + + var options1 = { + chart: { + type: 'area', + height: 50, + sparkline: { + enabled: true + } + }, + series: [{ + data: [87, 54, 4, 76, 31, 95, 70, 92, 53, 9, 6] + }], + stroke: { + width: 2, + curve: 'smooth' + }, + markers: { + size: 0 + }, + colors: ["#7e67fe"], + tooltip: { + fixed: { + enabled: false + }, + x: { + show: false + }, + y: { + title: { + formatter: function (seriesName) { + return '' + } + } + }, + marker: { + show: false + } + }, + fill: { + opacity: [1], + type: ['gradient'], + gradient: { + type: "vertical", + // shadeIntensity: 1, + inverseColors: false, + opacityFrom: 0.5, + opacityTo: 0, + stops: [0, 100] + }, + }, + } + + new ApexCharts(document.querySelector("#chart06"), options1).render(); + + var options1 = { + chart: { + type: 'area', + height: 50, + sparkline: { + enabled: true + } + }, + series: [{ + data: [41, 42, 35, 42, 6, 12, 13, 22, 42, 94, 95] + }], + stroke: { + width: 2, + curve: 'smooth' + }, + markers: { + size: 0 + }, + colors: ["#7e67fe"], + tooltip: { + fixed: { + enabled: false + }, + x: { + show: false + }, + y: { + title: { + formatter: function (seriesName) { + return '' + } + } + }, + marker: { + show: false + } + }, + fill: { + opacity: [1], + type: ['gradient'], + gradient: { + type: "vertical", + // shadeIntensity: 1, + inverseColors: false, + opacityFrom: 0.5, + opacityTo: 0, + stops: [0, 100] + }, + }, + } + + new ApexCharts(document.querySelector("#chart07"), options1).render(); + + var options1 = { + chart: { + type: 'area', + height: 50, + sparkline: { + enabled: true + } + }, + series: [{ + data: [8, 41, 40, 48, 77, 35, 0, 77, 63, 100, 71] + }], + stroke: { + width: 2, + curve: 'smooth' + }, + markers: { + size: 0 + }, + colors: ["#7e67fe"], + tooltip: { + fixed: { + enabled: false + }, + x: { + show: false + }, + y: { + title: { + formatter: function (seriesName) { + return '' + } + } + }, + marker: { + show: false + } + }, + fill: { + opacity: [1], + type: ['gradient'], + gradient: { + type: "vertical", + // shadeIntensity: 1, + inverseColors: false, + opacityFrom: 0.5, + opacityTo: 0, + stops: [0, 100] + }, + }, + } + + new ApexCharts(document.querySelector("#chart08"), options1).render(); + + var options1 = { + chart: { + type: 'area', + height: 50, + sparkline: { + enabled: true + } + }, + series: [{ + data: [80, 100, 50, 30, 90] + }], + stroke: { + width: 2, + curve: 'smooth' + }, + markers: { + size: 0 + }, + colors: ["#7e67fe"], + tooltip: { + fixed: { + enabled: false + }, + x: { + show: false + }, + y: { + title: { + formatter: function (seriesName) { + return '' + } + } + }, + marker: { + show: false + } + }, + fill: { + opacity: [1], + type: ['gradient'], + gradient: { + type: "vertical", + // shadeIntensity: 1, + inverseColors: false, + opacityFrom: 0.5, + opacityTo: 0, + stops: [0, 100] + }, + }, + } + + new ApexCharts(document.querySelector("#chart09"), options1).render(); + + var options1 = { + chart: { + type: 'area', + height: 50, + sparkline: { + enabled: true + } + }, + series: [{ + data: [87, 54, 4, 76, 31, 95, 70, 92, 53, 9, 6] + }], + stroke: { + width: 2, + curve: 'smooth' + }, + markers: { + size: 0 + }, + colors: ["#7e67fe"], + tooltip: { + fixed: { + enabled: false + }, + x: { + show: false + }, + y: { + title: { + formatter: function (seriesName) { + return '' + } + } + }, + marker: { + show: false + } + }, + fill: { + opacity: [1], + type: ['gradient'], + gradient: { + type: "vertical", + // shadeIntensity: 1, + inverseColors: false, + opacityFrom: 0.5, + opacityTo: 0, + stops: [0, 100] + }, + }, + } + + new ApexCharts(document.querySelector("#chart10"), options1).render(); + + var options1 = { + chart: { + type: 'area', + height: 50, + sparkline: { + enabled: true + } + }, + series: [{ + data: [41, 42, 35, 42, 6, 12, 13, 22, 42, 94, 95] + }], + stroke: { + width: 2, + curve: 'smooth' + }, + markers: { + size: 0 + }, + colors: ["#7e67fe"], + tooltip: { + fixed: { + enabled: false + }, + x: { + show: false + }, + y: { + title: { + formatter: function (seriesName) { + return '' + } + } + }, + marker: { + show: false + } + }, + fill: { + opacity: [1], + type: ['gradient'], + gradient: { + type: "vertical", + // shadeIntensity: 1, + inverseColors: false, + opacityFrom: 0.5, + opacityTo: 0, + stops: [0, 100] + }, + }, + } + + new ApexCharts(document.querySelector("#chart11"), options1).render(); + + // var options1 = { + // chart: { + // type: 'area', + // height: 50, + // sparkline: { + // enabled: true + // } + // }, + // series: [{ + // data: [8, 41, 40, 48, 77, 35, 0, 77, 63, 100, 71] + // }], + // stroke: { + // width: 2, + // curve: 'smooth' + // }, + // markers: { + // size: 0 + // }, + // colors: ["#7e67fe"], + // tooltip: { + // fixed: { + // enabled: false + // }, + // x: { + // show: false + // }, + // y: { + // title: { + // formatter: function (seriesName) { + // return '' + // } + // } + // }, + // marker: { + // show: false + // } + // }, + // fill: { + // opacity: [1], + // type: ['gradient'], + // gradient: { + // type: "vertical", + // // shadeIntensity: 1, + // inverseColors: false, + // opacityFrom: 0.5, + // opacityTo: 0, + // stops: [0, 100] + // }, + // }, + // } + + // new ApexCharts(document.querySelector("#chart12"), options1).render(); + } +} + +document.addEventListener('DOMContentLoaded', function (e) { + new BigData().init(); +}); \ No newline at end of file diff --git a/resources/js/global-config.js b/resources/js/global-config.js new file mode 100644 index 0000000..701c698 --- /dev/null +++ b/resources/js/global-config.js @@ -0,0 +1,12 @@ +const GlobalConfig = { + apiHost: 'http://localhost:8000' +}; + +export default GlobalConfig; + +export function addThousandSeparators(number, fractionDigits = 2) { + return new Intl.NumberFormat('en-US', { + minimumFractionDigits: fractionDigits, + maximumFractionDigits: fractionDigits, + }).format(number); +} \ No newline at end of file diff --git a/resources/js/settings/syncronize/syncronize.js b/resources/js/settings/syncronize/syncronize.js new file mode 100644 index 0000000..f0aad44 --- /dev/null +++ b/resources/js/settings/syncronize/syncronize.js @@ -0,0 +1,23 @@ +class SyncronizeTask { + init(){ + this.onSyncSubmit(); + } + onSyncSubmit(){ + const form = document.getElementById("sync-form"); + if(form){ + form.addEventListener("submit", function (event) { + event.preventDefault(); // Prevent the default form submission + + const button = document.getElementById("btn-sync-submit"); + if (button) { + button.disabled = true; + button.innerText = "Processing..."; + } + form.submit(); + }); + } + } +} +document.addEventListener('DOMContentLoaded', function (e) { + new SyncronizeTask().init(); +}); \ No newline at end of file diff --git a/resources/js/tables/common-table.js b/resources/js/tables/common-table.js new file mode 100644 index 0000000..0831a6a --- /dev/null +++ b/resources/js/tables/common-table.js @@ -0,0 +1,128 @@ +import { Grid } from "gridjs/dist/gridjs.umd.js"; +import gridjs from 'gridjs/dist/gridjs.umd.js' +import 'gridjs/dist/gridjs.umd.js' +import GlobalConfig from "../global-config"; + +class CommonTable { + init() { + // this.CommonTableInit(); + this.CommonTableInitWithFetchApi(); + } + + CommonTableInit() { + new Grid({ + columns: [ + { + name: 'ID', + formatter: (function (cell) { + return gridjs.html('' + cell + ''); + }) + }, + "Name", + { + name: 'Email', + formatter: (function (cell) { + return gridjs.html('' + cell + ''); + }) + }, + "Position", "Company", "Country", + { + name: 'Actions', + width: '120px', + formatter: (function (cell) { + return gridjs.html(` + + `); + }) + }, + ], + pagination: { + limit: 10 + }, + sort: true, + search: true, + data: [ + ["11", "Alice", "alice@example.com", "Software Engineer", "ABC Company", "United States"], + ["12", "Bob", "bob@example.com", "Product Manager", "XYZ Inc", "Canada"], + ["13", "Charlie", "charlie@example.com", "Data Analyst", "123 Corp", "Australia"], + ["14", "David", "david@example.com", "UI/UX Designer", "456 Ltd", "United Kingdom"], + ["15", "Eve", "eve@example.com", "Marketing Specialist", "789 Enterprises", "France"], + ["11", "Alice", "alice@example.com", "Software Engineer", "ABC Company", "United States"], + ["12", "Bob", "bob@example.com", "Product Manager", "XYZ Inc", "Canada"], + ["13", "Charlie", "charlie@example.com", "Data Analyst", "123 Corp", "Australia"], + ["14", "David", "david@example.com", "UI/UX Designer", "456 Ltd", "United Kingdom"], + ["15", "Eve", "eve@example.com", "Marketing Specialist", "789 Enterprises", "France"], + ["11", "Alice", "alice@example.com", "Software Engineer", "ABC Company", "United States"], + ["12", "Bob", "bob@example.com", "Product Manager", "XYZ Inc", "Canada"], + ["13", "Charlie", "charlie@example.com", "Data Analyst", "123 Corp", "Australia"], + ["14", "David", "david@example.com", "UI/UX Designer", "456 Ltd", "United Kingdom"], + ["15", "Eve", "eve@example.com", "Marketing Specialist", "789 Enterprises", "France"], + ["11", "Alice", "alice@example.com", "Software Engineer", "ABC Company", "United States"], + ["12", "Bob", "bob@example.com", "Product Manager", "XYZ Inc", "Canada"], + ["13", "Charlie", "charlie@example.com", "Data Analyst", "123 Corp", "Australia"], + ["14", "David", "david@example.com", "UI/UX Designer", "456 Ltd", "United Kingdom"], + ["15", "Eve", "eve@example.com", "Marketing Specialist", "789 Enterprises", "France"], + ["16", "Frank", "frank@example.com", "HR Manager", "ABC Company", "Germany"], + ["17", "Grace", "grace@example.com", "Financial Analyst", "XYZ Inc", "Japan"], + ["18", "Hannah", "hannah@example.com", "Sales Representative", "123 Corp", "Brazil"], + ["19", "Ian", "ian@example.com", "Software Developer", "456 Ltd", "India"], + ["20", "Jane", "jane@example.com", "Operations Manager", "789 Enterprises", "China"] + ] + }).render(document.getElementById("common-table")); + } + + CommonTableInitWithFetchApi(){ + fetch(`${GlobalConfig.apiHost}/users`) + .then((response) => response.json()) + .then((data) => { + console.log("check log response"); + console.log(data.data); + new Grid({ + columns: [ + { + name: 'id', + formatter: (function (cell) { + return gridjs.html('' + cell + ''); + }) + }, + "name", + { + name: 'email', + formatter: (function (cell) { + return gridjs.html('' + cell + ''); + }) + }, + "position", "firstname", "lastname", + { + name: 'Actions', + width: '120px', + formatter: (function (cell) { + return gridjs.html(` + + `); + }) + }, + ], + pagination: { + limit: 10 + }, + sort: true, + search: true, + data: data.data + }).render(document.getElementById("common-table")); + }) + .catch((error) => console.error("Error fetching data: " + error)); + } +} + +document.addEventListener('DOMContentLoaded', function (e) { + new CommonTable().init(); +}); \ No newline at end of file diff --git a/resources/views/auth/signup.blade.php b/resources/views/auth/signup.blade.php index a5ba261..f668082 100755 --- a/resources/views/auth/signup.blade.php +++ b/resources/views/auth/signup.blade.php @@ -13,11 +13,11 @@ class="authentication-bg"
@@ -27,7 +27,7 @@ class="authentication-bg"

-
+
'Dashboards']) + +@section('content') + +@include('layouts.partials/page-title', ['title' => 'Dashboards', 'subtitle' => 'SIBEDAS']) + +
+ +
+
+
+
+
+

Total Potensi Berkas

+
2432 Pemohon
+

Rp.24.416.920.070

+
+
+
+
+
+
+ + +
+
+
+
+
+

Berkas Terverifikasi

+
1572 Berkas
+

Rp.17.522.994.118

+
+
+
+
+
+
+ + +
+
+
+
+
+

Berkas Belum Terverifikasi

+
860 Berkas
+

Rp.6.893.925.952

+
+
+
+
+
+
+ + +
+
+
+
+
+

Non Usaha

+
+

+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+

Usaha

+
+

+
+
+
+
+
+
+ + +
+
+
+
+
+

Berproses Di Dinas Teknis

+
171 Berkas
+

Rp.1.973.666.055

+
+
+
+
+
+
+ + +
+
+
+
+
+

Berproses Di DPMPTSP

+
23 Berkas
+

Rp.1.086.206.621

+
+
+
+
+
+
+ + +
+
+
+
+
+

Realisasi Terbit PBG

+
1378 Berkas
+

Rp.14.463.121.442

+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+

Progres Manual

+
85 Berkas
+

Rp.1.479.160.749

+
+
+
+
+
+
+ + +
+
+
+
+
+

Perkiraan Potensi PBG Dari Tata Ruang

+
5 Berkas
+

Rp.1.898.364.080

+
+
+
+
+
+
+ + +
+
+
+
+
+

Perkiraan Potensi PBG Dari Tata Ruang

+
18 Berkas
+

Rp.3.076.196.000

+
+
+
+
+
+
+ + +
+
+
+
+
+

Target PAD

+
+

+
+
+
+
+
+
+
+ +@endsection + +@section('scripts') +@vite(['resources/js/dashboards/bigdata.js']) +@endsection \ No newline at end of file diff --git a/resources/views/home/index.blade.php b/resources/views/home/index.blade.php index 267dc4d..f49e0ea 100644 --- a/resources/views/home/index.blade.php +++ b/resources/views/home/index.blade.php @@ -2,7 +2,7 @@ @section('content') -@include('layouts.partials/page-title', ['title' => 'Darkone', 'subtitle' => 'Dashboard']) +@include('layouts.partials/page-title', ['title' => 'Home', 'subtitle' => 'Dashboard'])
diff --git a/resources/views/layouts/partials/footer.blade.php b/resources/views/layouts/partials/footer.blade.php index b9e6a30..3c3c138 100755 --- a/resources/views/layouts/partials/footer.blade.php +++ b/resources/views/layouts/partials/footer.blade.php @@ -4,7 +4,7 @@
© Darkone by StackBros. + © DPUTR Kabupaten Bandung
diff --git a/resources/views/layouts/partials/sidebar.blade.php b/resources/views/layouts/partials/sidebar.blade.php index 88ff551..e610a11 100644 --- a/resources/views/layouts/partials/sidebar.blade.php +++ b/resources/views/layouts/partials/sidebar.blade.php @@ -2,13 +2,13 @@ @@ -29,7 +29,7 @@
- -
-
+ \ No newline at end of file diff --git a/resources/views/layouts/partials/title-meta.blade.php b/resources/views/layouts/partials/title-meta.blade.php index 00a828f..835c7ef 100755 --- a/resources/views/layouts/partials/title-meta.blade.php +++ b/resources/views/layouts/partials/title-meta.blade.php @@ -1,13 +1,14 @@ -{{ $subtitle}} | Darkone - Dark Admin & UI Kit Template +{{ $subtitle}} | DPUTR - - - + + + + - \ No newline at end of file + \ No newline at end of file diff --git a/resources/views/master/users/create.blade.php b/resources/views/master/users/create.blade.php new file mode 100644 index 0000000..3ef58ce --- /dev/null +++ b/resources/views/master/users/create.blade.php @@ -0,0 +1,54 @@ +@extends('layouts.vertical', ['subtitle' => 'Users']) + +@section('content') + +@include('layouts.partials/page-title', ['title' => 'Users', 'subtitle' => 'Create']) + +
+
+
+
+ + @csrf +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + + +
+
+
+
+ +@endsection + +@section('scripts') +@endsection \ No newline at end of file diff --git a/resources/views/master/users/edit.blade.php b/resources/views/master/users/edit.blade.php new file mode 100644 index 0000000..a4b37cb --- /dev/null +++ b/resources/views/master/users/edit.blade.php @@ -0,0 +1,54 @@ +@extends('layouts.vertical', ['subtitle' => 'Users']) + +@section('content') + +@include('layouts.partials/page-title', ['title' => 'Users', 'subtitle' => 'Create']) + +
+
+
+
+
+ @csrf +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + +
+
+
+
+
+ +@endsection + +@section('scripts') +@endsection \ No newline at end of file diff --git a/resources/views/master/users/index.blade.php b/resources/views/master/users/index.blade.php new file mode 100644 index 0000000..0524d27 --- /dev/null +++ b/resources/views/master/users/index.blade.php @@ -0,0 +1,25 @@ +@extends('layouts.vertical', ['subtitle' => 'Master'])\ + +@section('css') +@vite(['node_modules/gridjs/dist/theme/mermaid.min.css']) +@endsection + +@section('content') + +@include('layouts.partials/page-title', ['title' => 'Master', 'subtitle' => 'Users']) + +
+
+ Create +
+ {{$users}} +
+
+
+
+ +@endsection + +@section('scripts') +@vite(['resources/js/tables/common-table.js']) +@endsection \ No newline at end of file diff --git a/resources/views/master/users/show.blade.php b/resources/views/master/users/show.blade.php new file mode 100644 index 0000000..b546866 --- /dev/null +++ b/resources/views/master/users/show.blade.php @@ -0,0 +1,49 @@ +@extends('layouts.vertical', ['subtitle' => 'Users']) + +@section('content') + +@include('layouts.partials/page-title', ['title' => 'Users', 'subtitle' => 'Create']) + +
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+ +@endsection + +@section('scripts') +@endsection \ No newline at end of file diff --git a/resources/views/settings/general/create.blade.php b/resources/views/settings/general/create.blade.php new file mode 100644 index 0000000..99f413c --- /dev/null +++ b/resources/views/settings/general/create.blade.php @@ -0,0 +1,31 @@ +@extends('layouts.vertical', ['subtitle' => 'Create User']) + +@section('content') + +@include('layouts.partials/page-title', ['title' => 'Se', 'subtitle' => 'Syncronize']) + +
+
+
+
+
+
+ + +
+
+ + +
+ +
+
+
+
+
+ +@endsection + +@section('scripts') +@vite(['resources/js/tables/common-table.js']) +@endsection \ No newline at end of file diff --git a/resources/views/settings/general/index.blade.php b/resources/views/settings/general/index.blade.php new file mode 100644 index 0000000..0f177f4 --- /dev/null +++ b/resources/views/settings/general/index.blade.php @@ -0,0 +1,24 @@ +@extends('layouts.vertical', ['subtitle' => 'Syncronize']) + +@section('css') +@vite(['node_modules/gridjs/dist/theme/mermaid.min.css']) +@endsection + +@section('content') + +@include('layouts.partials/page-title', ['title' => 'Settings', 'subtitle' => 'Syncronize']) + +
+
+ +
+
+
+
+
+ +@endsection + +@section('scripts') +@vite(['resources/js/tables/common-table.js']) +@endsection \ No newline at end of file diff --git a/resources/views/settings/syncronize/index.blade.php b/resources/views/settings/syncronize/index.blade.php new file mode 100644 index 0000000..0bdaac2 --- /dev/null +++ b/resources/views/settings/syncronize/index.blade.php @@ -0,0 +1,20 @@ +@extends('layouts.vertical', ['subtitle' => 'Syncronize']) + +@section('content') + +@include('layouts.partials/page-title', ['title' => 'Settings', 'subtitle' => 'Syncronize']) + +
+
+
+ @csrf + +
+
+
+ +@endsection + +@section('scripts') +@vite(['resources/js/settings/syncronize/syncronize.js']) +@endsection \ No newline at end of file diff --git a/routes/api.php b/routes/api.php index ccc387f..e4df389 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1,8 +1,29 @@ user(); })->middleware('auth:sanctum'); + +Route::group(['middleware' => 'auth:scantum'], function (){ + +}); +Route::controller(DashboardController::class)->group(function(){ + Route::get('/business-documents','businnessDocument'); + Route::get('/non-business-documents','nonBusinnessDocument'); + Route::get('/all-task-documents', 'allTaskDocuments'); +}); + +Route::post('/login', [UsersController::class, 'login'])->name('api.user.login'); + +Route::get('/sync-task', [SyncronizeController::class, 'syncPbgTask'])->name('api.task'); +Route::get('/get-user-token', [SyncronizeController::class, 'getUserToken'])->name('api.task.token'); +Route::get('/get-index-integration-retribution/{uuid}', [SyncronizeController::class, 'syncIndexIntegration'])->name('api.task.inntegration'); +Route::get('/sync-task-submit/{uuid}', [SyncronizeController::class, 'syncTaskDetailSubmit'])->name('api.task.submit'); diff --git a/routes/web.php b/routes/web.php index 84864e2..a5972df 100755 --- a/routes/web.php +++ b/routes/web.php @@ -1,8 +1,10 @@ 'auth'], function(){ + + // landing page Route::get('', [HomeController::class, 'index'])->name('home'); + + //dashboards + Route::group(['prefix' => '/dashboards'], function(){ + Route::get('/bigdata', [BigDataController::class, 'index'])->name('dashboards.bigdata'); + }); + + // settings + Route::group(['prefix' => '/settings'], function(){ + Route::get('/syncronize', [SyncronizeController::class, 'index'])->name('settings.syncronize'); + Route::get('/general', [SettingsController::class, 'index'])->name('settings.general'); + Route::post('/syncronize', [SyncronizeController::class, 'syncronizeTask'])->name('settings.sync'); + }); + + // masters + Route::group(['prefix' => '/master'], function (){ + // Route::controller(UsersController::class)->group(function(){ + // Route::get('/users', 'index')->name('master.users'); + // Route::get('/users/create', 'create')->name('master.users.create'); + // Route::post('/users/store', 'store')->name('master.users.store'); + // Route::get('/users/edit/{id}', 'edit')->name('master.users.edit'); + // Route::put('/users/update/{id}', 'edit')->name('master.users.edit'); + // }); + Route::get('/users', [UsersController::class, 'index'])->name('master.users'); + Route::get('/users/create', [UsersController::class, 'create'])->name('master.users.create'); + Route::post('/users/store', [UsersController::class, 'store'])->name('master.users.store'); + Route::get('/users/edit/{id}', [UsersController::class, 'edit'])->name('master.users.edit'); + Route::put('/users/update', [UsersController::class, 'update'])->name('master.users.update'); + Route::delete('/users/delete/{id}', [UsersController::class, 'delete'])->name('master.users.delete'); + Route::delete('/users/show/{id}', [UsersController::class, 'show'])->name('master.users.show'); + }); }); \ No newline at end of file