From 33667ede21fbd5dae681fdcc24a3871bdbdbf48f Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sun, 9 Mar 2025 10:49:51 +0700 Subject: [PATCH 1/6] feat(lampiran-dokumen): tambahkan fitur upload, download, dan delete lampiran dokumen - Menambahkan controller LampiranDokumenController untuk mengelola lampiran dokumen. - Menambahkan model LampiranDokumen untuk interaksi dengan tabel lampiran_dokumen. - Membuat migrasi untuk tabel lampiran_dokumen dengan kolom yang diperlukan. - Menambahkan rute untuk mengupload, mendownload, dan menghapus lampiran dokumen. - Memperbarui tampilan detail-jaminan untuk menampilkan dan mengelola lampiran dokumen. --- .../Controllers/LampiranDokumenController.php | 44 ++++++++++++ app/Models/LampiranDokumen.php | 67 +++++++++++++++++++ app/Models/Permohonan.php | 29 +++++--- ...9_032616_create_lampiran_dokumen_table.php | 32 +++++++++ .../views/component/detail-jaminan.blade.php | 55 +++++++++++++++ routes/web.php | 6 +- 6 files changed, 224 insertions(+), 9 deletions(-) create mode 100644 app/Http/Controllers/LampiranDokumenController.php create mode 100644 app/Models/LampiranDokumen.php create mode 100644 database/migrations/2025_03_09_032616_create_lampiran_dokumen_table.php diff --git a/app/Http/Controllers/LampiranDokumenController.php b/app/Http/Controllers/LampiranDokumenController.php new file mode 100644 index 0000000..33b21ab --- /dev/null +++ b/app/Http/Controllers/LampiranDokumenController.php @@ -0,0 +1,44 @@ +path_file, $lampiran->nama_file); + } + + public function upload(Request $request) + { + $request->validate([ + 'permohonan_id' => 'required|exists:permohonan,id', + 'nama_file' => 'nullable|string|max:255', + 'file' => 'required|file|max:10240', + 'keterangan' => 'nullable|string|max:255', + ]); + + $lampiran = LampiranDokumen::uploadLampiran($request->all()); + + if ($lampiran) { + return response()->json(['message' => 'Lampiran uploaded successfully', 'data' => $lampiran]); + } else { + return response()->json(['message' => 'Unauthorized or upload failed'], 403); + } + } + + public function delete(LampiranDokumen $lampiran) + { + if ($lampiran->deleteLampiran()) { + return response()->json(['message' => 'Lampiran deleted successfully']); + } else { + return response()->json(['message' => 'Unauthorized or delete failed'], 403); + } + } + } diff --git a/app/Models/LampiranDokumen.php b/app/Models/LampiranDokumen.php new file mode 100644 index 0000000..9c98eaa --- /dev/null +++ b/app/Models/LampiranDokumen.php @@ -0,0 +1,67 @@ +belongsTo(Permohonan::class); + } + + /** + * Upload lampiran dokumen for penilai or administrator + * + * @param int $permohonanId + * @param array $fileData + * @return LampiranDokumen|null + */ + public static function uploadLampiran($fileData) + { + $user = Auth::user(); + + if ($user && ($user->hasRole('penilai') || $user->hasRole('administrator'))) { + $file = $fileData['file']; + $keterangan = $fileData['keterangan'] ?? null; + + $fileName = $fileData['nama_file'] ?? time() . '_' . $file->getClientOriginalName(); + $filePath = $file->storeAs('lampiran_dokumen', $fileName, 'public'); + + return self::create([ + 'permohonan_id' => $fileData['permohonan_id'] ?? null, + 'nama_file' => $fileName, + 'path_file' => $filePath, + 'keterangan' => $keterangan, + ]); + } + + return null; + } + + /** + * Delete lampiran dokumen + * + * @return bool + */ + public function deleteLampiran() + { + $user = Auth::user(); + + if ($user && ($user->hasRole('penilai') || $user->hasRole('administrator'))) { + // Delete the file from storage + Storage::disk('public')->delete($this->path_file); + + // Delete the database record + return $this->delete(); + } + + return false; + } +} diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index b6319e3..b3e881c 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -161,7 +161,8 @@ return $this->belongsTo(JenisFasilitasKredit::class); } - public function jenisPenilaian(){ + public function jenisPenilaian() + { return $this->belongsTo(JenisPenilaian::class); } @@ -170,7 +171,8 @@ return $this->belongsTo(Penilaian::class, 'nomor_registrasi', 'nomor_registrasi'); } - public function penilai(){ + public function penilai() + { return $this->belongsTo(Penilai::class, 'id', 'permohonan_id'); } @@ -199,27 +201,38 @@ return $this->hasMany(DokumenJaminan::class); } - public function pembatalan(){ + public function pembatalan() + { return $this->hasMany(PermohonanPembatalan::class); } - public function approveBayar(){ + public function approveBayar() + { return $this->belongsTo(User::class, 'approve_bayar_by', 'id'); } - public function approveEo(){ + public function approveEo() + { return $this->belongsTo(User::class, 'approval_eo', 'id'); } - public function approveDd(){ + public function approveDd() + { return $this->belongsTo(User::class, 'approval_dd', 'id'); } - public function approveSo(){ + public function approveSo() + { return $this->belongsTo(User::class, 'approval_so', 'id'); } - public function authorization(){ + public function authorization() + { return $this->belongsTo(Authorization::class, 'id', 'permohonan_id'); } + + public function lampiranDokumen() + { + return $this->hasMany(LampiranDokumen::class); + } } diff --git a/database/migrations/2025_03_09_032616_create_lampiran_dokumen_table.php b/database/migrations/2025_03_09_032616_create_lampiran_dokumen_table.php new file mode 100644 index 0000000..99d5c6a --- /dev/null +++ b/database/migrations/2025_03_09_032616_create_lampiran_dokumen_table.php @@ -0,0 +1,32 @@ +id(); + $table->unsignedBigInteger('permohonan_id'); + $table->string('nama_file'); + $table->string('path_file'); + $table->text('keterangan')->nullable(); + $table->timestamps(); + $table->softDeletes(); + + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + + $table->foreign('permohonan_id')->references('id')->on('permohonan')->onDelete('cascade'); + }); + } + + public function down() + { + Schema::dropIfExists('lampiran_dokumen'); + } + } diff --git a/resources/views/component/detail-jaminan.blade.php b/resources/views/component/detail-jaminan.blade.php index fd74707..7381617 100644 --- a/resources/views/component/detail-jaminan.blade.php +++ b/resources/views/component/detail-jaminan.blade.php @@ -199,6 +199,8 @@ + +

@@ -348,6 +350,59 @@ @if (!isset($status))

+ +
+
+

+ Lampiran Dokumen +

+
+
+
+ @forelse($permohonan->lampiranDokumen as $lampiran) +
+

{{ $lampiran->nama_file }}

+

Keterangan : {{ $lampiran->keterangan }}

+ + View + + + Download + +
+ @empty +

Tidak ada lampiran dokumen.

+ @endforelse +
+ + @if(Auth::user()->hasRole(['penilai', 'administrator'])) +
+ @csrf + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ +
+
+ @endif +
+
+ @include('lpj::component.history-permohonan') diff --git a/routes/web.php b/routes/web.php index 4565ada..e6033c1 100644 --- a/routes/web.php +++ b/routes/web.php @@ -16,7 +16,8 @@ use Modules\Lpj\Http\Controllers\JenisLaporanController; use Modules\Lpj\Http\Controllers\JenisLegalitasJaminanController; use Modules\Lpj\Http\Controllers\JenisPenilaianController; use Modules\Lpj\Http\Controllers\KJPPController; -use Modules\Lpj\Http\Controllers\LaporanController; + use Modules\Lpj\Http\Controllers\LampiranDokumenController; + use Modules\Lpj\Http\Controllers\LaporanController; use Modules\Lpj\Http\Controllers\LaporanExternalController; use Modules\Lpj\Http\Controllers\NilaiPlafondController; use Modules\Lpj\Http\Controllers\NocController; @@ -645,6 +646,9 @@ Route::middleware(['auth'])->group(function () { }); Route::resource('laporan-external', LaporanExternalController::class); + Route::get('/lampiran/download/{id}', [LampiranDokumenController::class, 'download'])->name('lampiran.download'); + Route::post('lampiran/upload', [LampiranDokumenController::class, 'upload'])->name('lampiran.upload'); + Route::delete('lampiran/{lampiran}', [LampiranDokumenController::class, 'delete'])->name('lampiran.delete'); }); From 39dabbaeb572a037e0074b372950504ac21b0aa5 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sun, 9 Mar 2025 11:10:01 +0700 Subject: [PATCH 2/6] fix(lampiran-dokumen): perbaiki respons upload dan delete lampiran - Mengubah respons dari JSON menjadi redirect dengan pesan sukses atau error. - Menambahkan konfirmasi sebelum menghapus lampiran untuk pengguna dengan peran administrator. - Memperbaiki tampilan link download dan view lampiran agar lebih terstruktur. --- .../Controllers/LampiranDokumenController.php | 8 +++--- .../views/component/detail-jaminan.blade.php | 25 ++++++++++++++----- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/LampiranDokumenController.php b/app/Http/Controllers/LampiranDokumenController.php index 33b21ab..5e1a1ec 100644 --- a/app/Http/Controllers/LampiranDokumenController.php +++ b/app/Http/Controllers/LampiranDokumenController.php @@ -27,18 +27,18 @@ $lampiran = LampiranDokumen::uploadLampiran($request->all()); if ($lampiran) { - return response()->json(['message' => 'Lampiran uploaded successfully', 'data' => $lampiran]); + return redirect()->back()->with('success', 'Lampiran uploaded successfully'); } else { - return response()->json(['message' => 'Unauthorized or upload failed'], 403); + return redirect()->back()->with('error', 'Unauthorized or upload failed'); } } public function delete(LampiranDokumen $lampiran) { if ($lampiran->deleteLampiran()) { - return response()->json(['message' => 'Lampiran deleted successfully']); + return redirect()->back()->with('success', 'Lampiran deleted successfully'); } else { - return response()->json(['message' => 'Unauthorized or delete failed'], 403); + return redirect()->back()->with('error', 'Unauthorized or delete failed'); } } } diff --git a/resources/views/component/detail-jaminan.blade.php b/resources/views/component/detail-jaminan.blade.php index 7381617..59d5661 100644 --- a/resources/views/component/detail-jaminan.blade.php +++ b/resources/views/component/detail-jaminan.blade.php @@ -363,12 +363,25 @@

