feat(slik): migrasi route SLIK ke group admin-kredit

Mengubah struktur route SLIK agar sesuai dengan arsitektur admin-kredit dengan menambahkan prefix admin-kredit pada semua route.

- Menambahkan route SLIK lengkap dalam group admin-kredit di routes/web.php
- Memperbarui breadcrumb SLIK untuk menggunakan prefix admin-kredit di routes/breadcrumbs.php
- Memperbarui semua referensi route di view index.blade.php:
  * Breadcrumbs: slik → admin-kredit.slik
  * Route datatables: slik.datatables → admin-kredit.slik.datatables
  * Route import: slik.import → admin-kredit.slik.import
  * Route export: slik.export → admin-kredit.slik.export
  * Route download template: admin-kredit.slik.download-template
  * Route JavaScript: slik.show → admin-kredit.slik.show
- Memperbarui referensi route di view show.blade.php:
  * Breadcrumbs: slik → admin-kredit.slik.show
  * Tombol kembali: slik.index → admin-kredit.slik.index
- Menambahkan link download template Excel di modal import
This commit is contained in:
Daeng Deni Mardaeni
2025-09-16 17:18:31 +07:00
parent 2a1ecfd9e2
commit 41262e0317
8 changed files with 190 additions and 163 deletions

View File

@@ -169,11 +169,11 @@
} }
return redirect() return redirect()
->route('laporan-admin-kredit.index') ->route('admin-kredit.laporan.index')
->with('success', 'Laporan Admin Kredit updated successfully'); ->with('success', 'Laporan Admin Kredit updated successfully');
} catch (Exception $e) { } catch (Exception $e) {
return redirect() return redirect()
->route('laporan-admin-kredit.edit', $id) ->route('admin-kredit.laporan.edit', $id)
->with('error', 'Failed to update Laporan Admin Kredit'); ->with('error', 'Failed to update Laporan Admin Kredit');
} }
} }

View File

