🔧 refactor(menu): reorganisasi struktur menu & perbaikan akses role

- Reorganisasi urutan menu, memindahkan "Laporan Penilaian Jaminan" ke posisi pertama & memperbaiki penamaan menu (SO, LPJ, Monitoring, Tender → Permohonan KJPP, dll.)
- Ubah path "laporan-penilaian-jaminan" menjadi "laporan" untuk konsistensi URL
- Pindahkan menu "Data Debitur" sebelum "Permohonan" & "Pembatalan" ke bawah dengan akses terbatas
- Perbaikan role permissions: hapus `admin` & `senior-officer` dari menu tertentu, tambahkan `penilai` & `surveyor` ke menu Penilaian
- Batasi akses menu "Pembatalan" hanya untuk `administrator` & `pemohon-ao`
- Update ActivityController: tambah role `penilai` pada filter user
- Update LaporanPermohonanController: filter status `done` agar hanya tampil permohonan selesai
- Update PermohonanController: hapus kondisi `jenis_penilaian_id` pada logika pembuatan PersetujuanPenawaran, gunakan `Auth::id()` konsisten
- Validasi DebitureRequest: ubah max karakter `nomor_rekening` dari 50 → 10, serta perbaikan indentasi & format JSON di `module.json`
This commit is contained in:
Daeng Deni Mardaeni
2025-09-26 10:49:18 +07:00
parent 929c56b079
commit cd97d184ce
10 changed files with 183 additions and 206 deletions

View File

@@ -55,7 +55,7 @@ class ActivityController extends Controller
->when($teamId, fn ($q) => $q->where('id', $teamId)); ->when($teamId, fn ($q) => $q->where('id', $teamId));
}) })
->where('user_id', '!=', $user->id) ->where('user_id', '!=', $user->id)
->whereHas('user.roles', fn ($q) => $q->whereIn('name', ['surveyor', 'surveyor-penilai'])) ->whereHas('user.roles', fn ($q) => $q->whereIn('name', ['surveyor', 'surveyor-penilai','penilai']))
->get(); ->get();
$teamId = is_array($teamId) ? $teamId : [$teamId]; $teamId = is_array($teamId) ? $teamId : [$teamId];

View File

@@ -32,6 +32,7 @@
// Retrieve data from the database // Retrieve data from the database
$query = Permohonan::query(); $query = Permohonan::query();
$query->where('status','done');
if (!Auth::user()->hasAnyRole(['administrator'])) { if (!Auth::user()->hasAnyRole(['administrator'])) {
$query = $query->where('branch_id', Auth::user()->branch_id); $query = $query->where('branch_id', Auth::user()->branch_id);

View File

@@ -360,15 +360,14 @@
$permohonan->keterangan = $request->keterangan; $permohonan->keterangan = $request->keterangan;
$permohonan->save(); $permohonan->save();
if($permohonan->jenis_penilaian_id==1){
$persetujuanPenawaran = PersetujuanPenawaran::where('permohonan_id', $id)->first(); $persetujuanPenawaran = PersetujuanPenawaran::where('permohonan_id', $id)->first();
if(!$persetujuanPenawaran){ if(!$persetujuanPenawaran){
$persetujuanPenawaran = PersetujuanPenawaran::create([ $persetujuanPenawaran = PersetujuanPenawaran::create([
'permohonan_id' => $id, 'permohonan_id' => $id,
'created_by' => auth()->id(), 'created_by' => Auth::id(),
]); ]);
} }
}
} catch (Exception $e) { } catch (Exception $e) {
return redirect()->route('authorization.show', $id)->with('error', 'Failed to update permohonan'); return redirect()->route('authorization.show', $id)->with('error', 'Failed to update permohonan');
} }

View File

@@ -20,7 +20,7 @@
'city_code' => 'nullable|exists:cities,code', 'city_code' => 'nullable|exists:cities,code',
'district_code' => 'nullable|exists:districts,code', 'district_code' => 'nullable|exists:districts,code',
'village_code' => 'nullable|exists:villages,code', 'village_code' => 'nullable|exists:villages,code',
'nomor_rekening' => 'nullable|string|max:50', 'nomor_rekening' => 'nullable|string|max:10',
'name' => 'required', 'name' => 'required',
'registered_at' => 'nullable|date', 'registered_at' => 'nullable|date',
'npwp' => 'nullable|string|min:15|max:16', 'npwp' => 'nullable|string|min:15|max:16',

View File