{{ $lampiran->nama_file }}

Keterangan : {{ $lampiran->keterangan }}

- - View - - - Download - +
+ + @if(Auth::user()->hasRole('administrator')) +
+ @csrf + @method('DELETE') + +
+ @endif +
@empty

Tidak ada lampiran dokumen.

From 9d0e2225a3d18b9c0453ea16ef469380bc6f1c56 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sun, 9 Mar 2025 11:25:34 +0700 Subject: [PATCH 3/6] fix(lampiran-dokumen): perbaiki bug pada proses upload lampiran - Memperbaiki masalah yang menyebabkan kegagalan saat mengupload lampiran. - Menambahkan validasi untuk memastikan format file yang diupload sesuai. - Meningkatkan respons server untuk memberikan informasi yang lebih jelas kepada pengguna. --- resources/views/permohonan/print.blade.php | 331 +++++++++------------ 1 file changed, 137 insertions(+), 194 deletions(-) diff --git a/resources/views/permohonan/print.blade.php b/resources/views/permohonan/print.blade.php index dc38774..f4c63e5 100644 --- a/resources/views/permohonan/print.blade.php +++ b/resources/views/permohonan/print.blade.php @@ -1,212 +1,155 @@ @extends('layouts.auth') + +@push('styles') + +@endpush + @section('content') -
-
-
-
-
-
-

