done -> next review

This commit is contained in:
JokoPrasetio 2026-03-06 16:07:40 +07:00
parent f19a414f22
commit de2c087d93
4 changed files with 39 additions and 18 deletions

View File

@ -167,8 +167,16 @@ class DashboardController extends Controller
$allKategoriValues = array_values(array_filter(array_merge($kategoriValues, $kategoriHeaderValues)));
$kategoriTypes = [];
$kategoriIds = [];
$kategoriHukumValues = [];
foreach ($allKategoriValues as $val) {
$lower = strtolower(trim((string) $val));
if (str_starts_with($lower, 'hukum:')) {
$hukumVal = trim(substr((string) $val, strlen('hukum:')));
if ($hukumVal !== '') {
$kategoriHukumValues[] = $hukumVal;
}
continue;
}
if (in_array($lower, ['akreditasi', 'akre'], true)) {
$kategoriTypes[] = 'akreditasi';
continue;
@ -195,13 +203,17 @@ class DashboardController extends Controller
->whereIn('id_unit_kerja', $unitIds);
$query = (clone $baseQuery)
->when(!empty($kategoriIds) || !empty($kategoriTypes), function ($q) use ($kategoriIds, $kategoriTypes) {
$q->where(function ($sub) use ($kategoriIds, $kategoriTypes) {
->when(!empty($kategoriIds) || !empty($kategoriTypes) || !empty($kategoriHukumValues), function ($q) use ($kategoriIds, $kategoriTypes, $kategoriHukumValues) {
$q->where(function ($sub) use ($kategoriIds, $kategoriTypes, $kategoriHukumValues) {
$hasClause = false;
if (!empty($kategoriIds)) {
$sub->whereIn('master_kategori_directory_id', $kategoriIds);
$hasClause = true;
}
if (!empty($kategoriHukumValues)) {
$hasClause ? $sub->orWhereIn('kategori_hukum', $kategoriHukumValues) : $sub->whereIn('kategori_hukum', $kategoriHukumValues);
$hasClause = true;
}
if (in_array('akreditasi', $kategoriTypes, true)) {
$sub->where('is_akre', true);
$hasClause = true;
@ -230,11 +242,8 @@ class DashboardController extends Controller
return $item;
});
$kategoriList = (clone $baseQuery)->get()->map(function($item){
if ($item->is_akre) {
return ['id' => 'akreditasi', 'label' => 'Kategori Akreditasi'];
}
if (!empty($item->kategori_hukum)) {
return ['id' => 'hukum', 'label' => 'Kategori Hukum'];
return ['id' => 'hukum:' . $item->kategori_hukum, 'label' => $item->kategori_hukum];
}
$label = $item->kategori->nama_kategori_directory ?? $item->nama_kategori_directory ?? 'Kategori';
$id = $item->master_kategori_directory_id ?? $label;
@ -998,8 +1007,16 @@ class DashboardController extends Controller
$allKategoriValues = array_values(array_filter(array_merge($kategoriValues, $kategoriHeaderValues)));
$kategoriTypes = [];
$kategoriIds = [];
$kategoriHukumValues = [];
foreach ($allKategoriValues as $val) {
$lower = strtolower(trim((string) $val));
if (str_starts_with($lower, 'hukum:')) {
$hukumVal = trim(substr((string) $val, strlen('hukum:')));
if ($hukumVal !== '') {
$kategoriHukumValues[] = $hukumVal;
}
continue;
}
if (in_array($lower, ['akreditasi', 'akre'], true)) {
$kategoriTypes[] = 'akreditasi';
continue;
@ -1021,13 +1038,17 @@ class DashboardController extends Controller
});
$query = (clone $baseQuery)
->when(!empty($kategoriIds) || !empty($kategoriTypes), function ($q) use ($kategoriIds, $kategoriTypes) {
$q->where(function ($sub) use ($kategoriIds, $kategoriTypes) {
->when(!empty($kategoriIds) || !empty($kategoriTypes) || !empty($kategoriHukumValues), function ($q) use ($kategoriIds, $kategoriTypes, $kategoriHukumValues) {
$q->where(function ($sub) use ($kategoriIds, $kategoriTypes, $kategoriHukumValues) {
$hasClause = false;
if (!empty($kategoriIds)) {
$sub->whereIn('master_kategori_directory_id', $kategoriIds);
$hasClause = true;
}
if (!empty($kategoriHukumValues)) {
$hasClause ? $sub->orWhereIn('kategori_hukum', $kategoriHukumValues) : $sub->whereIn('kategori_hukum', $kategoriHukumValues);
$hasClause = true;
}
if (in_array('akreditasi', $kategoriTypes, true)) {
$hasClause ? $sub->orWhere('is_akre', true) : $sub->where('is_akre', true);
$hasClause = true;
@ -1063,11 +1084,8 @@ class DashboardController extends Controller
});
$kategoriList = (clone $baseQuery)->get()->map(function($item){
if ($item->is_akre) {
return ['id' => 'akreditasi', 'label' => 'Kategori Akreditasi'];
}
if (!empty($item->kategori_hukum)) {
return ['id' => 'hukum', 'label' => 'Kategori Hukum'];
return ['id' => 'hukum:' . $item->kategori_hukum, 'label' => $item->kategori_hukum];
}
$label = $item->kategori->nama_kategori_directory ?? $item->nama_kategori_directory ?? 'Kategori';
$id = $item->master_kategori_directory_id ?? $label;
@ -1541,7 +1559,6 @@ class DashboardController extends Controller
{
$rows = FileDirectory::where('statusenabled', true)
->whereNotNull('status_action')->where('status_action', 'approved')
->where('is_akre')
->whereIn('id_unit_kerja', $unitIds)
->pluck('file');

View File

@ -93,12 +93,14 @@ class LogActivityController extends Controller
$query = LogActivity::select(
'pegawai_id_entry',
'pegawai_nama_entry',
DB::raw('COUNT(*) as total_open'),
DB::raw("SUM(CASE WHEN action_type = 'Membuka Dokumen' THEN 1 ELSE 0 END) as total_open"),
// Menghitung hanya yang Download Dokumen
DB::raw("SUM(CASE WHEN action_type = 'Download Dokumen' THEN 1 ELSE 0 END) as total_download"),
DB::raw('MAX(entry_at) as last_open')
)
->where('file_directory_id', $fileDirectoryId)
->where('statusenabled', true)
->where('action_type', 'Membuka Dokumen')
->whereIn('action_type', ['Membuka Dokumen', 'Download Dokumen'])
->groupBy('pegawai_id_entry', 'pegawai_nama_entry')
->orderByDesc('total_open');
@ -121,5 +123,5 @@ class LogActivityController extends Controller
]);
}
}

View File

@ -30,7 +30,7 @@
<thead class="table-light shadow-sm">
<tr>
<th style="width:5%;" class="text-center">#</th>
<th style="width:30%;">Unit</th>
<th style="width:30%;">Unit / Akreditasi</th>
<th style="width:20%;">Kategori</th>
<th style="width:15%;" class="text-center">Jumlah File</th>
</tr>
@ -101,7 +101,7 @@ function fetchRecap(){
}).join('');
tbody.innerHTML = html + `
<tr class="table-light">
<td colspan="3" class="text-end fw-semibold">Total File</td>
<td colspan="4" class="text-end fw-semibold">Total File</td>
<td class="text-center fw-bold">${grandTotal}</td>
</tr>
`;

View File

@ -160,6 +160,7 @@ document.addEventListener('DOMContentLoaded', () => {
<td>${((currentPage - 1) * (pagination.per_page || 10)) + idx + 1}</td>
<td>${row.pegawai_nama_entry || '-'}</td>
<td>${row.total_open || 0}</td>
<td>${row.total_download || 0}</td>
<td>${formatTanggal(row.last_open)}</td>
</tr>
`).join('');
@ -341,6 +342,7 @@ document.addEventListener('DOMContentLoaded', () => {
<th>#</th>
<th>Nama</th>
<th>Jumlah Membuka</th>
<th>Jumlah Mengunduh</th>
<th>Terakhir Dilihat</th>
</tr>
</thead>