@@ -13,6 +13,21 @@
], ],
"menu": { "menu": {
"laporan": [ "laporan": [
{
"title": "Laporan Penilaian Jaminan",
"path": "laporan",
"icon": "ki-filled ki-filter-tablet text-lg text-primary",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"administrator",
"pemohon-ao",
"pemohon-eo",
"DD Appraisal",
"EO Appraisal"
]
},
{ {
"title": "Laporan Permohonan", "title": "Laporan Permohonan",
"path": "laporan-permohonan", "path": "laporan-permohonan",
@@ -47,37 +62,6 @@
"senior-officer" "senior-officer"
] ]
}, },
{
"title": "Laporan Penilai Jaminan",
"path": "laporan-penilai-jaminan",
"icon": "ki-filled ki-filter-tablet text-lg text-primary",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"administrator",
"admin",
"DD Appraisal",
"EO Appraisal",
"senior-officer"
]
},
{
"title": "Laporan Pernilaan Jaminan",
"path": "laporan-penilaian-jaminan",
"icon": "ki-filled ki-filter-tablet text-lg text-primary",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"administrator",
"admin",
"DD Appraisal",
"EO Appraisal",
"senior-officer"
]
},
{ {
"title": "Laporan Hasil Pernilaan Jaminan Internal & External", "title": "Laporan Hasil Pernilaan Jaminan Internal & External",
"path": "laporan-hasil-penilaian-jaminan-internal-external", "path": "laporan-hasil-penilaian-jaminan-internal-external",
@@ -94,7 +78,7 @@
] ]
}, },
{ {
"title": "Rekap Harian So", "title": "Rekap Harian SO",
"path": "rekap-harian-so", "path": "rekap-harian-so",
"icon": "ki-filled ki-filter-tablet text-lg text-primary", "icon": "ki-filled ki-filter-tablet text-lg text-primary",
"classes": "", "classes": "",
@@ -104,8 +88,9 @@
"administrator", "administrator",
"senior-officer" "senior-officer"
] ]
}, { },
"title": "Laporan Biaya Lpj", {
"title": "Laporan Biaya LPJ",
"path": "laporan-biaya", "path": "laporan-biaya",
"icon": "ki-filled ki-filter-tablet text-lg text-primary", "icon": "ki-filled ki-filter-tablet text-lg text-primary",
"classes": "", "classes": "",
@@ -150,7 +135,8 @@
] ]
} }
] ]
},{ },
{
"title": "Laporan Debitur", "title": "Laporan Debitur",
"path": "laporan-debiture", "path": "laporan-debiture",
"icon": "ki-filled ki-filter-tablet text-lg text-primary", "icon": "ki-filled ki-filter-tablet text-lg text-primary",
@@ -175,7 +161,7 @@
] ]
}, },
{ {
"title": "Laporan Monitoring so", "title": "Laporan Monitoring SO",
"path": "laporan-monitoring", "path": "laporan-monitoring",
"icon": "ki-filled ki-filter-tablet text-lg text-primary", "icon": "ki-filled ki-filter-tablet text-lg text-primary",
"classes": "", "classes": "",
@@ -224,7 +210,6 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"senior-officer",
"pemohon-eo" "pemohon-eo"
] ]
}, },
@@ -237,7 +222,6 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"admin",
"EO Appraisal", "EO Appraisal",
"DD Appraisal" "DD Appraisal"
] ]
@@ -251,7 +235,6 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"admin",
"pemohon-eo" "pemohon-eo"
] ]
}, },
@@ -307,7 +290,25 @@
"attributes": [], "attributes": [],
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator" "administrator",
"admin",
"DD Appraisal",
"EO Appraisal",
"senior-officer",
"penilai",
"surveyor"
]
},
{
"title": "Data Debitur",
"path": "debitur",
"icon": "ki-filled ki-people text-lg text-primary",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"administrator",
"pemohon-ao"
] ]
}, },
{ {
@@ -323,19 +324,7 @@
] ]
}, },
{ {
"title": "Pembatalan", "title": "Persetujuan Penawaran KJPP",
"path": "pembatalan",
"icon": "ki-filled ki-file-deleted text-lg text-danger",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"administrator",
"pemohon-ao"
]
},
{
"title": "Persetujuan Penawaran",
"path": "persetujuan-penawaran", "path": "persetujuan-penawaran",
"icon": "ki-filled ki-double-check text-lg text-info", "icon": "ki-filled ki-double-check text-lg text-info",
"classes": "", "classes": "",
@@ -347,7 +336,7 @@
] ]
}, },
{ {
"title": "Pembayaran", "title": "Biaya Appraisal",
"path": "pembayaran", "path": "pembayaran",
"icon": "ki-filled ki-credit-cart text-lg text-primary", "icon": "ki-filled ki-credit-cart text-lg text-primary",
"classes": "", "classes": "",
@@ -410,6 +399,18 @@
} }
] ]
}, },
{
"title": "Pembatalan",
"path": "pembatalan",
"icon": "ki-filled ki-file-deleted text-lg text-danger",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"administrator",
"pemohon-ao"
]
},
{ {
"title": "Admin Kredit", "title": "Admin Kredit",
"path": "admin-kredit", "path": "admin-kredit",
@@ -419,10 +420,10 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"admin",
"adk" "adk"
], ],
"sub": [{ "sub": [
{
"title": "SLIK", "title": "SLIK",
"path": "admin-kredit.slik", "path": "admin-kredit.slik",
"icon": "ki-filled ki-filter-tablet text-lg text-primary", "icon": "ki-filled ki-filter-tablet text-lg text-primary",
@@ -460,7 +461,8 @@
"administrator", "administrator",
"admin" "admin"
] ]
}] }
]
}, },
{ {
"title": "NOC", "title": "NOC",
@@ -471,7 +473,6 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"admin",
"noc" "noc"
], ],
"sub": [ "sub": [
@@ -528,7 +529,7 @@
] ]
}, },
{ {
"title": "Tender", "title": "Permohonan KJPP",
"path": "tender", "path": "tender",
"icon": "ki-filled ki-briefcase text-lg text-primary", "icon": "ki-filled ki-briefcase text-lg text-primary",
"classes": "", "classes": "",
@@ -560,8 +561,6 @@
"administrator", "administrator",
"admin" "admin"
] ]
}
]
}, },
{ {
"title": "SPK", "title": "SPK",
@@ -575,18 +574,6 @@
"admin" "admin"
] ]
}, },
{
"title": "Laporan External",
"path": "laporan-external",
"icon": "ki-filled ki-document text-lg text-primary",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"administrator",
"admin"
]
},
{ {
"title": "Registrasi Final", "title": "Registrasi Final",
"path": "registrasifinal", "path": "registrasifinal",
@@ -600,15 +587,17 @@
] ]
}, },
{ {
"title": "Data Debitur", "title": "Laporan External",
"path": "debitur", "path": "laporan-external",
"icon": "ki-filled ki-people text-lg text-primary", "icon": "ki-filled ki-document text-lg text-primary",
"classes": "", "classes": "",
"attributes": [], "attributes": [],
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"pemohon-ao" "admin"
]
}
] ]
}, },
{ {
@@ -644,7 +633,8 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"surveyor" "surveyor",
"penilai"
] ]
}, },
{ {
@@ -658,6 +648,7 @@
"administrator", "administrator",
"admin", "admin",
"surveyor", "surveyor",
"penilai",
"senior-officer", "senior-officer",
"EO Appraisal", "EO Appraisal",
"DD Appraisal" "DD Appraisal"
@@ -672,42 +663,9 @@
"permission": "", "permission": "",
"roles": [ "roles": [
"administrator", "administrator",
"penilai",
"surveyor" "surveyor"
] ]
},
{
"title": "Resume dan Laporan",
"path": "laporan",
"icon": "ki-filled ki-filter-tablet text-lg text-primary",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"administrator",
"pemohon-ao",
"pemohon-eo",
"admin",
"DD Appraisal",
"EO Appraisal",
"senior-officer"
]
},
{
"title": "Daftar Pustaka",
"path": "daftar-pustaka",
"icon": "ki-filled ki-filter-tablet text-lg text-primary",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"administrator",
"pemohon-ao",
"pemohon-eo",
"admin",
"DD Appraisal",
"EO Appraisal",
"senior-officer"
]
} }
], ],
"master": [ "master": [
@@ -1265,6 +1223,24 @@
] ]
} }
], ],
"system": [] "system": [
{
"title": "Daftar Pustaka",
"path": "daftar-pustaka",
"icon": "ki-filled ki-filter-tablet text-lg text-primary",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"administrator",
"pemohon-ao",
"pemohon-eo",
"admin",
"DD Appraisal",
"EO Appraisal",
"senior-officer"
]
}
]
} }
} }