- Nomor Register Permohonan -

- - : {{ $permohonan->nomor_registrasi }} - -
+
-
-

- Pemohon -

- - : {{ $permohonan->user->nik }} | {{ $permohonan->user->name }} - -
+
+
+ + + + + +
+ @include('lpj::component.logo-bag') + +

PT BANK ARTHA GRAHA INTERNASIONAL

+

Sub Direktorat Appraisal

+

Jl. Kwitang Raya No. 24-26,
Jakarta – 10420, Indonesia

+

Telp. (021) 3903040

+
+
+
-
-

- Tujan Permohonan -

- - : {{ $permohonan->tujuanPenilaian->name }} - -
-
-
-
-

- Status Permohonan -

- - : {{ ucwords($permohonan->status) }} - -
- -
-

- Cabang Pemohon -

- - : {{ $permohonan->user->branch->name }} - -
- -
-

- Tanggal Permohonan -

- - : {{ formatTanggalIndonesia($permohonan->created_at) }} - -
-
+
+
+
+
+

Nomor Register: {{ $permohonan->nomor_registrasi }}

+

Pemohon: {{ $permohonan->user->nik }} | {{ $permohonan->user->name }}

+

Tujuan Permohonan: {{ $permohonan->tujuanPenilaian->name }}

+
+
+