@@ -47,42 +47,7 @@
"senior-officer" "senior-officer"
] ]
}, },
{
"title": "Laporan Admin Kredit",
"path": "laporan-admin-kredit",
"icon": "ki-filled ki-filter-tablet text-lg text-primary",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"adk",
"administrator",
"pemohon-ao",
"pemohon-eo",
"admin",
"DD Appraisal",
"EO Appraisal",
"senior-officer"
]
},
{
"title": "SLIK",
"path": "slik",
"icon": "ki-filled ki-filter-tablet text-lg text-primary",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"adk",
"administrator",
"pemohon-ao",
"pemohon-eo",
"admin",
"DD Appraisal",
"EO Appraisal",
"senior-officer"
]
},
{ {
"title": "Laporan Penilai Jaminan", "title": "Laporan Penilai Jaminan",
"path": "laporan-penilai-jaminan", "path": "laporan-penilai-jaminan",
@@ -443,6 +408,45 @@
} }
] ]
}, },
{
"title": "Admin Kredit",
"path": "admin-kredit",
"icon": "ki-filled ki-briefcase text-lg text-primary",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"administrator",
"admin",
"noc"
],
"sub": [{
"title": "SLIK",
"path": "admin-kredit.slik",
"icon": "ki-filled ki-filter-tablet text-lg text-primary",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"adk",
"administrator",
"admin"
]
},
{
"title": "Laporan Admin Kredit",
"path": "admin-kredit.laporan",
"icon": "ki-filled ki-filter-tablet text-lg text-primary",
"classes": "",
"attributes": [],
"permission": "",
"roles": [
"adk",
"administrator",
"admin"
]
}]
},
{ {
"title": "NOC", "title": "NOC",
"path": "noc", "path": "noc",

View File

@@ -5,84 +5,94 @@
@endsection @endsection
@section('content') @section('content')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto"> <div class="grid gap-5 mx-auto w-full lg:gap-7.5">
<div class="card border border-agi-100"> <div class="border card border-agi-100">
<div class="card-header bg-agi-50 py-5"> <div class="py-5 card-header bg-agi-50">
<h3 class="card-title"> <h3 class="card-title">
Edit Laporan Admin Kredit Edit Laporan Admin Kredit
</h3> </h3>
</div> </div>
<div class="card-body"> <div class="card-body">
<form action="{{ route('laporan-admin-kredit.update', $laporanAdminKredit->id) }}" method="POST" class="grid gap-5"> <form action="{{ route('admin-kredit.laporan.update', $laporanAdminKredit->id) }}" method="POST"
class="grid gap-5">
@csrf @csrf
@method('PUT') @method('PUT')
<div class="grid grid-cols-1 md:grid-cols-2 gap-5"> <div class="grid grid-cols-1 gap-5 md:grid-cols-2">
<!-- Editable Fields --> <!-- Editable Fields -->
<div class="form-group"> <div class="form-group">
<label for="kode_register_t24" class="form-label">Kode Register T24</label> <label for="kode_register_t24" class="form-label">Kode Register T24</label>
<input type="text" name="kode_register_t24" id="kode_register_t24" class="input" value="{{ $laporanAdminKredit->kode_register_t24 }}" required> <input type="text" name="kode_register_t24" id="kode_register_t24" class="input"
value="{{ $laporanAdminKredit->kode_register_t24 }}" required>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="cif" class="form-label">CIF</label> <label for="cif" class="form-label">CIF</label>
<input type="text" name="cif" id="cif" class="input" value="{{ $laporanAdminKredit->debiture ? $laporanAdminKredit->debiture->cif : '' }}" required> <input type="text" name="cif" id="cif" class="input"
value="{{ $laporanAdminKredit->debiture ? $laporanAdminKredit->debiture->cif : '' }}"
required>
</div> </div>
<!-- Read-only Information Fields --> <!-- Read-only Information Fields -->
<div class="form-group"> <div class="form-group">
<label class="form-label">Nama Debitur</label> <label class="form-label">Nama Debitur</label>
<div class="input bg-gray-100">{{ $laporanAdminKredit->debiture ? $laporanAdminKredit->debiture->name : '' }}</div> <div class="bg-gray-100 input">
{{ $laporanAdminKredit->debiture ? $laporanAdminKredit->debiture->name : '' }}</div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="form-label">Cabang</label> <label class="form-label">Cabang</label>
<div class="input bg-gray-100">{{ $laporanAdminKredit->debiture ? $laporanAdminKredit->debiture->branch->name : '' }}</div> <div class="bg-gray-100 input">
{{ $laporanAdminKredit->debiture ? $laporanAdminKredit->debiture->branch->name : '' }}</div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="form-label">Jenis Agunan</label> <label class="form-label">Jenis Agunan</label>
<div class="input bg-gray-100">{{ $laporanAdminKredit->jenis_agunan }}</div> <div class="bg-gray-100 input">{{ $laporanAdminKredit->jenis_agunan }}</div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="form-label">Bukti Kepemilikan</label> <label class="form-label">Bukti Kepemilikan</label>
<div class="input bg-gray-100">{{ $laporanAdminKredit->bukti_kepemilikan }}</div> <div class="bg-gray-100 input">{{ $laporanAdminKredit->bukti_kepemilikan }}</div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="form-label">Alamat Agunan</label> <label class="form-label">Alamat Agunan</label>
<div class="textarea bg-gray-100 h-auto min-h-[70px] p-3">{{ $laporanAdminKredit->alamat_agunan }}</div> <div class="textarea bg-gray-100 h-auto min-h-[70px] p-3">
{{ $laporanAdminKredit->alamat_agunan }}</div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="form-label">Nama Pemilik</label> <label class="form-label">Nama Pemilik</label>
<div class="input bg-gray-100">{{ $laporanAdminKredit->nama_pemilik }}</div> <div class="bg-gray-100 input">{{ $laporanAdminKredit->nama_pemilik }}</div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="form-label">Tanggal Kunjungan</label> <label class="form-label">Tanggal Kunjungan</label>
<div class="input bg-gray-100">{{ \Carbon\Carbon::parse($laporanAdminKredit->tanggal_kunjungan)->format('d-m-Y') }}</div> <div class="bg-gray-100 input">
{{ \Carbon\Carbon::parse($laporanAdminKredit->tanggal_kunjungan)->format('d-m-Y') }}</div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="form-label">Nilai Pasar Wajar</label> <label class="form-label">Nilai Pasar Wajar</label>
<div class="input bg-gray-100">{{ number_format($laporanAdminKredit->nilai_pasar_wajar, 0, ',', '.') }}</div> <div class="bg-gray-100 input">
{{ number_format($laporanAdminKredit->nilai_pasar_wajar, 0, ',', '.') }}</div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="form-label">Nilai Likuidasi</label> <label class="form-label">Nilai Likuidasi</label>
<div class="input bg-gray-100">{{ number_format($laporanAdminKredit->nilai_likuidasi, 0, ',', '.') }}</div> <div class="bg-gray-100 input">
{{ number_format($laporanAdminKredit->nilai_likuidasi, 0, ',', '.') }}</div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="form-label">Nama Penilai</label> <label class="form-label">Nama Penilai</label>
<div class="input bg-gray-100">{{ $laporanAdminKredit->nama_penilai }}</div> <div class="bg-gray-100 input">{{ $laporanAdminKredit->nama_penilai }}</div>
</div> </div>
</div> </div>
<div class="flex justify-end gap-3"> <div class="flex gap-3 justify-end">
<a href="{{ route('laporan-admin-kredit.index') }}" class="btn btn-light">Cancel</a> <a href="{{ route('admin-kredit.laporan.index') }}" class="btn btn-light">Cancel</a>
<button type="submit" class="btn btn-primary">Update</button> <button type="submit" class="btn btn-primary">Update</button>
</div> </div>
</form> </form>

View File

@@ -5,9 +5,11 @@
@endsection @endsection
@section('content') @section('content')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto"> <div class="grid gap-5 mx-auto w-full lg:gap-7.5">
<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="laporan-admin-kredit-table" data-api-url="{{ route('laporan-admin-kredit.datatables') }}"> <div class="min-w-full border card border-agi-100 card-grid" data-datatable="false" data-datatable-page-size="10"
<div class="card-header bg-agi-50 py-5 flex-wrap"> data-datatable-state-save="false" id="laporan-admin-kredit-table"
data-api-url="{{ route('admin-kredit.laporan.datatables') }}">
<div class="flex-wrap py-5 card-header bg-agi-50">
<h3 class="card-title"> <h3 class="card-title">
Daftar Laporan Admin Kredit Daftar Laporan Admin Kredit
</h3> </h3>
@@ -32,14 +34,16 @@
</div> </div>
<div class="flex flex-wrap gap-2.5"> <div class="flex flex-wrap gap-2.5">
<div class="h-[24px] border border-r-gray-200"></div> <div class="h-[24px] border border-r-gray-200"></div>
<a class="btn btn-sm btn-light" href="{{ route('laporan-admin-kredit.export') }}"> Export to Excel </a> <a class="btn btn-sm btn-light" href="{{ route('admin-kredit.laporan.export') }}"> Export to Excel
</a>
</div> </div>
</div> </div>
</div> </div>
<div class="card-body"> <div class="card-body">
<div class="scrollable-x-auto"> <div class="scrollable-x-auto">
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm" data-datatable-table="true"> <table class="table text-sm font-medium text-gray-700 align-middle table-auto table-border"
data-datatable-table="true">
<thead> <thead>
<tr> <tr>
<th class="w-14"> <th class="w-14">
@@ -101,13 +105,14 @@
</thead> </thead>
</table> </table>
</div> </div>
<div class="card-footer justify-center md:justify-between flex-col md:flex-row gap-3 text-gray-600 text-2sm font-medium"> <div
<div class="flex items-center gap-2"> class="flex-col gap-3 justify-center font-medium text-gray-600 card-footer md:justify-between md:flex-row text-2sm">
<div class="flex gap-2 items-center">
Show Show
<select class="select select-sm w-16" data-datatable-size="true" name="perpage"> </select> per <select class="w-16 select select-sm" data-datatable-size="true" name="perpage"> </select> per
page page
</div> </div>
<div class="flex items-center gap-4"> <div class="flex gap-4 items-center">
<span data-datatable-info="true"> </span> <span data-datatable-info="true"> </span>
<div class="pagination" data-datatable-pagination="true"> <div class="pagination" data-datatable-pagination="true">
</div> </div>

View File

@@ -1,13 +1,13 @@
@extends('layouts.main') @extends('layouts.main')
@section('breadcrumbs') @section('breadcrumbs')
{{ Breadcrumbs::render('slik') }} {{ Breadcrumbs::render('admin-kredit.slik') }}
@endsection @endsection
@section('content') @section('content')
<div class="grid"> <div class="grid">
<div class="min-w-full border card border-agi-100 card-grid" data-datatable="false" data-datatable-page-size="10" <div class="min-w-full border card border-agi-100 card-grid" data-datatable="false" data-datatable-page-size="10"
data-datatable-state-save="false" id="slik-table" data-api-url="{{ route('slik.datatables') }}"> data-datatable-state-save="false" id="slik-table" data-api-url="{{ route('admin-kredit.slik.datatables') }}">
<div class="flex-wrap py-5 card-header bg-agi-50"> <div class="flex-wrap py-5 card-header bg-agi-50">
<h3 class="card-title"> <h3 class="card-title">
Data SLIK Data SLIK
@@ -129,7 +129,7 @@
<i class="ki-filled ki-cross"></i> <i class="ki-filled ki-cross"></i>
</button> </button>
</div> </div>
<form action="{{ route('slik.import') }}" method="POST" enctype="multipart/form-data"> <form action="{{ route('admin-kredit.slik.import') }}" method="POST" enctype="multipart/form-data">
@csrf @csrf
<div class="modal-body"> <div class="modal-body">
<div class="flex flex-col gap-5"> <div class="flex flex-col gap-5">
@@ -139,6 +139,12 @@
<div class="text-gray-600 text-2sm"> <div class="text-gray-600 text-2sm">
Format yang didukung: .xlsx, .xls, .csv (Maksimal 10MB) Format yang didukung: .xlsx, .xls, .csv (Maksimal 10MB)
</div> </div>
<div class="text-blue-600 text-2sm">
<a href="{{ route('admin-kredit.slik.download-template') }}"
class="underline hover:text-blue-800">
<i class="ki-filled ki-download"></i> Download Template Excel
</a>
</div>
</div> </div>
<div class="p-3 bg-yellow-100 rounded border border-yellow-300"> <div class="p-3 bg-yellow-100 rounded border border-yellow-300">
<div class="text-sm text-yellow-800"> <div class="text-sm text-yellow-800">
@@ -163,6 +169,7 @@
</form> </form>
</div> </div>
</div> </div>
@endsection @endsection
@push('styles') @push('styles')
@@ -211,7 +218,7 @@
*/ */
function showDetail(id) { function showDetail(id) {
// Redirect ke halaman detail // Redirect ke halaman detail
window.location.href = `{{ route('slik.show', ':id') }}`.replace(':id', id); window.location.href = `{{ route('admin-kredit.slik.show', ':id') }}`.replace(':id', id);
} }
</script> </script>
@@ -346,7 +353,7 @@
if (monthFilter.value) params.append('month', monthFilter.value); if (monthFilter.value) params.append('month', monthFilter.value);
if (statusFilter.value) params.append('status', statusFilter.value); if (statusFilter.value) params.append('status', statusFilter.value);
const exportUrl = '{{ route('slik.export') }}?' + params.toString(); const exportUrl = '{{ route('admin-kredit.slik.export') }}?' + params.toString();
window.open(exportUrl, '_blank'); window.open(exportUrl, '_blank');
}); });
}); });

