fix service google sheet, add uemail to profile, fix detail pbg view, backupdb local last migrate, create menu and role request
This commit is contained in:
@@ -242,7 +242,7 @@ class PbgTaskController extends Controller
|
|||||||
$total_data = count($mapToUpsert);
|
$total_data = count($mapToUpsert);
|
||||||
|
|
||||||
$import_datasource->update([
|
$import_datasource->update([
|
||||||
"message" => "Successfully imported {$total_data}",
|
"message" => "Successfully processed: {$total_data}",
|
||||||
"status" => ImportDatasourceStatus::Success->value,
|
"status" => ImportDatasourceStatus::Success->value,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Http\Requests\MenuRequest;
|
||||||
use App\Models\Menu;
|
use App\Models\Menu;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
@@ -28,24 +29,12 @@ class MenusController extends Controller
|
|||||||
/**
|
/**
|
||||||
* Store a newly created resource in storage.
|
* Store a newly created resource in storage.
|
||||||
*/
|
*/
|
||||||
public function store(Request $request)
|
public function store(MenuRequest $request)
|
||||||
{
|
{
|
||||||
try{
|
try{
|
||||||
$request->validate([
|
$validated_menu = $request->validated();
|
||||||
'name' => 'required|string|max:255',
|
|
||||||
'url' => 'nullable|string|max:255',
|
|
||||||
'icon' => 'nullable|string|max:255',
|
|
||||||
'parent_id' => 'nullable|exists:menus,id', // Ensures it's either null or a valid menu ID
|
|
||||||
'sort_order' => 'required|integer',
|
|
||||||
]);
|
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
Menu::create([
|
Menu::create($validated_menu);
|
||||||
'name' => $request->name,
|
|
||||||
'url' => $request->url,
|
|
||||||
'icon' => $request->icon,
|
|
||||||
'parent_id' => $request->parent_id ?? null,
|
|
||||||
'sort_order' => $request->sort_order,
|
|
||||||
]);
|
|
||||||
DB::commit();
|
DB::commit();
|
||||||
return response()->json(['message' => 'Successfully created'], 200);
|
return response()->json(['message' => 'Successfully created'], 200);
|
||||||
}catch(\Exception $e){
|
}catch(\Exception $e){
|
||||||
@@ -77,21 +66,13 @@ class MenusController extends Controller
|
|||||||
/**
|
/**
|
||||||
* Update the specified resource in storage.
|
* Update the specified resource in storage.
|
||||||
*/
|
*/
|
||||||
public function update(Request $request, string $id)
|
public function update(MenuRequest $request, string $id)
|
||||||
{
|
{
|
||||||
try{
|
try{
|
||||||
$validateData = $request->validate([
|
$validate_menu = $request->validated();
|
||||||
'name' => 'required',
|
|
||||||
'url'=> 'required',
|
|
||||||
'icon'=> 'nullable',
|
|
||||||
'parent_id' => 'nullable',
|
|
||||||
'sort_order' => 'required',
|
|
||||||
]);
|
|
||||||
|
|
||||||
$menu = Menu::findOrFail($id);
|
$menu = Menu::findOrFail($id);
|
||||||
|
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
$menu->update($validateData);
|
$menu->update($validate_menu);
|
||||||
DB::commit();
|
DB::commit();
|
||||||
return response()->json(['message' => 'Successfully updated'], 200);
|
return response()->json(['message' => 'Successfully updated'], 200);
|
||||||
}catch(\Exception $e){
|
}catch(\Exception $e){
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Http\Requests\RoleRequest;
|
||||||
use App\Models\Menu;
|
use App\Models\Menu;
|
||||||
use App\Models\Role;
|
use App\Models\Role;
|
||||||
use App\Models\RoleMenu;
|
use App\Models\RoleMenu;
|
||||||
@@ -31,16 +32,13 @@ class RolesController extends Controller
|
|||||||
/**
|
/**
|
||||||
* Store a newly created resource in storage.
|
* Store a newly created resource in storage.
|
||||||
*/
|
*/
|
||||||
public function store(Request $request)
|
public function store(RoleRequest $request)
|
||||||
{
|
{
|
||||||
try{
|
try{
|
||||||
$request->validate([
|
$validate_role = $request->validated();
|
||||||
"name" => "required|unique:roles,name",
|
|
||||||
"description" => "nullable",
|
|
||||||
]);
|
|
||||||
|
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
Role::create($request->all());
|
Role::create($validate_role);
|
||||||
DB::commit();
|
DB::commit();
|
||||||
return response()->json(['message' => 'Role created successfully'], 201);
|
return response()->json(['message' => 'Role created successfully'], 201);
|
||||||
}
|
}
|
||||||
@@ -70,18 +68,14 @@ class RolesController extends Controller
|
|||||||
/**
|
/**
|
||||||
* Update the specified resource in storage.
|
* Update the specified resource in storage.
|
||||||
*/
|
*/
|
||||||
public function update(Request $request, string $id)
|
public function update(RoleRequest $request, string $id)
|
||||||
{
|
{
|
||||||
try{
|
try{
|
||||||
|
$validate_role = $request->validated();
|
||||||
$role = Role::findOrFail($id);
|
$role = Role::findOrFail($id);
|
||||||
// Validate request data
|
|
||||||
$validatedData = $request->validate([
|
|
||||||
'name' => 'required|string|max:255|unique:roles,name,' . $id, // Ensure name is unique except for the current role
|
|
||||||
'description' => 'nullable|string|max:500',
|
|
||||||
]);
|
|
||||||
|
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
$role->update($validatedData);
|
$role->update($validate_role);
|
||||||
DB::commit();
|
DB::commit();
|
||||||
return response()->json(['message' => 'Role updated successfully'], 200);
|
return response()->json(['message' => 'Role updated successfully'], 200);
|
||||||
}catch(\Exception $e){
|
}catch(\Exception $e){
|
||||||
@@ -97,7 +91,7 @@ class RolesController extends Controller
|
|||||||
{
|
{
|
||||||
try{
|
try{
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
$deleted = Role::findOrFail($id)->delete();
|
Role::findOrFail($id)->delete();
|
||||||
DB::commit();
|
DB::commit();
|
||||||
return response()->json(['success' => true, "message" => "Successfully deleted"]);
|
return response()->json(['success' => true, "message" => "Successfully deleted"]);
|
||||||
}catch(\Exception $e){
|
}catch(\Exception $e){
|
||||||
|
|||||||
32
app/Http/Requests/MenuRequest.php
Normal file
32
app/Http/Requests/MenuRequest.php
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class MenuRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'name' => ['required','string','max:255'],
|
||||||
|
'url' => ['nullable','string','max:255'],
|
||||||
|
'icon' => ['nullable','string','max:255'],
|
||||||
|
'parent_id' => ['nullable','exists:menus,id'],
|
||||||
|
'sort_order' => ['required','integer'],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
30
app/Http/Requests/RoleRequest.php
Normal file
30
app/Http/Requests/RoleRequest.php
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class RoleRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
$roleId = $this->route('role');
|
||||||
|
return [
|
||||||
|
'name' => 'required|string|max:255|unique:roles,name,' . ($roleId ?? 'NULL') . ',id',
|
||||||
|
'description' => 'nullable|string',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -34,51 +34,59 @@ class GoogleSheetService
|
|||||||
|
|
||||||
public function getLastRowByColumn($column = "A")
|
public function getLastRowByColumn($column = "A")
|
||||||
{
|
{
|
||||||
// Ambil spreadsheet
|
try{
|
||||||
$spreadsheet = $this->service->spreadsheets->get($this->spreadsheetID);
|
// Ambil spreadsheet
|
||||||
$sheets = $spreadsheet->getSheets();
|
$spreadsheet = $this->service->spreadsheets->get($this->spreadsheetID);
|
||||||
|
$sheets = $spreadsheet->getSheets();
|
||||||
if (!empty($sheets)) {
|
|
||||||
// Ambil nama sheet pertama dengan benar
|
if (!empty($sheets)) {
|
||||||
$firstSheetTitle = $sheets[0]->getProperties()->getTitle();
|
// Ambil nama sheet pertama dengan benar
|
||||||
|
$firstSheetTitle = $sheets[0]->getProperties()->getTitle();
|
||||||
// ✅ Format range harus benar!
|
|
||||||
$range = "{$firstSheetTitle}!{$column}:{$column}";
|
// ✅ Format range harus benar!
|
||||||
|
$range = "{$firstSheetTitle}!{$column}:{$column}";
|
||||||
// Ambil data dari kolom yang diminta
|
|
||||||
$response = $this->service->spreadsheets_values->get($this->spreadsheetID, $range);
|
// Ambil data dari kolom yang diminta
|
||||||
$values = $response->getValues();
|
$response = $this->service->spreadsheets_values->get($this->spreadsheetID, $range);
|
||||||
|
$values = $response->getValues();
|
||||||
// Cek nilai terakhir yang tidak kosong
|
|
||||||
$lastRow = 0;
|
// Cek nilai terakhir yang tidak kosong
|
||||||
if (!empty($values)) {
|
$lastRow = 0;
|
||||||
foreach ($values as $index => $row) {
|
if (!empty($values)) {
|
||||||
if (!empty($row[0])) { // Jika ada data, update lastRow
|
foreach ($values as $index => $row) {
|
||||||
$lastRow = $index + 1;
|
if (!empty($row[0])) { // Jika ada data, update lastRow
|
||||||
|
$lastRow = $index + 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return $lastRow;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $lastRow;
|
return 0;
|
||||||
|
}catch(\Exception $e){
|
||||||
|
throw $e;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
public function getHeader()
|
public function getHeader()
|
||||||
{
|
{
|
||||||
$spreadsheet = $this->service->spreadsheets->get($this->spreadsheetID);
|
try{
|
||||||
$sheets = $spreadsheet->getSheets();
|
$spreadsheet = $this->service->spreadsheets->get($this->spreadsheetID);
|
||||||
|
$sheets = $spreadsheet->getSheets();
|
||||||
// Ambil nama sheet pertama
|
|
||||||
$firstSheetTitle = $sheets[0]->getProperties()->getTitle();
|
// Ambil nama sheet pertama
|
||||||
|
$firstSheetTitle = $sheets[0]->getProperties()->getTitle();
|
||||||
// Ambil data dari baris pertama (header)
|
|
||||||
$range = "{$firstSheetTitle}!1:1";
|
// Ambil data dari baris pertama (header)
|
||||||
$response = $this->service->spreadsheets_values->get($this->spreadsheetID, $range);
|
$range = "{$firstSheetTitle}!1:1";
|
||||||
$values = $response->getValues();
|
$response = $this->service->spreadsheets_values->get($this->spreadsheetID, $range);
|
||||||
|
$values = $response->getValues();
|
||||||
// Kembalikan header (baris pertama)
|
|
||||||
return !empty($values) ? $values[0] : [];
|
// Kembalikan header (baris pertama)
|
||||||
|
return !empty($values) ? $values[0] : [];
|
||||||
|
}catch(\Exception $e){
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getLastColumn()
|
public function getLastColumn()
|
||||||
@@ -99,33 +107,37 @@ class GoogleSheetService
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function getSheetDataCollection($totalRow = 10){
|
public function getSheetDataCollection($totalRow = 10){
|
||||||
$spreadsheet = $this->service->spreadsheets->get($this->spreadsheetID);
|
try{
|
||||||
$sheets = $spreadsheet->getSheets();
|
$spreadsheet = $this->service->spreadsheets->get($this->spreadsheetID);
|
||||||
$firstSheetTitle = $sheets[0]->getProperties()->getTitle();
|
$sheets = $spreadsheet->getSheets();
|
||||||
|
$firstSheetTitle = $sheets[0]->getProperties()->getTitle();
|
||||||
$header = $this->getHeader();
|
|
||||||
$header = array_map(function($columnHeader) {
|
$header = $this->getHeader();
|
||||||
// Trim spaces first, then replace non-alphanumeric characters with underscores
|
$header = array_map(function($columnHeader) {
|
||||||
$columnHeader = trim($columnHeader);
|
// Trim spaces first, then replace non-alphanumeric characters with underscores
|
||||||
return strtolower(preg_replace('/[^A-Za-z0-9_]/', '_', $columnHeader));
|
$columnHeader = trim($columnHeader);
|
||||||
}, $header);
|
return strtolower(preg_replace('/[^A-Za-z0-9_]/', '_', $columnHeader));
|
||||||
$range = "{$firstSheetTitle}!2:{$totalRow}";
|
}, $header);
|
||||||
|
$range = "{$firstSheetTitle}!2:{$totalRow}";
|
||||||
$response = $this->service->spreadsheets_values->get($this->spreadsheetID, $range);
|
|
||||||
$values = $response->getValues();
|
$response = $this->service->spreadsheets_values->get($this->spreadsheetID, $range);
|
||||||
|
$values = $response->getValues();
|
||||||
$mappedData = [];
|
|
||||||
if (!empty($values)) {
|
$mappedData = [];
|
||||||
foreach ($values as $row) {
|
if (!empty($values)) {
|
||||||
$rowData = [];
|
foreach ($values as $row) {
|
||||||
foreach ($header as $index => $columnHeader) {
|
$rowData = [];
|
||||||
// Map header to the corresponding value from the row
|
foreach ($header as $index => $columnHeader) {
|
||||||
$rowData[$columnHeader] = isset($row[$index]) ? $row[$index] : null;
|
// Map header to the corresponding value from the row
|
||||||
|
$rowData[$columnHeader] = isset($row[$index]) ? $row[$index] : null;
|
||||||
|
}
|
||||||
|
$mappedData[] = $rowData;
|
||||||
}
|
}
|
||||||
$mappedData[] = $rowData;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return $mappedData;
|
||||||
|
}catch(\Exception $e){
|
||||||
|
throw $e;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $mappedData;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,10 @@
|
|||||||
"__commonjsHelpers-C4iS2aBk.js"
|
"__commonjsHelpers-C4iS2aBk.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"_dropzone-B5tMhgFp.js": {
|
||||||
|
"file": "assets/dropzone-B5tMhgFp.js",
|
||||||
|
"name": "dropzone"
|
||||||
|
},
|
||||||
"_global-config-9uDKFQ8j.js": {
|
"_global-config-9uDKFQ8j.js": {
|
||||||
"file": "assets/global-config-9uDKFQ8j.js",
|
"file": "assets/global-config-9uDKFQ8j.js",
|
||||||
"name": "global-config"
|
"name": "global-config"
|
||||||
@@ -58,6 +62,10 @@
|
|||||||
"src": "node_modules/quill/dist/quill.snow.css",
|
"src": "node_modules/quill/dist/quill.snow.css",
|
||||||
"isEntry": true
|
"isEntry": true
|
||||||
},
|
},
|
||||||
|
"public/images/bg-dashboard.jpg": {
|
||||||
|
"file": "assets/bg-dashboard-CUwt8_jP.jpg",
|
||||||
|
"src": "public/images/bg-dashboard.jpg"
|
||||||
|
},
|
||||||
"resources/fonts/boxicons.eot": {
|
"resources/fonts/boxicons.eot": {
|
||||||
"file": "assets/boxicons-0t2gX1vj.eot",
|
"file": "assets/boxicons-0t2gX1vj.eot",
|
||||||
"src": "resources/fonts/boxicons.eot"
|
"src": "resources/fonts/boxicons.eot"
|
||||||
@@ -94,7 +102,7 @@
|
|||||||
"isEntry": true
|
"isEntry": true
|
||||||
},
|
},
|
||||||
"resources/js/dashboards/bigdata.js": {
|
"resources/js/dashboards/bigdata.js": {
|
||||||
"file": "assets/bigdata-DBp18hcY.js",
|
"file": "assets/bigdata-DYDUaCEC.js",
|
||||||
"name": "bigdata",
|
"name": "bigdata",
|
||||||
"src": "resources/js/dashboards/bigdata.js",
|
"src": "resources/js/dashboards/bigdata.js",
|
||||||
"isEntry": true,
|
"isEntry": true,
|
||||||
@@ -112,7 +120,7 @@
|
|||||||
"isEntry": true
|
"isEntry": true
|
||||||
},
|
},
|
||||||
"resources/js/data-settings/index.js": {
|
"resources/js/data-settings/index.js": {
|
||||||
"file": "assets/index-Bm5aE3Il.js",
|
"file": "assets/index-BOfsbw53.js",
|
||||||
"name": "index",
|
"name": "index",
|
||||||
"src": "resources/js/data-settings/index.js",
|
"src": "resources/js/data-settings/index.js",
|
||||||
"isEntry": true,
|
"isEntry": true,
|
||||||
@@ -148,6 +156,15 @@
|
|||||||
"_global-config-9uDKFQ8j.js"
|
"_global-config-9uDKFQ8j.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"resources/js/data/advertisements/form-upload.js": {
|
||||||
|
"file": "assets/form-upload-Ci7Kyzc7.js",
|
||||||
|
"name": "form-upload",
|
||||||
|
"src": "resources/js/data/advertisements/form-upload.js",
|
||||||
|
"isEntry": true,
|
||||||
|
"imports": [
|
||||||
|
"_dropzone-B5tMhgFp.js"
|
||||||
|
]
|
||||||
|
},
|
||||||
"resources/js/master/users/create.js": {
|
"resources/js/master/users/create.js": {
|
||||||
"file": "assets/create-RO4xgm-f.js",
|
"file": "assets/create-RO4xgm-f.js",
|
||||||
"name": "create",
|
"name": "create",
|
||||||
@@ -161,7 +178,7 @@
|
|||||||
"isEntry": true
|
"isEntry": true
|
||||||
},
|
},
|
||||||
"resources/js/master/users/users.js": {
|
"resources/js/master/users/users.js": {
|
||||||
"file": "assets/users-uzXjZCws.js",
|
"file": "assets/users-jfWUOWyP.js",
|
||||||
"name": "users",
|
"name": "users",
|
||||||
"src": "resources/js/master/users/users.js",
|
"src": "resources/js/master/users/users.js",
|
||||||
"isEntry": true,
|
"isEntry": true,
|
||||||
@@ -178,7 +195,7 @@
|
|||||||
"isEntry": true
|
"isEntry": true
|
||||||
},
|
},
|
||||||
"resources/js/menus/index.js": {
|
"resources/js/menus/index.js": {
|
||||||
"file": "assets/index-qw4Wj-LG.js",
|
"file": "assets/index-C4xA1kYa.js",
|
||||||
"name": "index",
|
"name": "index",
|
||||||
"src": "resources/js/menus/index.js",
|
"src": "resources/js/menus/index.js",
|
||||||
"isEntry": true,
|
"isEntry": true,
|
||||||
@@ -216,10 +233,13 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/form-fileupload.js": {
|
"resources/js/pages/form-fileupload.js": {
|
||||||
"file": "assets/form-fileupload-mrxZaoHv.js",
|
"file": "assets/form-fileupload-DGbdX8GT.js",
|
||||||
"name": "form-fileupload",
|
"name": "form-fileupload",
|
||||||
"src": "resources/js/pages/form-fileupload.js",
|
"src": "resources/js/pages/form-fileupload.js",
|
||||||
"isEntry": true
|
"isEntry": true,
|
||||||
|
"imports": [
|
||||||
|
"_dropzone-B5tMhgFp.js"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/form-flatepicker.js": {
|
"resources/js/pages/form-flatepicker.js": {
|
||||||
"file": "assets/form-flatepicker-ChSlk6xC.js",
|
"file": "assets/form-flatepicker-ChSlk6xC.js",
|
||||||
@@ -293,7 +313,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pbg-task/index.js": {
|
"resources/js/pbg-task/index.js": {
|
||||||
"file": "assets/index-BW29TEbh.js",
|
"file": "assets/index-CqcfkvSL.js",
|
||||||
"name": "index",
|
"name": "index",
|
||||||
"src": "resources/js/pbg-task/index.js",
|
"src": "resources/js/pbg-task/index.js",
|
||||||
"isEntry": true,
|
"isEntry": true,
|
||||||
@@ -310,7 +330,7 @@
|
|||||||
"isEntry": true
|
"isEntry": true
|
||||||
},
|
},
|
||||||
"resources/js/roles/index.js": {
|
"resources/js/roles/index.js": {
|
||||||
"file": "assets/index-B9clkWIC.js",
|
"file": "assets/index-C_kI_q7O.js",
|
||||||
"name": "index",
|
"name": "index",
|
||||||
"src": "resources/js/roles/index.js",
|
"src": "resources/js/roles/index.js",
|
||||||
"isEntry": true,
|
"isEntry": true,
|
||||||
@@ -366,17 +386,22 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/scss/components/_circle.scss": {
|
"resources/scss/components/_circle.scss": {
|
||||||
"file": "assets/_circle-ByHaR-XI.css",
|
"file": "assets/_circle-DgPqpfJw.css",
|
||||||
"src": "resources/scss/components/_circle.scss",
|
"src": "resources/scss/components/_circle.scss",
|
||||||
"isEntry": true
|
"isEntry": true
|
||||||
},
|
},
|
||||||
|
"resources/scss/dashboards/_bigdata.scss": {
|
||||||
|
"file": "assets/_bigdata-0hCjAhYp.css",
|
||||||
|
"src": "resources/scss/dashboards/_bigdata.scss",
|
||||||
|
"isEntry": true
|
||||||
|
},
|
||||||
"resources/scss/icons.scss": {
|
"resources/scss/icons.scss": {
|
||||||
"file": "assets/icons-CHxf0fE3.css",
|
"file": "assets/icons-CHxf0fE3.css",
|
||||||
"src": "resources/scss/icons.scss",
|
"src": "resources/scss/icons.scss",
|
||||||
"isEntry": true
|
"isEntry": true
|
||||||
},
|
},
|
||||||
"resources/scss/style.scss": {
|
"resources/scss/style.scss": {
|
||||||
"file": "assets/style-DF7fxh2D.css",
|
"file": "assets/style-DUYVmgAM.css",
|
||||||
"src": "resources/scss/style.scss",
|
"src": "resources/scss/style.scss",
|
||||||
"isEntry": true
|
"isEntry": true
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
643
pupr_app.sql
643
pupr_app.sql
File diff suppressed because one or more lines are too long
@@ -21,7 +21,7 @@ class="authentication-bg"
|
|||||||
<img src="/images/dputr-kab-bandung.png" height="auto" width="100%" alt="logo light">
|
<img src="/images/dputr-kab-bandung.png" height="auto" width="100%" alt="logo light">
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<h4 class="fw-bold text-dark mb-2">Welcome Back!</h3>
|
<h4 class="fw-bold text-dark mb-2">Welcome Back!</h4>
|
||||||
<p class="text-muted">Sign in to your account to continue</p>
|
<p class="text-muted">Sign in to your account to continue</p>
|
||||||
</div>
|
</div>
|
||||||
<form method="POST" action="{{ route('login') }}" class="mt-4">
|
<form method="POST" action="{{ route('login') }}" class="mt-4">
|
||||||
@@ -39,25 +39,14 @@ class="authentication-bg"
|
|||||||
<input type="email" class="form-control" id="email" name="email" value="user@demo.com" placeholder="Enter your email">
|
<input type="email" class="form-control" id="email" name="email" value="user@demo.com" placeholder="Enter your email">
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
{{-- <div class="d-flex justify-content-between align-items-center">
|
|
||||||
<label for="password" class="form-label">Password</label>
|
|
||||||
<a href="{{ route ('password.request') }}" class="text-decoration-none small text-muted">Forgot password?</a>
|
|
||||||
</div> --}}
|
|
||||||
<input type="password" class="form-control" id="password" name="password" value="password" placeholder="Enter your password">
|
<input type="password" class="form-control" id="password" name="password" value="password" placeholder="Enter your password">
|
||||||
</div>
|
</div>
|
||||||
{{-- <div class="form-check mb-3">
|
|
||||||
<input type="checkbox" class="form-check-input" id="remember-me">
|
|
||||||
<label class="form-check-label" for="remember-me">Remember me</label>
|
|
||||||
</div> --}}
|
|
||||||
<div class="d-grid">
|
<div class="d-grid">
|
||||||
<button class="btn btn-dark btn-lg fw-medium" type="submit">Sign In</button>
|
<button class="btn btn-dark btn-lg fw-medium" type="submit">Sign In</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{-- <p class="text-center mt-4 text-white text-opacity-50">Don't have an account?
|
|
||||||
<a href="{{ route ('register') }}" class="text-decoration-none text-white fw-bold">Sign Up</a>
|
|
||||||
</p> --}}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
@props(['buttonText' => 'Confirm', 'confirmationMessage' => 'Are you sure?'])
|
@props(['buttonText' => 'Confirm', 'confirmationMessage' => 'Are you sure?'])
|
||||||
|
|
||||||
<div class="modal fade" id="modalConfirmation" tabindex="-1"
|
<div class="modal fade" id="modalConfirmation" tabindex="-1" aria-labelledby="modalConfirmationTitle">
|
||||||
aria-labelledby="modalConfirmationTitle" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-dialog-centered">
|
<div class="modal-dialog modal-dialog-centered">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
|
|||||||
@@ -154,7 +154,7 @@
|
|||||||
</a>
|
</a>
|
||||||
<div class="dropdown-menu dropdown-menu-end">
|
<div class="dropdown-menu dropdown-menu-end">
|
||||||
<!-- item-->
|
<!-- item-->
|
||||||
<h6 class="dropdown-header">Welcome!</h6>
|
<h6 class="dropdown-header">{{ Auth::user()->email }}</h6>
|
||||||
|
|
||||||
<!-- <a class="dropdown-item" href="#">
|
<!-- <a class="dropdown-item" href="#">
|
||||||
<iconify-icon icon="solar:user-outline"
|
<iconify-icon icon="solar:user-outline"
|
||||||
|
|||||||
@@ -8,235 +8,150 @@
|
|||||||
@include('layouts.partials/page-title', ['title' => 'Data', 'subtitle' => 'PBG'])
|
@include('layouts.partials/page-title', ['title' => 'Data', 'subtitle' => 'PBG'])
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="card">
|
<div class="col-12">
|
||||||
<div class="card-header">
|
<div class="card">
|
||||||
<ul class="nav nav-tabs nav-justified">
|
<div class="card-body">
|
||||||
<li class="nav-item">
|
<div class="row">
|
||||||
<a href="#pbgTask" data-bs-toggle="tab" aria-expanded="true" class="nav-link active">
|
<div class="col-md-6">
|
||||||
<span class="d-none d-sm-block">PBG Task</span>
|
<div class="mb-3">
|
||||||
</a>
|
<dt>Name</dt>
|
||||||
</li>
|
<dd>{{$data->name}}</dd>
|
||||||
<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>
|
||||||
<div class="col-md-6">
|
<div class="mb-3">
|
||||||
<div class="mb-3">
|
<dt>Owner Name</dt>
|
||||||
<dt>Status Name</dt>
|
<dd>{{$data->owner_name}}</dd>
|
||||||
<dd>{{$data->status_name}}</dd>
|
</div>
|
||||||
</div>
|
<div class="mb-3">
|
||||||
<div class="mb-3">
|
<dt>Aplication Type Name</dt>
|
||||||
<dt>SLF Status Name</dt>
|
<dd>{{$data->application_type_name}}</dd>
|
||||||
<dd>{{$data->slf_status_name}}</dd>
|
</div>
|
||||||
</div>
|
<div class="mb-3">
|
||||||
<div class="mb-3">
|
<dt>Condition</dt>
|
||||||
<dt>Function Type</dt>
|
<dd>{{$data->condition}}</dd>
|
||||||
<dd>{{$data->function_type}}</dd>
|
</div>
|
||||||
</div>
|
<div class="mb-3">
|
||||||
<div class="mb-3">
|
<dt>Registration Number</dt>
|
||||||
<dt>Consultation Type</dt>
|
<dd>{{$data->registration_number}}</dd>
|
||||||
<dd>{{$data->consultation_type}}</dd>
|
</div>
|
||||||
</div>
|
<div class="mb-3">
|
||||||
<div class="mb-3">
|
<dt>Document Number</dt>
|
||||||
<dt>Due Date</dt>
|
<dd>{{$data->document_number}}</dd>
|
||||||
<dd>{{$data->due_date}}</dd>
|
</div>
|
||||||
</div>
|
<div>
|
||||||
<div class="mb-3">
|
<dt>Status Name</dt>
|
||||||
<dt>Task Created At</dt>
|
<dd>{{$data->status_name}}</dd>
|
||||||
<dd>{{$data->task_created_at}}</dd>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="mb-3">
|
||||||
|
<dt>Address</dt>
|
||||||
|
<dd>{{$data->address}}</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>
|
||||||
|
<dt>Task Created At</dt>
|
||||||
|
<dd>{{$data->task_created_at}}</dd>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-pane" id="pbgTaskRetributions">
|
</div>
|
||||||
@if ($data->pbg_task_retributions)
|
</div>
|
||||||
<div class="row">
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-12">
|
||||||
<div class="mb-3">
|
<div class="card">
|
||||||
<dt>Luas Bangunan</dt>
|
<div class="card-header">
|
||||||
<dd>{{$data->pbg_task_retributions->luas_bangunan}}</dd>
|
<ul class="nav nav-tabs nav-justified">
|
||||||
|
<li class="nav-item">
|
||||||
|
<a href="#pbgTaskRetributions" data-bs-toggle="tab" aria-expanded="false"
|
||||||
|
class="nav-link active">
|
||||||
|
<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="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>
|
||||||
<div class="mb-3">
|
<div class="col-md-6">
|
||||||
<dt>Indeks Lokalitas</dt>
|
<div class="mb-3">
|
||||||
<dd>{{$data->pbg_task_retributions->indeks_lokalitas}}</dd>
|
<dt>Nilai Retribusi Bangunan</dt>
|
||||||
</div>
|
<dd>{{$data->pbg_task_retributions->nilai_retribusi_bangunan}}</dd>
|
||||||
<div class="mb-3">
|
</div>
|
||||||
<dt>Wilayah SHST</dt>
|
<div class="mb-3">
|
||||||
<dd>{{$data->pbg_task_retributions->wilayah_shst}}</dd>
|
<dt>Nilai Prasarana</dt>
|
||||||
</div>
|
<dd>{{$data->pbg_task_retributions->nilai_prasarana}}</dd>
|
||||||
<div class="mb-3">
|
</div>
|
||||||
<dt>Kegiatan Name</dt>
|
<div class="mb-3">
|
||||||
<dd>{{$data->pbg_task_retributions->kegiatan_name}}</dd>
|
<dt>PBG Dokumen</dt>
|
||||||
</div>
|
<dd>{{$data->pbg_task_retributions->pbg_document}}</dd>
|
||||||
<div class="mb-3">
|
</div>
|
||||||
<dt>Nilai SHST</dt>
|
<div class="mb-3">
|
||||||
<dd>{{$data->pbg_task_retributions->nilai_shst}}</dd>
|
<dt>Underpayment</dt>
|
||||||
</div>
|
<dd>{{$data->pbg_task_retributions->underpayment}}</dd>
|
||||||
<div class="mb-3">
|
</div>
|
||||||
<dt>Indeks Integrasi</dt>
|
<div class="mb-3">
|
||||||
<dd>{{$data->pbg_task_retributions->indeks_terintegrasi}}</dd>
|
<dt>SKRD Amount</dt>
|
||||||
</div>
|
<dd>{{$data->pbg_task_retributions->skrd_amount}}</dd>
|
||||||
<div class="mb-3">
|
</div>
|
||||||
<dt>Indeks Bg Terbangun</dt>
|
|
||||||
<dd>{{$data->pbg_task_retributions->indeks_bg_terbangun}}</dd>
|
|
||||||
</div>
|
</div>
|
||||||
</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 d-flex flex-warp gap-3 justify-content-center">
|
|
||||||
@if ($data->pbg_task_retributions && $data->pbg_task_retributions->pbg_task_prasarana)
|
|
||||||
@foreach ($data->pbg_task_retributions->pbg_task_prasarana as $prasarana)
|
|
||||||
<div class="border p-3 rounded shadow-sm col-md-4">
|
|
||||||
<div class="mb-3">
|
|
||||||
<dt>Prasarana Type</dt>
|
|
||||||
<dd>{{$prasarana->prasarana_type}}</dd>
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<dt>Building Type</dt>
|
|
||||||
<dd>{{$prasarana->building_type}}</dd>
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<dt>Total</dt>
|
|
||||||
<dd>{{$prasarana->total}}</dd>
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<dt>Quantity</dt>
|
|
||||||
<dd>{{$prasarana->quantity}}</dd>
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<dt>Unit</dt>
|
|
||||||
<dd>{{$prasarana->unit}}</dd>
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<dt>Index Prasarana</dt>
|
|
||||||
<dd>{{$prasarana->index_prasarana}}</dd>
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<dt>Created At</dt>
|
|
||||||
<dd>{{$prasarana->created_at}}</dd>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@endforeach
|
|
||||||
@else
|
@else
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
@@ -245,6 +160,92 @@
|
|||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</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 d-flex flex-warp gap-3 justify-content-center">
|
||||||
|
@if ($data->pbg_task_retributions && $data->pbg_task_retributions->pbg_task_prasarana)
|
||||||
|
@foreach ($data->pbg_task_retributions->pbg_task_prasarana as $prasarana)
|
||||||
|
<div class="border p-3 rounded shadow-sm col-md-4">
|
||||||
|
<div class="mb-3">
|
||||||
|
<dt>Prasarana Type</dt>
|
||||||
|
<dd>{{$prasarana->prasarana_type}}</dd>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<dt>Building Type</dt>
|
||||||
|
<dd>{{$prasarana->building_type}}</dd>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<dt>Total</dt>
|
||||||
|
<dd>{{$prasarana->total}}</dd>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<dt>Quantity</dt>
|
||||||
|
<dd>{{$prasarana->quantity}}</dd>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<dt>Unit</dt>
|
||||||
|
<dd>{{$prasarana->unit}}</dd>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<dt>Index Prasarana</dt>
|
||||||
|
<dd>{{$prasarana->index_prasarana}}</dd>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<dt>Created At</dt>
|
||||||
|
<dd>{{$prasarana->created_at}}</dd>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
@else
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
Data Not Available
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
966
sibedas.sql
Normal file
966
sibedas.sql
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user