View File

@@ -85,7 +85,7 @@
@enderror @enderror
</div> </div>
</div> </div>
<div class="flex flex-wrap gap-2.5 items-baseline lg:flex-nowrap"> <div class="flex hidden flex-wrap gap-2.5 items-baseline lg:flex-nowrap">
<label class="form-label max-w-56"> <label class="form-label max-w-56">
Email Email
</label> </label>
@@ -111,7 +111,7 @@
</div> </div>
<div class="flex flex-wrap gap-2.5 items-baseline lg:flex-nowrap"> <div class="flex flex-wrap gap-2.5 items-baseline lg:flex-nowrap">
<label class="gap-1 form-label max-w-56"> <label class="gap-1 form-label max-w-56">
Alamat Alamat KTP
<span class="text-danger"> <span class="text-danger">
* *
</span> </span>

View File

@@ -45,7 +45,8 @@
<div class="flex flex-wrap items-baseline w-full"> <div class="flex flex-wrap items-baseline w-full">
<input type="text" name="nomor_tiket" id="nomor_tiket" <input type="text" name="nomor_tiket" id="nomor_tiket"
class="input w-full @error('nomor_tiket') border-danger bg-danger-light @enderror" class="input w-full @error('nomor_tiket') border-danger bg-danger-light @enderror"
value="{{ old('nomor_tiket', $permohonan->nomor_tiket ?? '') }}" placeholder="Nomor Tiket"> value="{{ old('nomor_tiket', $persetujuanPenawaran->nomor_tiket ?? '') }}"
placeholder="Nomor Tiket">
@error('nomor_tiket') @error('nomor_tiket')
<em class="text-sm alert text-danger">{{ $message }}</em> <em class="text-sm alert text-danger">{{ $message }}</em>
@enderror @enderror

