diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php
index 3619570..2f074b0 100644
--- a/app/Http/Controllers/DashboardController.php
+++ b/app/Http/Controllers/DashboardController.php
@@ -1060,22 +1060,23 @@ class DashboardController extends Controller
foreach ($datas as $index => $data) {
list($id_unit_kerja, $nama_unit_kerja) = explode('/', $data['id_unit_kerja'],2);
list($id_sub_unit_kerja, $nama_sub_unit_kerja) = explode('/', $data['id_sub_unit_kerja'],2);
- if($data['is_akre'] === "1"){
- $path = "{$data['akre_type']}/{$data['akre_segment']}/{$data['akre_item']}";
+ if(isset($data['akre'])){
+ $path = $data['akre'];
}else{
- list($master_kategori_directory_id, $nama_kategori) = explode('/', $data['master_kategori_directory_id'],2);
- $path = "{$nama_unit_kerja}/{$nama_sub_unit_kerja}/{$nama_kategori}";
+ if(isset($data['master_kategori_directory_id'])){
+ list($master_kategori_directory_id, $nama_kategori) = explode('/', $data['master_kategori_directory_id'],2);
+ $path = "{$nama_unit_kerja}/{$nama_sub_unit_kerja}/{$nama_kategori}";
+ }else{
+ $path = "{$nama_unit_kerja}/{$nama_sub_unit_kerja}";
+ }
}
$uploadedFile = request()->file("data.$index.file");
if(!$uploadedFile){
- throw new \RuntimeException('File wajib diunggah pada baris ke-' . ($index+1));
+ throw new \RuntimeException('File wajib diunggah pada segment ke-' . ($index+1));
}
if (!$uploadedFile->isValid()) {
- throw new \RuntimeException('Upload file gagal pada baris ke-' . ($index+1));
- }
- if ($uploadedFile->getSize() > $maxUploadBytes) {
- throw new \RuntimeException('Ukuran file maksimal 10MB pada baris ke-' . ($index+1));
+ throw new \RuntimeException('Upload file gagal pada segment ke-' . ($index+1));
}
$status = $isAtasan ? 'approved' : null;
@@ -1093,7 +1094,8 @@ class DashboardController extends Controller
'status_action' => $status,
'action_by' => $status && $status === "approved" ? auth()->user()->objectpegawaifk : null,
'action_at' => $status && $status === "approved" ? now() : null,
- 'is_akre' => ($data['is_akre'] ?? null) == "1"
+ 'is_akre' => isset($data['akre']),
+ 'kategori_hukum' => isset($data['kategori_hukum']) ? $data['kategori_hukum'] : null
];
$fd = FileDirectory::create($payload);
@@ -1112,7 +1114,6 @@ class DashboardController extends Controller
$fd->update([
'file' => $path . '/' . $imageName
]);
-
if(!$isAtasan){
$uploaderName = auth()->user()?->dataUser?->namalengkap ?? 'Pengguna';
$docNumber = $fd->no_dokumen ? 'nomor '. $fd->no_dokumen : $imageName;
@@ -1146,6 +1147,7 @@ class DashboardController extends Controller
'status_action' => $isAtasan ? 'approved' : null
], 200);
} catch (\Throwable $th) {
+ dd($th);
DB::connection('dbDirectory')->rollback();
return response()->json([
'status' => false,
@@ -1522,7 +1524,7 @@ class DashboardController extends Controller
'pegawai_nama_entry' => $item->pegawai_nama_entry,
'part' => $dataSlice[0],
'folder' => $dataSlice[2],
- 'fileName' =>$dataSlice[3],
+ 'fileName' => isset($dataSlice[3]) ? $dataSlice[3] : null,
'file' => $item->file,
'nama_dokumen' => $item->nama_dokumen ?? '-',
'tgl_expired' => $item->tgl_expired,
@@ -1530,7 +1532,10 @@ class DashboardController extends Controller
'entry_at' => $item->entry_at,
'tanggal_terbit' => $item->tanggal_terbit,
'permission_file' => $item->permission_file,
- 'status_action' => $item->status_action
+ 'status_action' => $item->status_action,
+ 'id_unit_kerja' => $item->id_unit_kerja,
+ 'id_sub_unit_kerja' => $item->id_sub_unit_kerja,
+ 'master_kategori_directory_id' => $item->master_kategori_directory_id
];
});
return response()->json([
@@ -1903,7 +1908,7 @@ class DashboardController extends Controller
'pegawai_nama_entry' => $item->pegawai_nama_entry,
'part' => $dataSlice[0],
'folder' => $dataSlice[2],
- 'fileName' =>$dataSlice[3],
+ 'fileName' => isset($dataSlice[3]) ? $dataSlice[3] : null,
'file' => $item->file,
'no_dokumen' => $item->no_dokumen,
'nama_dokumen' => $item->nama_dokumen,
@@ -1916,7 +1921,8 @@ class DashboardController extends Controller
'id_unit_kerja' => $item->id_unit_kerja,
'id_sub_unit_kerja' => $item->id_sub_unit_kerja,
'master_kategori_directory_id' => $item->master_kategori_directory_id,
- 'is_akre' => $item->is_akre
+ 'is_akre' => $item->is_akre,
+ 'kategori_hukum' => $item->kategori_hukum
];
});
return response()->json([
@@ -2255,8 +2261,12 @@ class DashboardController extends Controller
}
public function dataAkreditasi(){
+ $katDok = MasterKategori::where('statusenabled', true)
+ ->select('master_kategori_directory_id', 'nama_kategori_directory')
+ ->get();
$data = [
'title' => 'Akreditasi',
+ 'katDok' => $katDok
];
return view('dataAkreditasi.index', $data);
}
diff --git a/public/js/pengajuanFile/index.js b/public/js/pengajuanFile/index.js
index 339448a..de47c20 100644
--- a/public/js/pengajuanFile/index.js
+++ b/public/js/pengajuanFile/index.js
@@ -62,8 +62,6 @@ document.addEventListener('DOMContentLoaded', () => {
}
function buildRow(item){
- console.log(item);
-
let tanggal = item.entry_at ? formatTanggal(item.entry_at) : '-';
let tanggalExp = item.tgl_expired ? formatTanggal(item.tgl_expired) : '-';
let tanggalTerbit = item.tanggal_terbit ? formatTanggal(item.tanggal_terbit) : '-';
@@ -370,6 +368,47 @@ document.addEventListener('DOMContentLoaded', () => {
}
+ function byId(id){
+ return document.getElementById(id);
+ }
+
+ function setInputValue(el, value){
+ if (!el) return;
+ el.value = value ?? '';
+ }
+
+ function setTextValue(el, value){
+ if (!el) return;
+ el.textContent = value || '';
+ }
+
+ function setChecked(el, value){
+ if (!el) return;
+ el.checked = !!value;
+ }
+
+ function setSelectValue(selectEl, value, label){
+ if (!selectEl) return;
+ if (value === undefined || value === null || value === '') {
+ selectEl.value = '';
+ return;
+ }
+ const exists = Array.from(selectEl.options).some(opt => opt.value === value);
+ if (!exists) {
+ selectEl.append(new Option(label || value, value, true, true));
+ }
+ selectEl.value = value;
+ }
+
+ function triggerSelect2(selectEl){
+ if (window.$ && $.fn.select2) $(selectEl).trigger('change');
+ }
+
+ function initSelect2($el, options){
+ if (!$el || !$el.length || !window.$ || !$.fn.select2) return;
+ $el.select2(options);
+ }
+
function initEditSelects(){
if (editUnitSelect.length) {
editUnitSelect.select2({
@@ -415,6 +454,37 @@ document.addEventListener('DOMContentLoaded', () => {
});
}
+ let akreData = [];
+ let akreLoaded = false;
+ let akreFlat = [];
+
+ function initEditExtraSelects(){
+ const akreSelect = byId('edit_akre_select');
+ if (akreSelect) {
+ loadAkreData().then(() => {
+ fillAkreSelect(akreSelect);
+ initSelect2($(akreSelect), {
+ dropdownParent: $('#modalEditPengajuanFile'),
+ placeholder: 'Pilih Instrumen',
+ allowClear: true
+ });
+ });
+ }
+
+ const editKat = $('#edit_kategori');
+ const editHukum = $('#edit_kategori_hukum');
+ initSelect2(editKat, {
+ dropdownParent: $('#modalEditPengajuanFile'),
+ placeholder: 'Pilih Kategori',
+ allowClear: true
+ });
+ initSelect2(editHukum, {
+ dropdownParent: $('#modalEditPengajuanFile'),
+ placeholder: 'Pilih Kategori Hukum',
+ allowClear: true
+ });
+ }
+
function loadEditSubUnit(unitId, selectedSubId, selectedSubName){
editSubUnitSelect.empty().append('');
if (!unitId) return;
@@ -438,69 +508,71 @@ document.addEventListener('DOMContentLoaded', () => {
});
}
+ function setEditAkreValue(value){
+ const akreEl = byId('edit_akre_select');
+ if (!akreEl) return;
+ loadAkreData().then(() => {
+ fillAkreSelect(akreEl);
+ setSelectValue(akreEl, value, value);
+ triggerSelect2(akreEl);
+ });
+ }
+
+ function setEditKategoriHukum(value){
+ const hukumEl = byId('edit_kategori_hukum');
+ if (!hukumEl) return;
+ setSelectValue(hukumEl, value, value);
+ triggerSelect2(hukumEl);
+ }
+
+ function setEditKategoriDir(item, kategoriName){
+ const katEl = byId('edit_kategori');
+ if (!katEl || !item.master_kategori_directory_id) return;
+ const katVal = `${item.master_kategori_directory_id}/${kategoriName}`;
+ setSelectValue(katEl, katVal, kategoriName || 'Kategori');
+ triggerSelect2(katEl);
+ }
+
window.editFileReject = function(id){
const item = getItemById(id);
if (!item) {
Swal.fire({ icon: 'error', title: 'Gagal', text: 'Data tidak ditemukan.' });
return;
}
- const idEl = document.getElementById('edit_file_directory_id');
- const noEl = document.getElementById('edit_no_dokumen');
- const namaEl = document.getElementById('edit_nama_dokumen');
- const tglEl = document.getElementById('edit_tanggal_terbit');
- const tglExpiredEl = document.getElementById('edit_tgl_expired');
- const hasExpiredEl = document.getElementById('edit_has_expired');
- const currentFileEl = document.getElementById('edit_current_file');
- const permYes = document.getElementById('edit_perm_yes');
- const permNo = document.getElementById('edit_perm_no');
- const katEl = document.getElementById('edit_kategori');
+ setInputValue(byId('edit_file_directory_id'), item.file_directory_id);
+ setInputValue(byId('edit_no_dokumen'), item.no_dokumen);
+ setInputValue(byId('edit_nama_dokumen'), item.nama_dokumen);
+ setInputValue(byId('edit_tanggal_terbit'), item.tanggal_terbit);
+ setInputValue(byId('edit_tgl_expired'), item.tgl_expired);
- if (idEl) idEl.value = item.file_directory_id || '';
- if (noEl) noEl.value = item.no_dokumen || '';
- if (namaEl) namaEl.value = item.nama_dokumen || '';
- if (tglEl) tglEl.value = item.tanggal_terbit || '';
- if (tglExpiredEl) tglExpiredEl.value = item.tgl_expired || '';
- if (permYes && permNo) {
- const isPublic = item.permission_file === true || item.permission_file === 1 || item.permission_file === '1';
- permYes.checked = isPublic;
- permNo.checked = !isPublic;
- }
- if (hasExpiredEl && tglExpiredEl) {
- const hasExpired = !!item.tgl_expired;
- hasExpiredEl.checked = hasExpired;
- syncEditExpiredField();
- }
- if (currentFileEl) {
- const displayName = item.fileName || (item.file ? String(item.file).split('/').pop() : '');
- currentFileEl.textContent = displayName ? `File saat ini: ${displayName}` : '';
- }
+ const isPublic = item.permission_file === true || item.permission_file === 1 || item.permission_file === '1';
+ setChecked(byId('edit_perm_yes'), isPublic);
+ setChecked(byId('edit_perm_no'), !isPublic);
+
+ const hasExpired = !!item.tgl_expired;
+ setChecked(byId('edit_has_expired'), hasExpired);
+ syncEditExpiredField();
+
+ const displayName = item.fileName || (item.file ? String(item.file).split('/').pop() : '');
+ setTextValue(byId('edit_current_file'), displayName ? `File saat ini: ${displayName}` : '');
const parts = (item.file || '').split('/');
- const unitName = parts[0] || '';
- const subName = parts[1] || '';
const kategoriName = parts[2] || '';
+ const unitName = item.unit_kerja_name || item.nama_unit_kerja || item.unit_name || item.unit_kerja || '';
if (editUnitSelect.length && item.id_unit_kerja) {
- const unitVal = `${item.id_unit_kerja}/${unitName}`;
- editUnitSelect.append(new Option(unitName || 'Unit', unitVal, true, true)).trigger('change');
- const unitId = String(item.id_unit_kerja);
- loadEditSubUnit(unitId, item.id_sub_unit_kerja, subName);
+ const unitLabel = unitName || `Unit ${item.id_unit_kerja}`;
+ const unitVal = `${item.id_unit_kerja}/${unitLabel}`;
+ setSelectValue(editUnitSelect[0], unitVal, unitLabel);
+ editUnitSelect.trigger('change');
+ loadEditSubUnit(String(item.id_unit_kerja), item.id_sub_unit_kerja, null);
}
- if (katEl && item.master_kategori_directory_id) {
- const katVal = `${item.master_kategori_directory_id}/${kategoriName}`;
- if (katEl.querySelector(`option[value="${katVal}"]`)) {
- katEl.value = katVal;
- } else {
- katEl.append(new Option(kategoriName || 'Kategori', katVal, true, true));
- katEl.value = katVal;
- }
- }
+ setEditKategoriDir(item, kategoriName);
+ if (item.kategori_hukum) setEditKategoriHukum(item.kategori_hukum);
+ setEditAkreValue(item.akre || '');
- const modalEl = document.getElementById('modalEditPengajuanFile');
- if (modalEl) {
- $("#modalEditPengajuanFile").modal('show');
- }
+ $("#modalEditPengajuanFile").modal('show');
}
function syncEditExpiredField() {
@@ -559,6 +631,7 @@ document.addEventListener('DOMContentLoaded', () => {
}
initEditSelects();
+ initEditExtraSelects();
updateTabUI();
fetchData();
@@ -586,10 +659,6 @@ document.addEventListener('DOMContentLoaded', () => {
enableAkreFields(0);
}
- let akreData = [];
- let akreLoaded = false;
- let akreFlat = [];
-
function loadAkreData(){
if(akreLoaded) return Promise.resolve(akreData);
return fetch('/json/akreditasi.json')
@@ -616,7 +685,7 @@ document.addEventListener('DOMContentLoaded', () => {
const children = Array.isArray(seg.turunan) ? seg.turunan : [];
return children.map(child => ({
value: `${type.name}/${seg.name}/${child.name}`,
- label: `${type.name} / ${seg.name} / ${child.name}`,
+ label: `${type.name} / ${child.name}`,
type: type.name,
segment: seg.name,
item: child.name
@@ -628,7 +697,7 @@ document.addEventListener('DOMContentLoaded', () => {
function fillAkreSelect(selectEl){
if(!selectEl) return;
- selectEl.innerHTML = '';
+ selectEl.innerHTML = '';
getAkreFlat().forEach(optData => {
const opt = document.createElement('option');
opt.value = optData.value;
@@ -664,17 +733,18 @@ document.addEventListener('DOMContentLoaded', () => {
function enableAkreFields(index){
const selectEl = document.getElementById(`akre_select_${index}`);
- if(selectEl){
- selectEl.disabled = false;
- selectEl.required = true;
- }
+ // if(selectEl){
+ // selectEl.disabled = false;
+ // selectEl.required = true;
+ // }
setKategoriRequired(index, false);
loadAkreData().then(() => {
fillAkreSelect(selectEl);
if(window.$ && $.fn.select2){
$(selectEl).select2({
dropdownParent: $('#modalCreateFile'),
- placeholder: 'Pilih Instrumen'
+ placeholder: 'Pilih Instrumen',
+ allowClear:true
});
}
});
@@ -687,7 +757,8 @@ document.addEventListener('DOMContentLoaded', () => {
if(katSelect.length){
katSelect.select2({
dropdownParent: $('#modalCreateFile'),
- placeholder:'Pilih Kategori'
+ placeholder:'Pilih Kategori',
+ allowClear:true
});
}
if(hukumSelect.length){
@@ -854,13 +925,9 @@ document.addEventListener('DOMContentLoaded', () => {
-
@@ -887,7 +954,7 @@ document.addEventListener('DOMContentLoaded', () => {
-
+
${katOptions}
diff --git a/resources/views/dataAkreditasi/index.blade.php b/resources/views/dataAkreditasi/index.blade.php
index 96573dc..2ce228d 100644
--- a/resources/views/dataAkreditasi/index.blade.php
+++ b/resources/views/dataAkreditasi/index.blade.php
@@ -1,4 +1,42 @@
@extends('layout.main')
+
@section('body_main')
@@ -7,16 +45,8 @@
-
Dokumen Umum
+
Dokumen Akreditasi
-
- {{--
-
- Download Excel
- --}}