create redirect link for dashboard pimpinan
This commit is contained in:
22
app/Enums/PbgTaskFilterData.php
Normal file
22
app/Enums/PbgTaskFilterData.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace App\Enums;
|
||||
|
||||
enum PbgTaskFilterData : string
|
||||
{
|
||||
case non_business = 'non-business';
|
||||
case business = 'business';
|
||||
case verified = 'verified';
|
||||
case non_verified = 'non-verified';
|
||||
case all = 'all';
|
||||
|
||||
public static function getAllOptions() : array {
|
||||
return [
|
||||
self::all->value => 'Potensi Berkas',
|
||||
self::business->value => 'Usaha',
|
||||
self::non_business->value => 'Bukan Usaha',
|
||||
self::verified->value => 'Terverifikasi',
|
||||
self::non_verified->value => 'Belum Terverifikasi',
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@ use App\Http\Resources\RequestAssignmentResouce;
|
||||
use App\Models\PbgTask;
|
||||
use App\Models\PbgTaskGoogleSheet;
|
||||
use Barryvdh\DomPDF\Facade\Pdf;
|
||||
use DB;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Exception;
|
||||
use Illuminate\Http\Request;
|
||||
use Log;
|
||||
@@ -21,15 +21,48 @@ class RequestAssignmentController extends Controller
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$query = PbgTask::with(['attachments' => function ($q) {
|
||||
$q->whereIn('pbg_type', ['berita_acara', 'bukti_bayar']);
|
||||
}])->orderBy('id', 'desc');
|
||||
$query = PbgTask::with([
|
||||
'attachments' => function ($q) {
|
||||
$q->whereIn('pbg_type', ['berita_acara', 'bukti_bayar']);
|
||||
},
|
||||
'googleSheet'
|
||||
])->orderBy('id', 'desc');
|
||||
|
||||
if ($request->has('filter') && !empty($request->get('filter'))) {
|
||||
$filter = strtolower($request->get('filter'));
|
||||
|
||||
switch ($filter) {
|
||||
case 'non-business':
|
||||
$query->whereRaw("LOWER(function_type) != ?", ['sebagai tempat usaha'])->orWhereNull('function_type');
|
||||
break;
|
||||
|
||||
case 'business':
|
||||
$query->whereRaw("LOWER(function_type) = ?", ['sebagai tempat usaha']);
|
||||
break;
|
||||
|
||||
case 'verified':
|
||||
$query->whereHas('googleSheet', function ($q) {
|
||||
$q->whereRaw("LOWER(status_verifikasi) = ?", ['selesai verifikasi']);
|
||||
});
|
||||
break;
|
||||
|
||||
case 'non-verified':
|
||||
$query->where(function ($q) {
|
||||
$q->whereDoesntHave('googleSheet')
|
||||
->orWhereHas('googleSheet', function ($q2) {
|
||||
$q2->whereRaw("LOWER(status_verifikasi) != ?", ['selesai verifikasi'])->orWhereNull('status_verifikasi');
|
||||
});
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($request->has('search') && !empty($request->get("search"))) {
|
||||
$query->where(function ($q) use ($request) {
|
||||
$q->where('name', 'LIKE', '%' . $request->get('search') . '%')
|
||||
->orWhere('registration_number', 'LIKE', '%' . $request->get('search') . '%')
|
||||
->orWhere('document_number', 'LIKE', '%' . $request->get('search') . '%');
|
||||
$search = $request->get('search');
|
||||
$query->where(function ($q) use ($search) {
|
||||
$q->where('name', 'LIKE', "%$search%")
|
||||
->orWhere('registration_number', 'LIKE', "%$search%")
|
||||
->orWhere('document_number', 'LIKE', "%$search%");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers\RequestAssignment;
|
||||
|
||||
use App\Enums\PbgTaskApplicationTypes;
|
||||
use App\Enums\PbgTaskFilterData;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\PbgTask;
|
||||
use Illuminate\Http\Request;
|
||||
@@ -17,27 +18,21 @@ class PbgTaskController extends Controller
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
$menuId = $request->query('menu_id');
|
||||
$user = Auth::user();
|
||||
$userId = $user->id;
|
||||
$menuId = $request->query('menu_id') ?? $request->input('menu_id');
|
||||
$filter = $request->query('filter');
|
||||
|
||||
// Ambil role_id yang dimiliki user
|
||||
$roleIds = DB::table('user_role')
|
||||
->where('user_id', $userId)
|
||||
->pluck('role_id');
|
||||
$permissions = $this->permissions[$menuId]?? []; // Avoid undefined index error
|
||||
$creator = $permissions['allow_create'] ?? 0;
|
||||
$updater = $permissions['allow_update'] ?? 0;
|
||||
$destroyer = $permissions['allow_destroy'] ?? 0;
|
||||
|
||||
// Ambil data akses berdasarkan role_id dan menu_id
|
||||
$roleAccess = DB::table('role_menu')
|
||||
->whereIn('role_id', $roleIds)
|
||||
->where('menu_id', $menuId)
|
||||
->first();
|
||||
|
||||
// Pastikan roleAccess tidak null sebelum mengakses properti
|
||||
$creator = $roleAccess->allow_create ?? 0;
|
||||
$updater = $roleAccess->allow_update ?? 0;
|
||||
$destroyer = $roleAccess->allow_destroy ?? 0;
|
||||
|
||||
return view('pbg_task.index', compact('creator', 'updater', 'destroyer'));
|
||||
return view('pbg_task.index', [
|
||||
'creator' => $creator,
|
||||
'updater' => $updater,
|
||||
'destroyer' => $destroyer,
|
||||
'filter' => $filter,
|
||||
'filterOptions' => PbgTaskFilterData::getAllOptions(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -34,11 +34,42 @@ class PbgTasks {
|
||||
pbgType: "berita_acara",
|
||||
bindFlag: "uploadHandlerBoundBeritaAcara",
|
||||
});
|
||||
this.initTableRequestAssignment();
|
||||
this.handleFilterDatatable();
|
||||
this.handleSendNotification();
|
||||
}
|
||||
|
||||
initTableRequestAssignment() {
|
||||
handleFilterDatatable() {
|
||||
const form = document.getElementById("filter-form");
|
||||
const filterSelect = document.getElementById("filter-select");
|
||||
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
const initialFilter = urlParams.get("filter") || "";
|
||||
|
||||
this.initTableRequestAssignment(initialFilter); // Initial load with query param
|
||||
|
||||
form.addEventListener("submit", (e) => {
|
||||
e.preventDefault();
|
||||
|
||||
const selectedFilter = filterSelect.value;
|
||||
|
||||
const params = new URLSearchParams(window.location.search);
|
||||
params.set("filter", selectedFilter);
|
||||
|
||||
// Update the URL without reloading
|
||||
window.history.replaceState(
|
||||
{},
|
||||
"",
|
||||
`${location.pathname}?${params}`
|
||||
);
|
||||
|
||||
// Call the method again with the selected filter
|
||||
this.initTableRequestAssignment(selectedFilter);
|
||||
});
|
||||
}
|
||||
|
||||
initTableRequestAssignment(filterValue = "") {
|
||||
const urlBase = `${GlobalConfig.apiHost}/api/request-assignments`;
|
||||
|
||||
// Ambil token
|
||||
const token = document
|
||||
.querySelector('meta[name="api-token"]')
|
||||
@@ -124,7 +155,10 @@ class PbgTasks {
|
||||
],
|
||||
search: {
|
||||
server: {
|
||||
url: (prev, keyword) => `${prev}?search=${keyword}`,
|
||||
url: (prev, keyword) =>
|
||||
`${prev}${
|
||||
prev.includes("?") ? "&" : "?"
|
||||
}search=${keyword}`,
|
||||
},
|
||||
debounceTimeout: 1000,
|
||||
},
|
||||
@@ -139,7 +173,7 @@ class PbgTasks {
|
||||
},
|
||||
sort: true,
|
||||
server: {
|
||||
url: `${GlobalConfig.apiHost}/api/request-assignments`,
|
||||
url: `${urlBase}?filter=${filterValue}`,
|
||||
credentials: "include",
|
||||
headers: {
|
||||
Authorization: `Bearer ${token}`,
|
||||
|
||||
@@ -38,7 +38,8 @@
|
||||
'document_type' => '',
|
||||
'document_id' => 'chart-target-pad',
|
||||
'visible_small_circle' => true,
|
||||
'style' => 'left:200px;'
|
||||
'style' => 'left:200px;',
|
||||
'document_url' => route('data-settings.index', ['menu_id' => 12])
|
||||
])
|
||||
@endcomponent
|
||||
|
||||
@@ -56,7 +57,8 @@
|
||||
'document_type' => 'Pemohon',
|
||||
'document_id' => 'chart-total-potensi',
|
||||
'visible_small_circle' => true,
|
||||
'style' => 'left:400px;top:150px;'
|
||||
'style' => 'left:400px;top:150px;',
|
||||
'document_url' => route('pbg-task.index', ['menu_id' => 13, 'filter' => 'all'])
|
||||
])
|
||||
@endcomponent
|
||||
|
||||
@@ -72,7 +74,8 @@
|
||||
'document_type' => '',
|
||||
'document_id' => 'chart-potensi-tata-ruang',
|
||||
'visible_small_circle' => true,
|
||||
'style' => 'left:600px;'
|
||||
'style' => 'left:600px;',
|
||||
'document_url' => route('web-spatial-plannings.index', ['menu_id' => 24])
|
||||
])
|
||||
@endcomponent
|
||||
|
||||
@@ -85,7 +88,8 @@
|
||||
'document_type' => 'Berkas',
|
||||
'document_id' => 'chart-non-business',
|
||||
'visible_small_circle' => true,
|
||||
'style' => 'left:900px;top:150px;'
|
||||
'style' => 'left:900px;top:150px;',
|
||||
'document_url' => route('pbg-task.index', ['menu_id' => 13, 'filter' => 'non-business'])
|
||||
])
|
||||
@endcomponent
|
||||
|
||||
@@ -95,7 +99,8 @@
|
||||
'document_type' => 'Berkas',
|
||||
'document_id' => 'chart-business',
|
||||
'visible_small_circle' => true,
|
||||
'style' => 'left:900px;top:400px;'
|
||||
'style' => 'left:900px;top:400px;',
|
||||
'document_url' => route('pbg-task.index', ['menu_id' => 13, 'filter' => 'business'])
|
||||
])
|
||||
@endcomponent
|
||||
|
||||
@@ -105,7 +110,8 @@
|
||||
'document_type' => 'Berkas',
|
||||
'document_id' => 'chart-berkas-terverifikasi',
|
||||
'visible_small_circle' => true,
|
||||
'style' => 'top:300px;left:200px;'
|
||||
'style' => 'top:300px;left:200px;',
|
||||
'document_url' => route('pbg-task.index', ['menu_id' => 13, 'filter' => 'verified'])
|
||||
])
|
||||
@endcomponent
|
||||
|
||||
@@ -121,7 +127,8 @@
|
||||
'document_type' => 'Berkas',
|
||||
'document_id' => 'chart-berkas-belum-terverifikasi',
|
||||
'visible_small_circle' => true,
|
||||
'style' => 'top:300px;left:600px;'
|
||||
'style' => 'top:300px;left:600px;',
|
||||
'document_url' => route('pbg-task.index', ['menu_id' => 13, 'filter' => 'non-verified'])
|
||||
])
|
||||
@endcomponent
|
||||
|
||||
@@ -138,7 +145,8 @@
|
||||
'document_type' => 'Berkas',
|
||||
'document_id' => 'chart-realisasi-tebit-pbg',
|
||||
'visible_small_circle' => true,
|
||||
'style' => 'top:550px;left:100px;'
|
||||
'style' => 'top:550px;left:100px;',
|
||||
'document_url' => 'https://docs.google.com/spreadsheets/d/1QoXzuLdEX3MK70Yrfigz0Qj5rAt4T819jX85vubBNdY/edit?gid=1514195399#gid=1514195399'
|
||||
])
|
||||
@endcomponent
|
||||
|
||||
@@ -151,7 +159,8 @@
|
||||
'document_type' => 'Berkas',
|
||||
'document_id' => 'chart-menunggu-klik-dpmptsp',
|
||||
'visible_small_circle' => true,
|
||||
'style' => 'top:550px;left:400px'
|
||||
'style' => 'top:550px;left:400px',
|
||||
'document_url' => 'https://docs.google.com/spreadsheets/d/1QoXzuLdEX3MK70Yrfigz0Qj5rAt4T819jX85vubBNdY/edit?gid=1514195399#gid=1514195399'
|
||||
])
|
||||
@endcomponent
|
||||
|
||||
@@ -164,7 +173,8 @@
|
||||
'document_type' => 'Berkas',
|
||||
'document_id' => 'chart-proses-dinas-teknis',
|
||||
'visible_small_circle' => true,
|
||||
'style' => 'top:550px;left:700px'
|
||||
'style' => 'top:550px;left:700px',
|
||||
'document_url' => 'https://docs.google.com/spreadsheets/d/1QoXzuLdEX3MK70Yrfigz0Qj5rAt4T819jX85vubBNdY/edit?gid=1514195399#gid=1514195399'
|
||||
])
|
||||
@endcomponent
|
||||
</div>
|
||||
|
||||
@@ -42,9 +42,29 @@
|
||||
<a href="{{ route('pbg-task.create')}}" class="btn btn-success btn-sm d-block d-sm-inline w-auto">Create</a>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<form id="filter-form">
|
||||
<div class="row pb-3">
|
||||
<div class="col-md-4">
|
||||
<select name="filter" id="filter-select" class="form-select">
|
||||
@foreach ($filterOptions as $key => $label)
|
||||
<option value="{{ $key }}" {{ request('filter') == $key ? 'selected' : '' }}>
|
||||
{{ $label }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<input name="menu_id" value="13" type="hidden" />
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<button type="submit" class="btn btn-primary w-100">Apply</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<!-- Table or Data Display Area -->
|
||||
<div id="table-pbg-tasks"
|
||||
data-updater="{{ $updater }}"
|
||||
data-destroyer="{{ $destroyer }}">
|
||||
data-updater="{{ $updater }}"
|
||||
data-destroyer="{{ $destroyer }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user