diff --git a/app/Http/Controllers/LampiranDokumenController.php b/app/Http/Controllers/LampiranDokumenController.php new file mode 100644 index 0000000..5e1a1ec --- /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 redirect()->back()->with('success', 'Lampiran uploaded successfully'); + } else { + return redirect()->back()->with('error', 'Unauthorized or upload failed'); + } + } + + public function delete(LampiranDokumen $lampiran) + { + if ($lampiran->deleteLampiran()) { + return redirect()->back()->with('success', 'Lampiran deleted successfully'); + } else { + return redirect()->back()->with('error', 'Unauthorized or delete failed'); + } + } + } 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, 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..59d5661 100644 --- a/resources/views/component/detail-jaminan.blade.php +++ b/resources/views/component/detail-jaminan.blade.php @@ -199,6 +199,8 @@ + +
Keterangan : {{ $lampiran->keterangan }}
+Tidak ada lampiran dokumen.
+ @endforelse +| + @include('lpj::component.logo-bag') + | +
+ PT BANK ARTHA GRAHA INTERNASIONAL+Sub Direktorat Appraisal +Jl. Kwitang Raya No. 24-26, Telp. (021) 3903040 + |
+
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) }}
| - 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 ?? "" }} - | -
Jenis Fasilitas: {{ $permohonan->jenisFasilitasKredit->name }}
+Nilai Plafond: {{ $permohonan->nilaiPlafond->name }}
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 ?? "" }}
Pemilik Jaminan: {{ $dokumen->pemilik->name ?? "" }}
+Jenis Jaminan: {{ $dokumen->jenisJaminan->name ?? "" }}
+Hubungan Pemilik Jaminan: {{ $dokumen->pemilik->hubungan_pemilik->name ?? "" }}
+ @if(!$loop->last)