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:
@@ -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');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
92
resources/views/laporan_admin_kredit/form.blade.php
Normal file
92
resources/views/laporan_admin_kredit/form.blade.php
Normal 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
|
||||
@@ -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>`;
|
||||
},
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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'));
|
||||
});
|
||||
|
||||
@@ -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 () {
|
||||
|
||||
Reference in New Issue
Block a user