partial update add env for setting api url from env, partial update detail pbg, add tata ruang for dashboard pimpinan, fix service sync simbg add unique for prasarana table
This commit is contained in:
@@ -4,6 +4,7 @@ APP_KEY=
|
||||
APP_DEBUG=true
|
||||
APP_TIMEZONE=UTC
|
||||
APP_URL=http://localhost
|
||||
API_URL=http://localhost:8000
|
||||
|
||||
APP_LOCALE=en
|
||||
APP_FALLBACK_LOCALE=en
|
||||
|
||||
@@ -12,30 +12,34 @@ class DashboardController extends Controller
|
||||
use GlobalApiResponse;
|
||||
|
||||
public function businnessDocument(Request $request){
|
||||
$query = 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');
|
||||
})
|
||||
->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') // Menambahkan SUM dari pbg_task_retributions
|
||||
->first();
|
||||
$query = 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();
|
||||
});
|
||||
|
||||
$taskCount = $query->total_data;
|
||||
$taskTotal = $query->total_retribution ?? 0;
|
||||
$result = [
|
||||
|
||||
return $this->resSuccess([
|
||||
"count" => $taskCount,
|
||||
"total" => $taskTotal
|
||||
];
|
||||
return $this->resSuccess($result);
|
||||
]);
|
||||
}
|
||||
public function nonBusinnessDocument(Request $request){
|
||||
|
||||
$query = DB::table('pbg_task AS pt')
|
||||
$query = 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) {
|
||||
@@ -49,53 +53,55 @@ class DashboardController extends Controller
|
||||
->selectRaw('COUNT(pt.id) AS total_data,
|
||||
SUM(ptr.nilai_retribusi_bangunan) AS total_retribution') // Menambahkan SUM dari pbg_task_retributions
|
||||
->first();
|
||||
});
|
||||
$taskCount = $query->total_data;
|
||||
$taskTotal = $query->total_retribution ?? 0;
|
||||
$result = [
|
||||
return $this->resSuccess([
|
||||
"count" => $taskCount,
|
||||
"total" => $taskTotal
|
||||
];
|
||||
return $this->resSuccess($result);
|
||||
]);
|
||||
}
|
||||
public function allTaskDocuments(){
|
||||
$query = DB::table('pbg_task')
|
||||
$query = once( function () {
|
||||
return 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 = [
|
||||
return $this->resSuccess([
|
||||
"count" => $taskCount,
|
||||
"total" => $taskTotal
|
||||
];
|
||||
return $this->resSuccess($result);
|
||||
]);
|
||||
}
|
||||
|
||||
public function verificationDocuments(){
|
||||
$query = 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
|
||||
->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();
|
||||
$query = 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') // Menambahkan join ke pbg_task_retributions
|
||||
->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();
|
||||
});
|
||||
|
||||
$taskCount = $query->total_data;
|
||||
$taskTotal = $query->total_retribution;
|
||||
|
||||
$result = [
|
||||
return $this->resSuccess([
|
||||
"count"=> $taskCount,
|
||||
"total"=> $taskTotal
|
||||
];
|
||||
|
||||
return $this->resSuccess($result);
|
||||
]);
|
||||
}
|
||||
|
||||
public function nonVerificationDocuments(){
|
||||
$query = DB::table('pbg_task AS pt')
|
||||
$query = 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) {
|
||||
@@ -105,16 +111,15 @@ class DashboardController extends Controller
|
||||
->selectRaw('COUNT(pt.id) AS total_data,
|
||||
SUM(ptr.nilai_retribusi_bangunan) AS total_retribution') // Menambahkan SUM dari pbg_task_retributions
|
||||
->first();
|
||||
});
|
||||
|
||||
$taskCount = $query->total_data;
|
||||
$taskTotal = $query->total_retribution ?? 0;
|
||||
|
||||
$result = [
|
||||
return $this->resSuccess([
|
||||
"count"=> $taskCount,
|
||||
"total"=> $taskTotal
|
||||
];
|
||||
|
||||
return $this->resSuccess($result);
|
||||
]);
|
||||
}
|
||||
|
||||
public function pbgTaskDocuments(Request $request){
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\PbgTaskMultiStepRequest;
|
||||
use App\Http\Resources\PbgTaskResource;
|
||||
use App\Models\PbgTask;
|
||||
use App\Models\PbgTaskGoogleSheet;
|
||||
use App\Services\GoogleSheetService;
|
||||
@@ -68,7 +69,19 @@ class PbgTaskController extends Controller
|
||||
*/
|
||||
public function show(string $id)
|
||||
{
|
||||
//
|
||||
try{
|
||||
$pbg_task = PbgTask::with(['pbg_task_retributions','pbg_task_index_integrations'])->findOrFail($id);
|
||||
return response()->json([
|
||||
"success"=> true,
|
||||
"message"=> "Data ditemukan",
|
||||
"data"=> $pbg_task
|
||||
]);
|
||||
}catch(\Exception $e){
|
||||
return response()->json([
|
||||
"success"=> false,
|
||||
"message"=> $e->getMessage(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers\RequestAssignment;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\PbgTask;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class PbgTaskController extends Controller
|
||||
@@ -36,7 +37,8 @@ class PbgTaskController extends Controller
|
||||
*/
|
||||
public function show(string $id)
|
||||
{
|
||||
return view("pbg_task.show");
|
||||
$data = PbgTask::with(['pbg_task_retributions','pbg_task_index_integrations'])->findOrFail($id);
|
||||
return view("pbg_task.show", compact("data"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -8,32 +8,38 @@ use Illuminate\Http\Request;
|
||||
use Exception;
|
||||
class SyncronizeController extends Controller
|
||||
{
|
||||
protected $service_simbg;
|
||||
public function __construct(ServiceSIMBG $service_simbg){
|
||||
$this->service_simbg = $service_simbg;
|
||||
}
|
||||
public function index(Request $request){
|
||||
return view('settings.syncronize.index');
|
||||
}
|
||||
|
||||
public function syncPbgTask(){
|
||||
$res = (new ServiceSIMBG())->syncTaskList();
|
||||
$res = $this->service_simbg->syncTaskList();
|
||||
return $res;
|
||||
}
|
||||
|
||||
public function syncronizeTask(Request $request){
|
||||
$res = (new ServiceSIMBG())->syncTaskList();
|
||||
$res = $this->service_simbg->syncTaskList();
|
||||
return redirect()->back()->with('success', 'Processing completed successfully');
|
||||
}
|
||||
|
||||
public function getUserToken(){
|
||||
$res = (new ServiceSIMBG())->getToken();
|
||||
$res = $this->service_simbg->getToken();
|
||||
return $res;
|
||||
}
|
||||
|
||||
public function syncIndexIntegration($uuid){
|
||||
$res = (new ServiceSIMBG())->syncIndexIntegration($uuid);
|
||||
public function syncIndexIntegration(Request $request, $uuid){
|
||||
$token = $request->get('token');
|
||||
$res = $this->service_simbg->syncIndexIntegration($uuid, $token);
|
||||
return $res;
|
||||
}
|
||||
|
||||
public function syncTaskDetailSubmit($uuid){
|
||||
$res = (new ServiceSIMBG())->syncTaskDetailSubmit($uuid);
|
||||
public function syncTaskDetailSubmit(Request $request, $uuid){
|
||||
$token = $request->get('token');
|
||||
$res = $this->service_simbg->syncTaskDetailSubmit($uuid, $token);
|
||||
return $res;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,11 @@ class PbgTask extends Model
|
||||
'task_created_at'
|
||||
];
|
||||
|
||||
public function retributions(){
|
||||
public function pbg_task_retributions(){
|
||||
return $this->hasOne(PbgTaskRetributions::class, 'pbg_task_uid', 'uuid');
|
||||
}
|
||||
|
||||
public function pbg_task_index_integrations(){
|
||||
return $this->hasOne(PbgTaskIndexIntegrations::class, 'pbg_task_uid', 'uuid');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,4 +21,8 @@ class PbgTaskIndexIntegrations extends Model
|
||||
'indeks_terintegrasi',
|
||||
'total',
|
||||
];
|
||||
|
||||
public function pbg_task(){
|
||||
return $this->belongsTo(PbgTask::class, 'pbg_task_uid', 'uuid');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ class PbgTaskRetributions extends Model
|
||||
'pbg_task_uid'
|
||||
];
|
||||
|
||||
public function task(){
|
||||
public function pbg_task(){
|
||||
return $this->belongsTo(PbgTask::class, 'pbg_task_uid', 'uuid');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,26 +21,27 @@ class ServiceSIMBG
|
||||
private $password;
|
||||
private $simbg_host;
|
||||
private $fetch_per_page;
|
||||
private $service_client;
|
||||
/**
|
||||
* Create a new class instance.
|
||||
*/
|
||||
public function __construct()
|
||||
public function __construct(ServiceClient $service_client)
|
||||
{
|
||||
$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->service_client = new ServiceClient($this->simbg_host);
|
||||
}
|
||||
|
||||
public function getToken(){
|
||||
$clientHelper = new ServiceClient($this->simbg_host);
|
||||
$url = "/api/user/v1/auth/login/";
|
||||
$body = [
|
||||
'email' => $this->email,
|
||||
'password' => $this->password,
|
||||
];
|
||||
|
||||
$res = $clientHelper->post($url, $body);
|
||||
$res = $this->service_client->post($url, $body);
|
||||
if(!$res->original['success']){
|
||||
Log::error("Token not retrieved ", ['response' => $res]);
|
||||
return null;
|
||||
@@ -50,14 +51,13 @@ class ServiceSIMBG
|
||||
|
||||
public function syncIndexIntegration($uuid, $token)
|
||||
{
|
||||
$clientHelper = new ServiceClient($this->simbg_host);
|
||||
$url = "/api/pbg/v1/detail/" . $uuid . "/retribution/indeks-terintegrasi/";
|
||||
|
||||
$headers = [
|
||||
'Authorization' => "Bearer " . $token,
|
||||
];
|
||||
|
||||
$res = $clientHelper->get($url, $headers);
|
||||
$res = $this->service_client->get($url, $headers);
|
||||
|
||||
Log::info("response index integration", ['res' => $res]);
|
||||
|
||||
@@ -98,7 +98,6 @@ class ServiceSIMBG
|
||||
|
||||
public function syncTaskList()
|
||||
{
|
||||
$clientHelper = new ServiceClient($this->simbg_host);
|
||||
$initResToken = $this->getToken();
|
||||
|
||||
$importDatasource = ImportDatasource::create([
|
||||
@@ -117,7 +116,7 @@ class ServiceSIMBG
|
||||
$headers = ['Authorization' => "Bearer " . $apiToken];
|
||||
|
||||
$url = "/api/pbg/v1/list/?page=1&size={$this->fetch_per_page}&sort=ASC";
|
||||
$initialResponse = $clientHelper->get($url, $headers);
|
||||
$initialResponse = $this->service_client->get($url, $headers);
|
||||
|
||||
$totalPage = $initialResponse->original['data']['total_page'] ?? 0;
|
||||
if ($totalPage == 0) {
|
||||
@@ -130,7 +129,7 @@ class ServiceSIMBG
|
||||
|
||||
$savedCount = $failedCount = 0;
|
||||
|
||||
for ($currentPage = 50; $currentPage <= $totalPage; $currentPage++) {
|
||||
for ($currentPage = 1; $currentPage <= $totalPage; $currentPage++) {
|
||||
$pageUrl = "/api/pbg/v1/list/?page={$currentPage}&size={$this->fetch_per_page}&sort=ASC";
|
||||
$getToken = $this->getToken();
|
||||
Log::info("response index integration", ['currentPage' => $currentPage]);
|
||||
@@ -143,7 +142,7 @@ class ServiceSIMBG
|
||||
}
|
||||
$token = $getToken->original['data']['token']['access'];
|
||||
$headers = ['Authorization' => "Bearer " . $token];
|
||||
$response = $clientHelper->get($pageUrl, $headers);
|
||||
$response = $this->service_client->get($pageUrl, $headers);
|
||||
$tasks = $response->original['data']['data'] ?? [];
|
||||
|
||||
if (empty($tasks)) {
|
||||
@@ -221,14 +220,12 @@ class ServiceSIMBG
|
||||
|
||||
public function syncTaskDetailSubmit($uuid, $token)
|
||||
{
|
||||
$clientHelper = new ServiceClient($this->simbg_host);
|
||||
|
||||
$url = "/api/pbg/v1/detail/" . $uuid . "/retribution/submit/";
|
||||
$headers = [
|
||||
'Authorization' => "Bearer " . $token,
|
||||
];
|
||||
|
||||
$res = $clientHelper->get($url, $headers);
|
||||
$res = $this->service_client->get($url, $headers);
|
||||
|
||||
Log::info("response task detail submit", ['res' => $res]);
|
||||
|
||||
@@ -290,7 +287,7 @@ class ServiceSIMBG
|
||||
], $prasaranaData);
|
||||
|
||||
// Use bulk insert or upsert for faster database operation
|
||||
PbgTaskPrasarana::upsert($insertData, ['pbg_task_uid', 'prasarana_id']);
|
||||
PbgTaskPrasarana::upsert($insertData, ['prasarana_id']);
|
||||
}
|
||||
|
||||
Log::info("retribution and prasarana successfully", ['uuid' => $uuid]);
|
||||
|
||||
@@ -123,4 +123,5 @@ return [
|
||||
'store' => env('APP_MAINTENANCE_STORE', 'database'),
|
||||
],
|
||||
|
||||
'api_url' => env('API_URL', 'http://localhost:8000')
|
||||
];
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('pbg_task_prasarana', function (Blueprint $table) {
|
||||
$table->integer('prasarana_id')->nullable()->unique()->change();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('pbg_task_prasarana', function (Blueprint $table) {
|
||||
$table->integer('prasarana_id')->nullable()->unique()->change();
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -1,9 +1,8 @@
|
||||
|
||||
import bootstrap from 'bootstrap/dist/js/bootstrap'
|
||||
import bootstrap from "bootstrap/dist/js/bootstrap";
|
||||
window.bootstrap = bootstrap;
|
||||
import 'iconify-icon';
|
||||
import 'simplebar/dist/simplebar'
|
||||
|
||||
import "iconify-icon";
|
||||
import "simplebar/dist/simplebar";
|
||||
|
||||
class Components {
|
||||
initBootstrapComponents() {
|
||||
[...document.querySelectorAll('[data-bs-toggle="popover"]')].map(
|
||||
|
||||
@@ -10,6 +10,7 @@ class BigData {
|
||||
this.dataNonVerification = await this.getDataNonVerfication();
|
||||
this.dataBusiness = await this.getDataBusiness();
|
||||
this.dataNonBusiness = await this.getDataNonBusiness();
|
||||
this.dataTataRuang = await this.getDataTataRuang();
|
||||
|
||||
// total potensi
|
||||
this.bigTargetPAD = new Big(this.totalTargetPAD ?? 0);
|
||||
@@ -26,6 +27,16 @@ class BigData {
|
||||
}
|
||||
}
|
||||
|
||||
// tata ruang
|
||||
this.bigTotalTataRuang = new Big(this.dataTataRuang);
|
||||
this.percentageResultTataRuang =
|
||||
this.bigTotalTataRuang <= 0 || this.bigTotalPotensi <= 0
|
||||
? 0
|
||||
: this.bigTotalTataRuang
|
||||
.div(this.bigTotalPotensi)
|
||||
.times(100)
|
||||
.toFixed(2);
|
||||
|
||||
// kekurangan potensi
|
||||
this.totalKekuranganPotensi = new Big(
|
||||
this.totalTargetPAD - this.bigTotalPotensi
|
||||
@@ -154,7 +165,7 @@ class BigData {
|
||||
return data.data[0].value;
|
||||
} catch (error) {
|
||||
console.error("Error fetching chart data:", error);
|
||||
return null;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,7 +196,7 @@ class BigData {
|
||||
};
|
||||
} catch (error) {
|
||||
console.error("Error fetching chart data:", error);
|
||||
return null;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -216,7 +227,7 @@ class BigData {
|
||||
};
|
||||
} catch (error) {
|
||||
console.error("Error fetching chart data:", error);
|
||||
return null;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -247,7 +258,7 @@ class BigData {
|
||||
};
|
||||
} catch (error) {
|
||||
console.error("Error fetching chart data:", error);
|
||||
return null;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -278,52 +289,55 @@ class BigData {
|
||||
};
|
||||
} catch (error) {
|
||||
console.error("Error fetching chart data:", error);
|
||||
return null;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
async getDataTataRuang() {
|
||||
try {
|
||||
const response = await fetch(
|
||||
`${GlobalConfig.apiHost}/api/api-data-settings?search=tata_ruang`,
|
||||
{
|
||||
credentials: "include",
|
||||
headers: {
|
||||
Authorization: `Bearer ${
|
||||
document.querySelector("meta[name='api-token']")
|
||||
.content
|
||||
}`,
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
if (!response.ok) {
|
||||
console.error("Network response was not ok", response);
|
||||
}
|
||||
|
||||
const data = await response.json();
|
||||
return data.data[0].value;
|
||||
} catch (error) {
|
||||
console.error("Error fetching chart data:", error);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
initChartTargetPAD() {
|
||||
let totalPad = 0;
|
||||
fetch(
|
||||
`${GlobalConfig.apiHost}/api/api-data-settings?search=target_pad`,
|
||||
{
|
||||
credentials: "include",
|
||||
headers: {
|
||||
Authorization: `Bearer ${
|
||||
document.querySelector("meta[name='api-token']").content
|
||||
}`,
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
}
|
||||
)
|
||||
.then((response) => {
|
||||
if (!response.ok) {
|
||||
throw new Error("Network response was not ok");
|
||||
}
|
||||
return response.json();
|
||||
})
|
||||
.then((data) => {
|
||||
totalPad = data.data[0].value;
|
||||
document
|
||||
.querySelectorAll(".document-count.chart-target-pad")
|
||||
.forEach((element) => {
|
||||
element.innerText = ``;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".document-total.chart-target-pad")
|
||||
.forEach((element) => {
|
||||
element.innerText = `Rp.${addThousandSeparators(
|
||||
totalPad
|
||||
)}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".small-percentage.chart-target-pad")
|
||||
.forEach((element) => {
|
||||
element.innerText = `${100}%`;
|
||||
});
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error("Error fetching target_pad:", error);
|
||||
document
|
||||
.querySelectorAll(".document-count.chart-target-pad")
|
||||
.forEach((element) => {
|
||||
element.innerText = ``;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".document-total.chart-target-pad")
|
||||
.forEach((element) => {
|
||||
element.innerText = `Rp.${addThousandSeparators(
|
||||
this.bigTargetPAD.toString()
|
||||
)}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".small-percentage.chart-target-pad")
|
||||
.forEach((element) => {
|
||||
element.innerText = `${100}%`;
|
||||
});
|
||||
}
|
||||
initChartTotalPotensi() {
|
||||
@@ -503,17 +517,19 @@ class BigData {
|
||||
document
|
||||
.querySelectorAll(".document-count.chart-potensi-tata-ruang")
|
||||
.forEach((element) => {
|
||||
element.innerText = `${0}`;
|
||||
element.innerText = "";
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".document-total.chart-potensi-tata-ruang")
|
||||
.forEach((element) => {
|
||||
element.innerText = `Rp.${addThousandSeparators("0.00")}`;
|
||||
element.innerText = `Rp.${addThousandSeparators(
|
||||
this.bigTotalTataRuang.toString()
|
||||
)}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".small-percentage.chart-potensi-tata-ruang")
|
||||
.forEach((element) => {
|
||||
element.innerText = `0.00%`;
|
||||
element.innerText = `${this.percentageResultTataRuang}%`;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
const GlobalConfig = {
|
||||
apiHost: "http://147.93.121.38",
|
||||
};
|
||||
|
||||
export default GlobalConfig;
|
||||
export default GlobalConfig = window.GlobalConfig;
|
||||
|
||||
export function addThousandSeparators(value, fractionDigits = 2) {
|
||||
if (!value) return null; // Handle empty or null values
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { Grid } from "gridjs/dist/gridjs.umd.js";
|
||||
import "gridjs/dist/gridjs.umd.js";
|
||||
import gridjs from "gridjs/dist/gridjs.umd.js";
|
||||
import GlobalConfig from "../global-config";
|
||||
|
||||
class PbgTasks {
|
||||
@@ -19,7 +20,17 @@ class PbgTasks {
|
||||
"Status",
|
||||
"Function Type",
|
||||
"Consultation Type",
|
||||
{ name: "Due Date", width: "7%" },
|
||||
{ name: "Due Date", width: "10%" },
|
||||
{
|
||||
name: "Action",
|
||||
formatter: function (cell) {
|
||||
return gridjs.html(`
|
||||
<div class="d-flex justify-items-end gap-10">
|
||||
<a href="/pbg-task/${cell}" class="btn btn-yellow">Detail</a
|
||||
</div>
|
||||
`);
|
||||
},
|
||||
},
|
||||
],
|
||||
search: {
|
||||
server: {
|
||||
@@ -57,6 +68,7 @@ class PbgTasks {
|
||||
item.function_type,
|
||||
item.consultation_type,
|
||||
item.due_date,
|
||||
item.id,
|
||||
]),
|
||||
total: (data) => data.meta.total,
|
||||
},
|
||||
|
||||
@@ -19,7 +19,6 @@ class SyncronizeTask {
|
||||
name: "Actions",
|
||||
width: "120px",
|
||||
formatter: function (cell) {
|
||||
console.log("cell data", cell);
|
||||
return gridjs.html(`
|
||||
<div class="d-flex justify-items-end gap-10">
|
||||
<a href="/settings/general/${cell}/edit" class="btn btn-yellow me-2">Update</a>
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
//
|
||||
// circle.scss
|
||||
//
|
||||
|
||||
:root {
|
||||
--circle-color: #c97a04; /* Default warna lingkaran */
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
@component('components.circle', [
|
||||
'document_title' => 'Perkiraan Potensi PBG Dari Tata Ruang',
|
||||
'document_color' => '#bf04bc',
|
||||
'document_type' => 'Berkas',
|
||||
'document_type' => '',
|
||||
'document_id' => 'chart-potensi-tata-ruang',
|
||||
'visible_small_circle' => true,
|
||||
'style' => 'left:600px;'
|
||||
|
||||
@@ -2,4 +2,10 @@
|
||||
|
||||
@vite('resources/js/app.js')
|
||||
|
||||
@yield('scripts')
|
||||
@yield('scripts')
|
||||
|
||||
<script>
|
||||
window.GlobalConfig = {
|
||||
apiHost: "{{config('app.api_url')}}"
|
||||
};
|
||||
</script>
|
||||
218
resources/views/pbg_task/show.blade.php
Normal file
218
resources/views/pbg_task/show.blade.php
Normal file
@@ -0,0 +1,218 @@
|
||||
@extends('layouts.vertical', ['subtitle' => 'Detail'])
|
||||
|
||||
@section('css')
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
|
||||
@include('layouts.partials/page-title', ['title' => 'Detail', 'subtitle' => 'PBG'])
|
||||
|
||||
<div class="row">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<ul class="nav nav-tabs nav-justified">
|
||||
<li class="nav-item">
|
||||
<a href="#pbgTask" data-bs-toggle="tab" aria-expanded="true" class="nav-link active">
|
||||
<span class="d-none d-sm-block">PBG Task</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="#pbgTaskRetributions" data-bs-toggle="tab" aria-expanded="false"
|
||||
class="nav-link">
|
||||
<span class="d-none d-sm-block">PBG Task Retributions</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="#pbgTaskIntegration" data-bs-toggle="tab" aria-expanded="false" class="nav-link">
|
||||
<span class="d-none d-sm-block">PBG Task Index Integrations</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a href="#pbgTaskPrasarana" data-bs-toggle="tab" aria-expanded="false" class="nav-link">
|
||||
<span class="d-none d-sm-block">PBG Task Prasarana</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane active" id="pbgTask">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="mb-3">
|
||||
<dt>Name</dt>
|
||||
<dd>{{$data->name}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Owner Name</dt>
|
||||
<dd>{{$data->owner_name}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Aplication Type Name</dt>
|
||||
<dd>{{$data->application_type_name}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Condition</dt>
|
||||
<dd>{{$data->condition}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Registration Number</dt>
|
||||
<dd>{{$data->registration_number}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Document Number</dt>
|
||||
<dd>{{$data->document_number}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Address</dt>
|
||||
<dd>{{$data->address}}</dd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="mb-3">
|
||||
<dt>Status Name</dt>
|
||||
<dd>{{$data->status_name}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>SLF Status Name</dt>
|
||||
<dd>{{$data->slf_status_name}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Function Type</dt>
|
||||
<dd>{{$data->function_type}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Consultation Type</dt>
|
||||
<dd>{{$data->consultation_type}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Due Date</dt>
|
||||
<dd>{{$data->due_date}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Task Created At</dt>
|
||||
<dd>{{$data->task_created_at}}</dd>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane" id="pbgTaskRetributions">
|
||||
@if ($data->pbg_task_retributions)
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="mb-3">
|
||||
<dt>Luas Bangunan</dt>
|
||||
<dd>{{$data->pbg_task_retributions->luas_bangunan}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Indeks Lokalitas</dt>
|
||||
<dd>{{$data->pbg_task_retributions->indeks_lokalitas}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Wilayah SHST</dt>
|
||||
<dd>{{$data->pbg_task_retributions->wilayah_shst}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Kegiatan Name</dt>
|
||||
<dd>{{$data->pbg_task_retributions->kegiatan_name}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Nilai SHST</dt>
|
||||
<dd>{{$data->pbg_task_retributions->nilai_shst}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Indeks Integrasi</dt>
|
||||
<dd>{{$data->pbg_task_retributions->indeks_terintegrasi}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Indeks Bg Terbangun</dt>
|
||||
<dd>{{$data->pbg_task_retributions->indeks_bg_terbangun}}</dd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="mb-3">
|
||||
<dt>Nilai Retribusi Bangunan</dt>
|
||||
<dd>{{$data->pbg_task_retributions->nilai_retribusi_bangunan}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Nilai Prasarana</dt>
|
||||
<dd>{{$data->pbg_task_retributions->nilai_prasarana}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>PBG Dokumen</dt>
|
||||
<dd>{{$data->pbg_task_retributions->pbg_document}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Underpayment</dt>
|
||||
<dd>{{$data->pbg_task_retributions->underpayment}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>SKRD Amount</dt>
|
||||
<dd>{{$data->pbg_task_retributions->skrd_amount}}</dd>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
Data Not Available
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
<div class="tab-pane" id="pbgTaskIntegration">
|
||||
@if ($data->pbg_task_index_integrations)
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="mb-3">
|
||||
<dt>Indeks Fungsi Bangunan</dt>
|
||||
<dd>{{$data->pbg_task_index_integrations->indeks_fungsi_bangunan}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Indeks Parameter Kompleksitas</dt>
|
||||
<dd>{{$data->pbg_task_index_integrations->indeks_parameter_kompleksitas}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Indeks Parameter Permanensi</dt>
|
||||
<dd>{{$data->pbg_task_index_integrations->indeks_parameter_permanensi}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Indeks Paramter Ketinggian</dt>
|
||||
<dd>{{$data->pbg_task_index_integrations->indeks_parameter_ketinggian}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Faktor Kepemilikan</dt>
|
||||
<dd>{{$data->pbg_task_index_integrations->faktor_kepemilikan}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Indeks Terintegrasi</dt>
|
||||
<dd>{{$data->pbg_task_index_integrations->indeks_terintegrasi}}</dd>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<dt>Total</dt>
|
||||
<dd>{{$data->pbg_task_index_integrations->total}}</dd>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
Data Not Available
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
<div class="tab-pane" id="pbgTaskPrasarana">
|
||||
<div class="row">
|
||||
aslkdjkasjd
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
@endsection
|
||||
Reference in New Issue
Block a user