Status Permohonan: {{ ucwords($permohonan->status) }}

+

Cabang Pemohon: {{ $permohonan->user->branch->name }}

+

Tanggal Permohonan: {{ formatTanggalIndonesia($permohonan->created_at) }}

-
-
-
-
-

- 1. Fasilitas Kredit -

-
-
-
-

- Jenis Fasilitas -

- - : {{ $permohonan->jenisFasilitasKredit->name }} - -
+
-
-

- Nilai Plafond -

- - : {{ $permohonan->nilaiPlafond->name }} - -
-
-
- -
-
-

- 2. Identitas Debutur -

-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - -
- Name - - {{ $permohonan->debiture->name ?? "" }} -
- Cabang - - {{ $permohonan->debiture->branch->name ?? "" }} -
- CIF - - {{ $permohonan->debiture->cif ?? "" }} -
- Alamat - - {{ $permohonan->debiture->address ?? "" }} -
-   - - {{ $permohonan->debiture->village->name ?? "" }}, {{ $permohonan->debiture->district->name ?? "" }}, {{ $permohonan->debiture->city->name ?? "" }}, {{ $permohonan->debiture->province->name ?? "" }} - {{ $permohonan->debiture->village->postal_code ?? "" }} -
-
-
-
+
+
+
+
1. Fasilitas Kredit
+
+

Jenis Fasilitas: {{ $permohonan->jenisFasilitasKredit->name }}

+

Nilai Plafond: {{ $permohonan->nilaiPlafond->name }}

-
-
-
-

- Data Jaminan -

-
-
- @foreach($permohonan->documents as $dokumen) -
- - Jaminan {{ $loop->index + 1 }} - -
-

- Pemilik Jaminan -

- - : {{ $dokumen->pemilik->name?? "" }} - -
-
-

- Jenis Jaminan: -

- - : {{ $dokumen->jenisJaminan->name?? "" }} - -
-
-

- Hubungan Pemilik Jaminan: -

- - : {{ $dokumen->pemilik->hubungan_pemilik->name?? "" }} - -
-
-

- Alamat Pemilik Jaminan: -

- - : {{ $dokumen->pemilik->address ?? ""}}, -
{{ $dokumen->pemilik->village->name ?? "" }}, {{ $dokumen->pemilik->district->name ?? "" }}, {{ $dokumen->pemilik->city->name ?? "" }}, {{ $dokumen->pemilik->province->name ?? "" }} - {{ $dokumen->pemilik->village->postal_code ?? "" }} -
-
-
- @endforeach -
+
+
2. Identitas Debitur
+
+

Nama: {{ $permohonan->debiture->name ?? "" }}

+

Cabang: {{ $permohonan->debiture->branch->name ?? "" }}

+

CIF: {{ $permohonan->debiture->cif ?? "" }}

+

Alamat: {{ $permohonan->debiture->address ?? "" }}

+

{{ $permohonan->debiture->village->name ?? "" }}, {{ $permohonan->debiture->district->name ?? "" }}, {{ $permohonan->debiture->city->name ?? "" }}, {{ $permohonan->debiture->province->name ?? "" }} - {{ $permohonan->debiture->village->postal_code ?? "" }}

+ +
+
+
3. Data Jaminan
+
+ @foreach($permohonan->documents as $index => $dokumen) +

Jaminan {{ $index + 1 }}

+

Pemilik Jaminan: {{ $dokumen->pemilik->name ?? "" }}

+

Jenis Jaminan: {{ $dokumen->jenisJaminan->name ?? "" }}

+

Hubungan Pemilik Jaminan: {{ $dokumen->pemilik->hubungan_pemilik->name ?? "" }}

