feat(laporan-admin-kredit): tambahkan fitur edit dan update laporan admin kredit

- Menambahkan metode edit untuk menampilkan formulir pengeditan laporan admin kredit.
- Menambahkan metode update untuk memvalidasi dan memperbarui laporan admin kredit.
- Memperbarui rute untuk mendukung pengeditan dan pembaruan laporan admin kredit.
- Menambahkan breadcrumb untuk navigasi ke halaman edit laporan admin kredit.
- Memperbarui tampilan index untuk menambahkan tombol aksi edit.
This commit is contained in:
Daeng Deni Mardaeni
2025-04-11 11:04:11 +07:00
parent 4b0e651cf5
commit a38b09d1a8
5 changed files with 166 additions and 6 deletions

View File

@@ -5,9 +5,9 @@
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Facades\Excel;
use Modules\Lpj\Exports\LaporanAdminKreditExport;
use Modules\Lpj\Models\LaporanAdminKredit;
use Maatwebsite\Excel\Facades\Excel;
use Modules\Lpj\Models\Permohonan;
class LaporanAdminKreditController extends Controller
@@ -19,10 +19,15 @@
*/
public function index()
{
$permohonan = Permohonan::with(['documents.jenisJaminan','penilaian._user_penilai','penilai','documents.detail.jenisLegalitasJaminan'])->where(['status'=>'done'])->get();
foreach($permohonan as $_permohonan){
$permohonan = Permohonan::with([
'documents.jenisJaminan',
'penilaian._user_penilai',
'penilai',
'documents.detail.jenisLegalitasJaminan'
])->where(['status' => 'done'])->get();
foreach ($permohonan as $_permohonan) {
$npw = 0;
if(isset($_permohonan->penilai->lpj)){
if (isset($_permohonan->penilai->lpj)) {
$npw = json_decode($_permohonan->penilai->lpj, true);
$npw = $npw['total_nilai_pasar_wajar'] ?? 0;
}
@@ -48,7 +53,7 @@
LaporanAdminKredit::updateOrCreate([
'debiture_id' => $_permohonan->debiture_id,
],$dataAdk);
], $dataAdk);
}
@@ -71,7 +76,7 @@
// Apply search filter if provided
if ($request->has('search') && !empty($request->get('search'))) {
$search = $request->get('search');
$search = $request->get('search');
$search_ = json_decode($search);
if (isset($search_->search)) {
@@ -137,4 +142,44 @@
{
return Excel::download(new LaporanAdminKreditExport, 'laporan_admin_kredit.xlsx');
}
public function edit($id)
{
$laporanAdminKredit = LaporanAdminKredit::with('debiture.branch')->find($id);
return view('lpj::laporan_admin_kredit.form', compact('laporanAdminKredit'));
}
public function update(Request $request, $id)
{
$request->validate([
'kode_register_t24' => 'nullable',
'cif' => 'required',
]);
try {
$laporanAdminKredit = LaporanAdminKredit::find($id);
// Update only the editable fields
$laporanAdminKredit->update([
'kode_register_t24' => $request->kode_register_t24,
'updated_by' => Auth::id(),
]);
// Update CIF in the debiture table if needed
if ($laporanAdminKredit->debiture) {
$laporanAdminKredit->debiture->update([
'cif' => $request->cif,
'updated_by' => Auth::id(),
]);
}
return redirect()
->route('laporan-admin-kredit.index')
->with('success', 'Laporan Admin Kredit updated successfully');
} catch (Exception $e) {
return redirect()
->route('laporan-admin-kredit.edit', $id)
->with('error', 'Failed to update Laporan Admin Kredit');
}
}
}

View File

@@ -0,0 +1,92 @@
@extends('layouts.main')
@section('breadcrumbs')
{{ Breadcrumbs::render('laporan-admin-kredit-edit', $laporanAdminKredit) }}
@endsection
@section('content')
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
<div class="card border border-agi-100">
<div class="card-header bg-agi-50 py-5">
<h3 class="card-title">
Edit Laporan Admin Kredit
</h3>
</div>
<div class="card-body">
<form action="{{ route('laporan-admin-kredit.update', $laporanAdminKredit->id) }}" method="POST" class="grid gap-5">
@csrf
@method('PUT')
<div class="grid grid-cols-1 md:grid-cols-2 gap-5">
<!-- Editable Fields -->
<div class="form-group">
<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>
</div>
<div class="form-group">
<label for="cif" class="form-label">CIF</label>
<input type="text" name="cif" id="cif" class="input" value="{{ $laporanAdminKredit->debiture ? $laporanAdminKredit->debiture->cif : '' }}" required>
</div>
<!-- Read-only Information Fields -->
<div class="form-group">
<label class="form-label">Nama Debitur</label>
<div class="input bg-gray-100">{{ $laporanAdminKredit->debiture ? $laporanAdminKredit->debiture->name : '' }}</div>
</div>
<div class="form-group">
<label class="form-label">Cabang</label>
<div class="input bg-gray-100">{{ $laporanAdminKredit->debiture ? $laporanAdminKredit->debiture->branch->name : '' }}</div>
</div>
<div class="form-group">
<label class="form-label">Jenis Agunan</label>
<div class="input bg-gray-100">{{ $laporanAdminKredit->jenis_agunan }}</div>
</div>
<div class="form-group">
<label class="form-label">Bukti Kepemilikan</label>
<div class="input bg-gray-100">{{ $laporanAdminKredit->bukti_kepemilikan }}</div>
</div>
<div class="form-group">
<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>
<div class="form-group">
<label class="form-label">Nama Pemilik</label>
<div class="input bg-gray-100">{{ $laporanAdminKredit->nama_pemilik }}</div>
</div>
<div class="form-group">
<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>
<div class="form-group">
<label class="form-label">Nilai Pasar Wajar</label>
<div class="input bg-gray-100">{{ number_format($laporanAdminKredit->nilai_pasar_wajar, 0, ',', '.') }}</div>
</div>
<div class="form-group">
<label class="form-label">Nilai Likuidasi</label>
<div class="input bg-gray-100">{{ number_format($laporanAdminKredit->nilai_likuidasi, 0, ',', '.') }}</div>
</div>
<div class="form-group">
<label class="form-label">Nama Penilai</label>
<div class="input bg-gray-100">{{ $laporanAdminKredit->nama_penilai }}</div>
</div>
</div>
<div class="flex justify-end gap-3">
<a href="{{ route('laporan-admin-kredit.index') }}" class="btn btn-light">Cancel</a>
<button type="submit" class="btn btn-primary">Update</button>
</div>
</form>
</div>
</div>
</div>
@endsection

View File

@@ -93,6 +93,10 @@
<span class="sort"> <span class="sort-label"> Nama Penilai </span>
<span class="sort-icon"> </span> </span>
</th>
<th class="min-w-[100px]" data-datatable-column="actions">
<span class="sort"> <span class="sort-label"> Actions </span>
<span class="sort-icon"> </span> </span>
</th>
</tr>
</thead>
</table>
@@ -191,6 +195,16 @@
},
nama_penilai: {
title: 'Nama Penilai',
},
actions: {
title: 'Action',
render: (item, data) => {
return `<div class="flex flex-nowrap justify-center">
<a href="laporan-admin-kredit/${data.id}/edit" class="btn btn-sm btn-outline btn-info">
<i class="ki-filled ki-pencil"></i>
</a>
</div>`;
},
}
}
};

View File

@@ -719,6 +719,12 @@ Breadcrumbs::for('laporan-admin-kredit', function ($trail) {
$trail->push('Laporan Admin Kredit', route('laporan-admin-kredit.index'));
});
// Laporan Admin Kredit Edit
Breadcrumbs::for('laporan-admin-kredit-edit', function (BreadcrumbTrail $trail, $laporanAdminKredit) {
$trail->parent('laporan-admin-kredit');
$trail->push('Edit', route('laporan-admin-kredit.edit', $laporanAdminKredit->id));
});
Breadcrumbs::for('bank-data', function ($trail) {
$trail->push('Bank Data', route('bank-data.index'));
});

View File

@@ -669,6 +669,9 @@ Route::middleware(['auth'])->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 () {