From 05b64f94e265362801086b5d2e7d4fbc08454edc Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 17 Mar 2025 10:19:10 +0700 Subject: [PATCH 01/10] feat(laporan-admin-kredit): tambahkan fitur laporan admin kredit - Menambahkan model LaporanAdminKredit. - Menambahkan controller LaporanAdminKreditController dengan metode untuk menampilkan dan mengelola data. - Menambahkan rute untuk laporan admin kredit. - Menambahkan breadcrumb untuk navigasi laporan admin kredit. - Menambahkan migrasi untuk tabel laporan_admin_kredit. - Menambahkan relasi di model Debiture untuk laporan admin kredit. --- .../LaporanAdminKreditController.php | 87 ++++++++ app/Models/Debiture.php | 5 + app/Models/LaporanAdminKredit.php | 37 ++++ ...4200_create_laporan_admin_kredit_table.php | 43 ++++ module.json | 17 ++ .../laporan_admin_kredit/index.blade.php | 199 ++++++++++++++++++ routes/breadcrumbs.php | 5 + routes/web.php | 6 + 8 files changed, 399 insertions(+) create mode 100644 app/Http/Controllers/LaporanAdminKreditController.php create mode 100644 app/Models/LaporanAdminKredit.php create mode 100644 database/migrations/2025_03_17_024200_create_laporan_admin_kredit_table.php create mode 100644 resources/views/laporan_admin_kredit/index.blade.php diff --git a/app/Http/Controllers/LaporanAdminKreditController.php b/app/Http/Controllers/LaporanAdminKreditController.php new file mode 100644 index 0000000..d87b93d --- /dev/null +++ b/app/Http/Controllers/LaporanAdminKreditController.php @@ -0,0 +1,87 @@ +paginate(10); + return view('lpj::laporan_admin_kredit.index', compact('laporans')); + } + + public function dataForDatatables(Request $request) + { + if (is_null($this->user) || !$this->user->can('laporan-admin-kredit.view')) { + //abort(403, 'Sorry! You are not allowed to view laporan admin kredit.'); + } + + // Retrieve data from the database + $query = LaporanAdminKredit::query(); + + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->where('kode_register_t24', 'LIKE', '%' . $search . '%') + ->orWhere('jenis_agunan', 'LIKE', '%' . $search . '%') + ->orWhere('nama_pemilik', 'LIKE', '%' . $search . '%') + ->orWhereHas('debiture', function ($query) use ($search) { + $query->where('name', 'LIKE', '%' . $search . '%'); + }); + }); + } + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Get the total count of records + $totalRecords = $query->count(); + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query->with(['debiture.branch'])->get(); + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = $request->get('page', 1); + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + } + } diff --git a/app/Models/Debiture.php b/app/Models/Debiture.php index 3080ecb..abe9e8a 100644 --- a/app/Models/Debiture.php +++ b/app/Models/Debiture.php @@ -64,4 +64,9 @@ return $this->hasOne(Permohonan::class, 'debiture_id', 'id' ); } + public function laporanAdminKredit(): HasMany + { + return $this->hasMany(LaporanAdminKredit::class); + } + } diff --git a/app/Models/LaporanAdminKredit.php b/app/Models/LaporanAdminKredit.php new file mode 100644 index 0000000..41f6b9d --- /dev/null +++ b/app/Models/LaporanAdminKredit.php @@ -0,0 +1,37 @@ + 'date', + 'nilai_pasar_wajar' => 'decimal:2', + 'nilai_likuidasi' => 'decimal:2', + ]; + + /** + * Get the debiture that owns the laporan admin kredit. + */ + public function debiture(): BelongsTo + { + return $this->belongsTo(Debiture::class); + } +} diff --git a/database/migrations/2025_03_17_024200_create_laporan_admin_kredit_table.php b/database/migrations/2025_03_17_024200_create_laporan_admin_kredit_table.php new file mode 100644 index 0000000..e5217dc --- /dev/null +++ b/database/migrations/2025_03_17_024200_create_laporan_admin_kredit_table.php @@ -0,0 +1,43 @@ +id(); + $table->foreignIdFor(Debiture::class)->constrained()->cascadeOnDelete(); + $table->string('kode_register_t24')->nullable(); + $table->string('jenis_agunan')->nullable(); + $table->string('bukti_kepemilikan')->nullable(); + $table->text('alamat_agunan')->nullable(); + $table->string('nama_pemilik')->nullable(); + $table->date('tanggal_kunjungan')->nullable(); + $table->decimal('nilai_pasar_wajar', 15, 2)->nullable(); + $table->decimal('nilai_likuidasi', 15, 2)->nullable(); + $table->string('nama_penilai')->nullable(); + $table->timestamps(); + $table->softDeletes(); + + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('laporan_admin_kredit'); + } +}; diff --git a/module.json b/module.json index 694f353..cd65329 100644 --- a/module.json +++ b/module.json @@ -349,6 +349,23 @@ "EO Appraisal", "senior-officer" ] + }, + { + "title": "Laporan Admin Kredit", + "path": "laporan-admin-kredit", + "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": [ diff --git a/resources/views/laporan_admin_kredit/index.blade.php b/resources/views/laporan_admin_kredit/index.blade.php new file mode 100644 index 0000000..b08aabe --- /dev/null +++ b/resources/views/laporan_admin_kredit/index.blade.php @@ -0,0 +1,199 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('laporan-admin-kredit') }} +@endsection + +@section('content') +
+
+
+

+ Daftar Laporan Admin Kredit +

+
+
+ +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + +
+ + + CIF + + + Kode Register T24 + + + Nama Debitur + + + Cabang + + + Jenis Agunan + + + Bukti Kepemilikan + + + Alamat Agunan + + + Nama Pemilik + + + Tanggal Kunjungan + + + Nilai Pasar Wajar + + + Nilai Likuidasi + + + Nama Penilai + + Action
+
+ +
+
+
+@endsection + +@push('scripts') + +@endpush diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index 7e554b8..a00b4e7 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -714,5 +714,10 @@ Breadcrumbs::for('noc', function (BreadcrumbTrail $trail) { $trail->push('Edit Jenis Lampiran', route('basicdata.jenis-lampiran.edit', $id)); }); + // Laporan Admin Kredit + Breadcrumbs::for('laporan-admin-kredit', function ($trail) { + $trail->push('Laporan Admin Kredit', route('laporan-admin-kredit.index')); + }); + // add andy require __DIR__ . '/breadcrumbs_registrasi.php'; diff --git a/routes/web.php b/routes/web.php index 676f125..5a67a4c 100644 --- a/routes/web.php +++ b/routes/web.php @@ -18,6 +18,7 @@ use Modules\Lpj\Http\Controllers\JenisLegalitasJaminanController; use Modules\Lpj\Http\Controllers\JenisPenilaianController; use Modules\Lpj\Http\Controllers\KJPPController; use Modules\Lpj\Http\Controllers\LampiranDokumenController; + use Modules\Lpj\Http\Controllers\LaporanAdminKreditController; use Modules\Lpj\Http\Controllers\LaporanController; use Modules\Lpj\Http\Controllers\LaporanExternalController; use Modules\Lpj\Http\Controllers\NilaiPlafondController; @@ -658,6 +659,11 @@ Route::middleware(['auth'])->group(function () { 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'); + }); }); From 831561b83b942945a9101daddcdb2e09d73c18a3 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 17 Mar 2025 10:27:45 +0700 Subject: [PATCH 02/10] feat(laporan-admin-kredit): tambahkan fitur ekspor laporan admin kredit - Menambahkan kelas LaporanAdminKreditExport untuk mengelola ekspor data ke Excel. - Menambahkan metode export pada LaporanAdminKreditController untuk mengunduh laporan. - Memperbarui tampilan untuk menambahkan tautan ekspor ke Excel. - Menghapus kolom aksi yang tidak diperlukan dari tabel. --- app/Exports/LaporanAdminKreditExport.php | 70 +++++++++++++++++++ .../LaporanAdminKreditController.php | 7 ++ .../laporan_admin_kredit/index.blade.php | 15 +--- 3 files changed, 79 insertions(+), 13 deletions(-) create mode 100644 app/Exports/LaporanAdminKreditExport.php diff --git a/app/Exports/LaporanAdminKreditExport.php b/app/Exports/LaporanAdminKreditExport.php new file mode 100644 index 0000000..b537e9c --- /dev/null +++ b/app/Exports/LaporanAdminKreditExport.php @@ -0,0 +1,70 @@ +get(); + } + + public function map($row): array + { + return [ + $row->id, + $row->debiture->cif, + $row->debiture->name, + $row->debiture->branch->name, + $row->kode_register_t24, + $row->jenis_agunan, + $row->bukti_kepemilikan, + $row->alamat_agunan, + $row->nama_pemilik, + $row->tanggal_kunjungan, + $row->nilai_pasar_wajar, + $row->nilai_likuidasi, + $row->nama_penilai, + $row->created_at + ]; + } + + public function headings(): array + { + return [ + 'ID', + 'CIF', + 'Nama Debitur', + 'Cabang', + 'Kode Register T24', + 'Jenis Agunan', + 'Bukti Kepemilikan', + 'Alamat Agunan', + 'Nama Pemilik', + 'Tanggal Kunjungan', + 'Nilai Pasar Wajar', + 'Nilai Likuidasi', + 'Nama Penilai', + 'Created At' + ]; + } + + public function columnFormats(): array + { + return [ + 'A' => NumberFormat::FORMAT_NUMBER, + 'B' => NumberFormat::FORMAT_NUMBER, + 'J' => NumberFormat::FORMAT_DATE_DDMMYYYY, + 'K' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'L' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, + 'M' => NumberFormat::FORMAT_DATE_DATETIME, + ]; + } +} diff --git a/app/Http/Controllers/LaporanAdminKreditController.php b/app/Http/Controllers/LaporanAdminKreditController.php index d87b93d..d9c970b 100644 --- a/app/Http/Controllers/LaporanAdminKreditController.php +++ b/app/Http/Controllers/LaporanAdminKreditController.php @@ -5,7 +5,9 @@ use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; + use Modules\Lpj\Exports\LaporanAdminKreditExport; use Modules\Lpj\Models\LaporanAdminKredit; + use Maatwebsite\Excel\Facades\Excel; class LaporanAdminKreditController extends Controller { @@ -84,4 +86,9 @@ 'data' => $data, ]); } + + public function export() + { + return Excel::download(new LaporanAdminKreditExport, 'laporan_admin_kredit.xlsx'); + } } diff --git a/resources/views/laporan_admin_kredit/index.blade.php b/resources/views/laporan_admin_kredit/index.blade.php index b08aabe..339c1db 100644 --- a/resources/views/laporan_admin_kredit/index.blade.php +++ b/resources/views/laporan_admin_kredit/index.blade.php @@ -19,7 +19,7 @@ @@ -80,7 +80,6 @@ Nama Penilai - Action @@ -175,17 +174,7 @@ }, nama_penilai: { title: 'Nama Penilai', - }, - actions: { - title: 'Action', - render: (item, data) => { - return ` - - - - `; - }, - }, + } } }; From 31245457cdefbade1975343ba5e40aeea3e03ca7 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 17 Mar 2025 10:58:47 +0700 Subject: [PATCH 03/10] feat(laporan-admin-kredit): tambahkan filter tanggal pada laporan admin kredit - Menambahkan input untuk tanggal awal dan tanggal akhir di tampilan laporan. - Memperbarui logika pencarian untuk mendukung filter berdasarkan rentang tanggal. - Menambahkan fungsi untuk menerapkan semua filter secara bersamaan. --- .../LaporanAdminKreditController.php | 28 +++++++---- .../laporan_admin_kredit/index.blade.php | 47 +++++++++++++++++-- 2 files changed, 63 insertions(+), 12 deletions(-) diff --git a/app/Http/Controllers/LaporanAdminKreditController.php b/app/Http/Controllers/LaporanAdminKreditController.php index d9c970b..4d12acc 100644 --- a/app/Http/Controllers/LaporanAdminKreditController.php +++ b/app/Http/Controllers/LaporanAdminKreditController.php @@ -31,17 +31,29 @@ // Retrieve data from the database $query = LaporanAdminKredit::query(); + if ($request->has('tanggal_awal') && $request->has('tanggal_akhir')) { + $query->whereBetween('tanggal_kunjungan', [$request->tanggal_awal, $request->tanggal_akhir]); + } + // Apply search filter if provided if ($request->has('search') && !empty($request->get('search'))) { $search = $request->get('search'); - $query->where(function ($q) use ($search) { - $q->where('kode_register_t24', 'LIKE', '%' . $search . '%') - ->orWhere('jenis_agunan', 'LIKE', '%' . $search . '%') - ->orWhere('nama_pemilik', 'LIKE', '%' . $search . '%') - ->orWhereHas('debiture', function ($query) use ($search) { - $query->where('name', 'LIKE', '%' . $search . '%'); - }); - }); + $search_ = json_decode($search); + + if (isset($search_->search)) { + $query->where(function ($q) use ($search_) { + $q->where('kode_register_t24', 'LIKE', '%' . $search_->search . '%') + ->orWhere('jenis_agunan', 'LIKE', '%' . $search_->search . '%') + ->orWhere('nama_pemilik', 'LIKE', '%' . $search_->search . '%') + ->orWhereHas('debiture', function ($query) use ($search_) { + $query->where('name', 'LIKE', '%' . $search_->search . '%'); + }); + }); + } + + if (isset($search_->tanggal_awal) && isset($search_->tanggal_akhir)) { + $query->whereBetween('tanggal_kunjungan', [$search_->tanggal_awal, $search_->tanggal_akhir]); + } } // Apply sorting if provided diff --git a/resources/views/laporan_admin_kredit/index.blade.php b/resources/views/laporan_admin_kredit/index.blade.php index 339c1db..f54455a 100644 --- a/resources/views/laporan_admin_kredit/index.blade.php +++ b/resources/views/laporan_admin_kredit/index.blade.php @@ -12,6 +12,19 @@ Daftar Laporan Admin Kredit
+
+ +
+
+ +
+
+ +