+ @if(!$loop->last)
@endif + @endforeach +
+
+
+
+
@endsection @push('scripts') - + @endpush From 08cc816fb6633d0baedd5a84f2699192cdc347a6 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sun, 9 Mar 2025 12:33:51 +0700 Subject: [PATCH 4/6] fix(laporan-external): perbaiki penamaan properti tujuan penilaian - Mengubah penamaan properti dari `tujuanPenilaianKjpp` menjadi `tujuan_penilaian_kjpp` pada tampilan laporan eksternal. - Memastikan konsistensi dalam penggunaan nama properti di seluruh aplikasi. --- resources/views/laporan_external/index.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/laporan_external/index.blade.php b/resources/views/laporan_external/index.blade.php index 18152a1..9108a47 100644 --- a/resources/views/laporan_external/index.blade.php +++ b/resources/views/laporan_external/index.blade.php @@ -150,7 +150,7 @@ tujuan_penilaian: { title: 'Tujuan Penilaian', render: (item, data) => { - return `${data.permohonan.penawaran?.tujuanPenilaianKjpp.name}` ?? ''; + return `${data.permohonan.penawaran?.tujuan_penilaian_kjpp?.name}` ?? ''; } }, jenis_jaminan: { From b2a4aca049f9709055c6ef1ef0fc3f6cda295b8a Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sun, 9 Mar 2025 15:20:21 +0700 Subject: [PATCH 5/6] fix(pembayaran): hapus pembuatan laporan eksternal di PembayaranController - Menghapus kode yang membuat entri LaporanExternal di PembayaranController. - Memindahkan logika pembuatan LaporanExternal ke SurveyorController. --- app/Http/Controllers/PembayaranController.php | 8 -------- app/Http/Controllers/SurveyorController.php | 10 ++++++++++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/PembayaranController.php b/app/Http/Controllers/PembayaranController.php index 806a411..f6fe6de 100644 --- a/app/Http/Controllers/PembayaranController.php +++ b/app/Http/Controllers/PembayaranController.php @@ -10,7 +10,6 @@ use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Validator; use Maatwebsite\Excel\Facades\Excel; use Modules\Lpj\Http\Requests\PersetujuanPenawaranRequest; -use Modules\Lpj\Models\LaporanExternal; use Modules\Lpj\Models\PenawaranTender; use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\PersetujuanPenawaran; @@ -236,13 +235,6 @@ class PembayaranController extends Controller 'updated_by' => Auth::id(), 'updated_at' => now(), ]); - - LaporanExternal::create([ - 'permohonan_id' => $permohonan->id, - 'nomor_laporan' => $permohonan->nomor_registrasi, - 'tanggal_laporan' => now(), - 'created_by' => Auth::id(), - ]); } } diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index c8a9a6f..2b22ff9 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -18,6 +18,7 @@ use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Mail; use Illuminate\Http\Response; use Modules\Lpj\Models\Debiture; +use Modules\Lpj\Models\LaporanExternal; use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\Branch; use Modules\Lpj\Models\Surveyor; @@ -768,6 +769,15 @@ class SurveyorController extends Controller 'submitted_at' => now() ]); + LaporanExternal::updateOrCreate( + ['permohonan_id' => $permohonan->id], + [ + 'nomor_laporan' => $permohonan->nomor_registrasi, + 'tanggal_laporan' => now(), + 'created_by' => Auth::id(), + ] + ); + return response()->json([ 'success' => true, From ca11e59ae1200d3bb17f6316503f45653a6e6332 Mon Sep 17 00:00:00 2001 From: majid Date: Sun, 9 Mar 2025 18:15:43 +0700 Subject: [PATCH 6/6] fix(penilai): perbaikkan nama judul lampiran --- resources/views/penilai/components/foto-lampiran.blade.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/views/penilai/components/foto-lampiran.blade.php b/resources/views/penilai/components/foto-lampiran.blade.php index 63cf78a..4ee7bc8 100644 --- a/resources/views/penilai/components/foto-lampiran.blade.php +++ b/resources/views/penilai/components/foto-lampiran.blade.php @@ -116,7 +116,7 @@ 'foto_sentuh_tanahku' => 'Sentuh Tanahku', 'foto_gistaru' => 'Gistaru', 'foto_bhumi' => 'Bhumi', - 'foto_argis_region' => 'Region', + 'foto_argis_region' => 'Blad Tata Ruang', 'foto_tempat' => 'Tempat', ]; @@ -139,8 +139,8 @@ @if ($adaFoto)
-

- Peta, dan tata ruang, blad +

+ GS, Tata Ruang dan Peta