View File

@@ -1,7 +1,7 @@
@extends('layouts.main') @extends('layouts.main')
@section('breadcrumbs') @section('breadcrumbs')
{{ Breadcrumbs::render('slik') }} {{ Breadcrumbs::render('admin-kredit.slik.show', $slik) }}
@endsection @endsection
@section('content') @section('content')
@@ -14,7 +14,7 @@
<p class="mt-1 text-sm text-gray-600">Informasi lengkap debitur {{ $slik->nama_debitur }}</p> <p class="mt-1 text-sm text-gray-600">Informasi lengkap debitur {{ $slik->nama_debitur }}</p>
</div> </div>
<div class="flex gap-2"> <div class="flex gap-2">
<a href="{{ route('slik.index') }}" class="btn btn-sm btn-light"> <a href="{{ route('admin-kredit.slik.index') }}" class="btn btn-sm btn-light">
<i class="ki-filled ki-arrow-left"></i> <i class="ki-filled ki-arrow-left"></i>
Kembali Kembali
</a> </a>

View File

@@ -728,13 +728,13 @@ Breadcrumbs::for('basicdata.jenis-lampiran.edit', function (BreadcrumbTrail $tra
// Laporan Admin Kredit // Laporan Admin Kredit
Breadcrumbs::for('laporan-admin-kredit', function ($trail) { Breadcrumbs::for('laporan-admin-kredit', function ($trail) {
$trail->push('Laporan Admin Kredit', route('laporan-admin-kredit.index')); $trail->push('Laporan Admin Kredit', route('admin-kredit.laporan.index'));
}); });
// Laporan Admin Kredit Edit // Laporan Admin Kredit Edit
Breadcrumbs::for('laporan-admin-kredit-edit', function (BreadcrumbTrail $trail, $laporanAdminKredit) { Breadcrumbs::for('laporan-admin-kredit-edit', function (BreadcrumbTrail $trail, $laporanAdminKredit) {
$trail->parent('laporan-admin-kredit'); $trail->parent('laporan-admin-kredit');
$trail->push('Edit', route('laporan-admin-kredit.edit', $laporanAdminKredit->id)); $trail->push('Edit', route('admin-kredit.laporan.edit', $laporanAdminKredit->id));
}); });
Breadcrumbs::for('bank-data', function ($trail) { Breadcrumbs::for('bank-data', function ($trail) {
@@ -817,22 +817,23 @@ Breadcrumbs::for('bucok.show', function (BreadcrumbTrail $trail, $bucok) {
}); });
// Breadcrumb untuk SLIK // Breadcrumb untuk SLIK
Breadcrumbs::for('slik', function (BreadcrumbTrail $trail) { Breadcrumbs::for('admin-kredit.slik', function (BreadcrumbTrail $trail) {
$trail->push('Data SLIK', route('slik.index')); $trail->push('Data SLIK', route('admin-kredit.slik.index'));
}); });
Breadcrumbs::for('slik.index', function (BreadcrumbTrail $trail) { Breadcrumbs::for('admin-kredit.slik.index', function (BreadcrumbTrail $trail) {
$trail->parent('slik'); $trail->parent('admin-kredit.slik');
$trail->push('Data SLIK', route('admin-kredit.slik.index'));
}); });
Breadcrumbs::for('slik.show', function (BreadcrumbTrail $trail, $slik) { Breadcrumbs::for('admin-kredit.slik.show', function (BreadcrumbTrail $trail, $slik) {
$trail->parent('slik'); $trail->parent('admin-kredit.slik');
$trail->push('Detail SLIK #' . $slik->id); $trail->push('Detail SLIK #' . $slik->id, route('admin-kredit.slik.show', $slik));
}); });
Breadcrumbs::for('slik.import-form', function (BreadcrumbTrail $trail) { Breadcrumbs::for('admin-kredit.slik.import-form', function (BreadcrumbTrail $trail) {
$trail->parent('slik'); $trail->parent('admin-kredit.slik');
$trail->push('Import Data SLIK'); $trail->push('Import Data SLIK', route('admin-kredit.slik.import-form'));
}); });
// add andy // add andy

View File

@@ -700,17 +700,6 @@ Route::middleware(['auth'])->group(function () {
Route::post('lampiran/upload', [LampiranDokumenController::class, 'upload'])->name('lampiran.upload'); Route::post('lampiran/upload', [LampiranDokumenController::class, 'upload'])->name('lampiran.upload');
Route::delete('lampiran/{lampiran}', [LampiranDokumenController::class, 'delete'])->name('lampiran.delete'); Route::delete('lampiran/{lampiran}', [LampiranDokumenController::class, 'delete'])->name('lampiran.delete');
Route::name('laporan-admin-kredit.')->prefix('laporan-admin-kredit')->group(function () {
Route::get('/', [LaporanAdminKreditController::class, 'index'])->name('index');
Route::get('datatables', [LaporanAdminKreditController::class, 'dataForDatatables'])->name('datatables');
Route::get('export', [LaporanAdminKreditController::class, 'export'])->name('export');
Route::get('{id}/edit', [LaporanAdminKreditController::class,'edit'])->name('edit');
Route::put('{id}', [LaporanAdminKreditController::class,'update'])->name('update');
});
Route::name('bank-data.')->prefix('bank-data')->group(function () { Route::name('bank-data.')->prefix('bank-data')->group(function () {
Route::get('datatables', [BankDataController::class, 'dataForDatatables'])->name('datatables'); Route::get('datatables', [BankDataController::class, 'dataForDatatables'])->name('datatables');
}); });
@@ -803,16 +792,27 @@ Route::middleware(['auth'])->group(function () {
Route::get('/export', [BucokController::class, 'export'])->name('export'); Route::get('/export', [BucokController::class, 'export'])->name('export');
}); });
// Route untuk SLIK Route::prefix('admin-kredit')->name('admin-kredit.')->group(function () {
// Route SLIK
Route::prefix('slik')->name('slik.')->group(function () { Route::prefix('slik')->name('slik.')->group(function () {
Route::get('/', [SlikController::class, 'index'])->name('index'); Route::get('/', [SlikController::class, 'index'])->name('index');
Route::get('/datatables', [SlikController::class, 'dataForDatatables'])->name('datatables'); Route::get('datatables', [SlikController::class, 'dataForDatatables'])->name('datatables');
Route::get('/{id}', [SlikController::class, 'show'])->name('show'); Route::get('{id}', [SlikController::class, 'show'])->name('show');
Route::post('/import', [SlikController::class, 'import'])->name('import'); Route::get('import', [SlikController::class, 'importForm'])->name('import-form');
Route::get('/import-form', [SlikController::class, 'importForm'])->name('import-form'); Route::post('import', [SlikController::class, 'import'])->name('import');
Route::get('/download-template', [SlikController::class, 'downloadTemplate'])->name('download-template'); Route::get('download-template', [SlikController::class, 'downloadTemplate'])->name('download-template');
Route::get('/export', [SlikController::class, 'export'])->name('export'); Route::get('export', [SlikController::class, 'export'])->name('export');
Route::post('/truncate', [SlikController::class, 'truncate'])->name('truncate'); Route::delete('truncate', [SlikController::class, 'truncate'])->name('truncate');
});
// Laporan Routes
Route::prefix('laporan')->name('laporan.')->group(function () {
Route::get('/', [LaporanAdminKreditController::class, 'index'])->name('index');
Route::get('datatables', [LaporanAdminKreditController::class, 'dataForDatatables'])->name('datatables');
Route::get('export', [LaporanAdminKreditController::class, 'export'])->name('export');
Route::get('{id}/edit', [LaporanAdminKreditController::class,'edit'])->name('edit');
Route::put('{id}', [LaporanAdminKreditController::class,'update'])->name('update');
});
}); });
}); });