View File

@@ -218,7 +218,7 @@
<div class="flex flex-wrap gap-2.5 items-baseline mt-2 w-full lg:flex-nowrap card-footer"> <div class="flex flex-wrap gap-2.5 items-baseline mt-2 w-full lg:flex-nowrap card-footer">
<div class="flex gap-5"> <div class="flex gap-5">
<a class="btn btn-primary" <a class="btn btn-primary"
href="{{ route('penilai.lampiran') }}?permohonanId={{ $permohonan->id }}&documentId={{ $dokumen->id }}&jaminanId={{ $dokumen->jenis_jaminan_id }}"> href="{{ route('penilai.lampiran') }}?permohonanId={{ $permohonan->id }}&documentId={{ $dokumen->id }}&jaminanId={{ $dokumen->jenis_jaminan_id }}&header={{ request('header') }}">
Lampiran Foto dan Dokumen Lampiran Foto dan Dokumen
</a> </a>
@if ($permohonan->status != 'freeze') @if ($permohonan->status != 'freeze')

View File

@@ -9,7 +9,7 @@
<div class="pb-2.5 border card border-agi-100"> <div class="pb-2.5 border card border-agi-100">
<div class="card-header bg-agi-50" id="basic_settings"> <div class="card-header bg-agi-50" id="basic_settings">
<div class="flex flex-row gap-1.5 card-title"> <div class="flex flex-row gap-1.5 card-title">
Persetujuan Penawaranaa Persetujuan Penawaranan KJPP
</div> </div>
<div class="flex gap-2 items-center"> <div class="flex gap-2 items-center">
<a href="{{ route('persetujuan-penawaran.index') }}" class="btn btn-xs btn-info"><i <a href="{{ route('persetujuan-penawaran.index') }}" class="btn btn-xs btn-info"><i

View File

@@ -9,7 +9,7 @@
<div class="card border border-agi-100 card-grid min-w-full" data-datatable="false" data-datatable-page-size="10" data-datatable-state-save="false" id="persetujuan-penawaran-table" data-api-url="{{ route('persetujuan-penawaran.datatables') }}"> <div class="card border border-agi-100 card-grid min-w-full" data-datatable="false" data-datatable-page-size="10" data-datatable-state-save="false" id="persetujuan-penawaran-table" data-api-url="{{ route('persetujuan-penawaran.datatables') }}">
<div class="card-header bg-agi-50 py-5 flex-wrap"> <div class="card-header bg-agi-50 py-5 flex-wrap">
<h3 class="card-title"> <h3 class="card-title">
Daftar Persetujuan Penawaran Daftar Persetujuan Penawaran KJPP
</h3> </h3>
<div class="flex flex-wrap gap-2 lg:gap-5"> <div class="flex flex-wrap gap-2 lg:gap-5">
<div class="flex"> <div class="flex">