From 43b086f3ea9c36bedbc9554438f0b17e71881759 Mon Sep 17 00:00:00 2001 From: majid Date: Mon, 21 Apr 2025 15:59:56 +0700 Subject: [PATCH 01/20] fix(print-out): perbaikkan print out foto dan print out resume --- .../penilai/components/foto-jaminan.blade.php | 4 +-- .../penilai/components/print-resume.blade.php | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/resources/views/penilai/components/foto-jaminan.blade.php b/resources/views/penilai/components/foto-jaminan.blade.php index 002e072..d8ad12e 100644 --- a/resources/views/penilai/components/foto-jaminan.blade.php +++ b/resources/views/penilai/components/foto-jaminan.blade.php @@ -31,7 +31,8 @@ /* Image Styling */ .photo-item img { width: auto; - height: 400px; + max-width: 100%; + height: auto; max-height: 400px; object-fit: contain; background-color: #f0f0f0; @@ -59,7 +60,6 @@ } .photo-image { - width: 100; height: 400px; max-height: 400px; } diff --git a/resources/views/penilai/components/print-resume.blade.php b/resources/views/penilai/components/print-resume.blade.php index de2290a..d61d1c3 100644 --- a/resources/views/penilai/components/print-resume.blade.php +++ b/resources/views/penilai/components/print-resume.blade.php @@ -1,5 +1,36 @@ @include('lpj::penilai.components.header') +@php + $data = ''; + foreach ($permohonan->documents as $dokumen) { + $data .= $dokumen->jenisJaminan->name . ', '; + + $penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first(); + $surveyor = $permohonan->penilaian->userPenilai->where('role', 'surveyor')->first(); + $teams = $permohonan->region->teams; + + if ($teams) { + foreach ($teams as $team) { + $team_users = $team->teamsUsers; + // print_r($team_users); + if ($team_users) { + foreach ($team_users as $team_user) { + $user = $team_user->user; + + if ($user && $user->hasRole('senior-officer')) { + $senior_officer = $user; + break 3; + } + } + } + } + } + } + use Modules\Usermanagement\Models\User; + $penilaiUser = User::where('id', $penilai->userPenilaiTeam->id)->first(); + + $data = rtrim($data, ', '); +@endphp
From 6f8db7415977e6cd9185abbf368b4449a29ff6eb Mon Sep 17 00:00:00 2001 From: majid Date: Mon, 21 Apr 2025 16:37:33 +0700 Subject: [PATCH 02/20] fix(print-out): perbaikkan fungsi cetak laporan --- resources/views/surveyor/js/utils.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/surveyor/js/utils.blade.php b/resources/views/surveyor/js/utils.blade.php index 580fc70..8da858a 100644 --- a/resources/views/surveyor/js/utils.blade.php +++ b/resources/views/surveyor/js/utils.blade.php @@ -309,7 +309,7 @@ } - function checkLaporan(permohonanId, documentId, inspeksiId, jaminanId, statusLpj) { + function checkLaporan(permohonanId, documentId, inspeksiId, statusLpj) { // showLoadingSwal('Tunggu...'); fetch( `{{ url('/penilai/check-laporan') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}` @@ -318,7 +318,7 @@ .then(data => { if (data.status) { window.location.href = - `{{ route('penilai.print-out') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}&jaminanId=${jaminanId}&statusLpj=${statusLpj}&type=${data.status}`; + `{{ route('penilai.print-out') }}?permohonanId=${permohonanId}&documentId=${documentId}&inspeksiId=${inspeksiId}&statusLpj=${statusLpj}&type=${data.status}`; } else { // Jika laporan belum ada, tampilkan pesan peringatan Swal.fire({ From 4ebc7002838b6b4a4496764d25dcde43baf84aa6 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 5 May 2025 11:35:32 +0700 Subject: [PATCH 03/20] refactor(Lpj): optimalkan kode untuk peningkatan efisiensi - Ganti `isNumeric` dengan `ctype_digit` dan hapus fungsi `isNumeric` yang tidak diperlukan. - Simplifikasi fungsi `onRomawi` dengan memanfaatkan fungsi `convertToRoman`. - Hapus fungsi `holidays` karena tidak digunakan lagi dalam kode. Signed-off-by: Daeng Deni Mardaeni --- app/Helpers/Lpj.php | 57 ++------------------------------------------- 1 file changed, 2 insertions(+), 55 deletions(-) diff --git a/app/Helpers/Lpj.php b/app/Helpers/Lpj.php index 5c9351e..1f6a711 100644 --- a/app/Helpers/Lpj.php +++ b/app/Helpers/Lpj.php @@ -134,7 +134,7 @@ if ($penawaran) { $isNum = substr($maxCode, 2); // memastikan string ke 3 s/d 8 adalan numiric $isNP = substr($maxCode, 0, 2); - if ((8 == strlen($maxCode)) && ("NP" == $isNP) && (isNumeric($isNum))) { + if ((8 == strlen($maxCode)) && ("NP" == $isNP) && (ctype_digit($isNum))) { $code_penawaran_last = substr($maxCode, -4); $year_penawaran_last = Carbon::parse($penawaran->created_at)->year; $year_now = Carbon::now()->year; @@ -149,11 +149,6 @@ return 'NP' . Carbon::now()->format('y') . $noUrutAkhirString; } - function isNumeric($str) - { - return ctype_digit($str); - } - // generate last penawaran.no_spk function onLastnumberCodePenawaranSPK($jenis_laporan_code) : string @@ -188,46 +183,7 @@ function onRomawi(int $bln) : string { - switch ($bln) { - case 1: - return "I"; - break; - case 2: - return "II"; - break; - case 3: - return "III"; - break; - case 4: - return "IV"; - break; - case 5: - return "V"; - break; - case 6: - return "VI"; - break; - case 7: - return "VII"; - break; - case 8: - return "VIII"; - break; - case 9: - return "IX"; - break; - case 10: - return "X"; - break; - case 11: - return "XI"; - break; - case 12: - return "XII"; - break; - - } - + return convertToRoman($bln); } function penyebut($nilai) @@ -304,15 +260,6 @@ return $hariKerja; } - function holidays() - { - return HolidayCalendar::pluck('date')->map( - function ($item) { - return Carbon::parse($item)->format('Y-m-d'); - }, - )->toArray(); - } - function countPermohonanForUser($userId) { $validStatuses = [ From e6d05cc4aa9d62bebebefeba2db590a8f986eb4c Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 5 May 2025 11:37:51 +0700 Subject: [PATCH 04/20] feat(noc): tambahkan fitur Noc untuk pengelolaan data penyelesaian - Menambahkan model baru untuk tabel `noc` beserta relasinya pada `Permohonan` dan `PersetujuanPenawaran`. - Menambahkan migrasi untuk membuat tabel `noc` di database. - Memodifikasi logika dan format data pada `NocController` untuk mendukung data terkait `noc`. - Mendefinisikan relasi baru di model `Permohonan` dan `PersetujuanPenawaran` untuk mendukung fitur `noc`. Signed-off-by: Daeng Deni Mardaeni --- app/Http/Controllers/NocController.php | 13 ++-- app/Models/Noc.php | 61 +++++++++++++++++++ app/Models/Permohonan.php | 6 ++ app/Models/PersetujuanPenawaran.php | 7 ++- .../2025_05_04_124217_create_nocs_table.php | 51 ++++++++++++++++ 5 files changed, 132 insertions(+), 6 deletions(-) create mode 100644 app/Models/Noc.php create mode 100644 database/migrations/2025_05_04_124217_create_nocs_table.php diff --git a/app/Http/Controllers/NocController.php b/app/Http/Controllers/NocController.php index 87a50b8..3186d82 100644 --- a/app/Http/Controllers/NocController.php +++ b/app/Http/Controllers/NocController.php @@ -109,7 +109,7 @@ /** * Display the specified resource. */ - public function show($id) { } + public function show($id) {} /** * Show the form for editing the specified resource. @@ -181,10 +181,13 @@ 'nomor_registrasi' => $persetujuanPenawaran->permohonan->nomor_registrasi ?? $persetujuanPenawaran->penawaran->nomor_registrasi, 'nama_debitur' => $persetujuanPenawaran->permohonan->debiture->name ?? $persetujuanPenawaran->penawaran->permohonan->debiture->name, 'cabang' => $persetujuanPenawaran->permohonan->branch->name ?? $persetujuanPenawaran->penawaran->permohonan->branch->name, - 'tanggal_setor' => formatTanggalIndonesia($persetujuanPenawaran->created_at, true), - 'nominal_bayar' => format_currency($persetujuanPenawaran->nominal_bayar ?? 0), - 'bukti_ksl' => $persetujuanPenawaran->bukti_ksl ?? null, - 'tanggal_penyelesaian' => formatTanggalIndonesia($persetujuanPenawaran->updated_at, true), + 'tanggal_setor' => dateFormat($persetujuanPenawaran->moc->created_at ?? $persetujuanPenawaran->created_at, true), + 'nominal_bayar' => currencyFormat($persetujuanPenawaran->noc->nominal_bayar ?? $persetujuanPenawaran->nominal_bayar ?? 0), + 'bukti_ksl' => $persetujuanPenawaran->noc->bukti_ksl ?? $persetujuanPenawaran->bukti_ksl ?? null, + 'memo_penyelesaian' => $persetujuanPenawaran->noc->memo_penyelesaian ?? $persetujuanPenawaran->memo_penyelesaian ?? null, + 'nominal_penyelesaian' => currencyFormat($persetujuanPenawaran->noc->nominal_penyelesaian ?? $persetujuanPenawaran->nominal_penyelesaian ?? 0), + 'bukti_penyelesaian' => $persetujuanPenawaran->noc->bukti_penyelesaian ?? $persetujuanPenawaran->bukti_penyelesaian ?? null, + 'tanggal_penyelesaian' => dateFormat($persetujuanPenawaran->noc->tanggal_penyelesaian ?? $persetujuanPenawaran->updated_at, true), ]; }); diff --git a/app/Models/Noc.php b/app/Models/Noc.php new file mode 100644 index 0000000..a9104fd --- /dev/null +++ b/app/Models/Noc.php @@ -0,0 +1,61 @@ + 'decimal:2', + 'status_bayar' => 'boolean', + 'tanggal_pembayaran' => 'date', + 'nominal_penyelesaian' => 'decimal:2', + 'status_penyelesaiaan' => 'boolean', + 'tanggal_penyelesaian' => 'date', + 'status' => 'boolean', + 'authorized_status' => 'boolean', + 'authorized_at' => 'datetime', + ]; + + // Relationship with Permohonan + public function permohonan() + { + return $this->belongsTo(Permohonan::class, 'permohonan_id'); + } + + // Relationship with PersetujuanPenawaran + public function persetujuanPenawaran() + { + return $this->belongsTo(PersetujuanPenawaran::class, 'persetujuan_penawaran_id'); + } + + // Relationship with User (for authorized_by) + public function authorizedBy() + { + return $this->belongsTo(User::class, 'authorized_by'); + } +} diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index 5644430..4490721 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -259,4 +259,10 @@ return $this->belongsTo(Inspeksi::class, 'permohonan_id'); } + // Add this relationship + public function noc() + { + return $this->hasOne(Noc::class, 'permohonan_id'); + } + } diff --git a/app/Models/PersetujuanPenawaran.php b/app/Models/PersetujuanPenawaran.php index 014a5a3..0bb8158 100644 --- a/app/Models/PersetujuanPenawaran.php +++ b/app/Models/PersetujuanPenawaran.php @@ -25,7 +25,6 @@ 'authorized_status', 'authorized_at', 'authorized_by', - 'status', 'catatan', ]; @@ -58,4 +57,10 @@ { return $this->belongsTo(User::class, 'authorized_by'); } + + // Relationship with Noc + public function noc() + { + return $this->hasOne(Noc::class, 'persetujuan_penawaran_id'); + } } diff --git a/database/migrations/2025_05_04_124217_create_nocs_table.php b/database/migrations/2025_05_04_124217_create_nocs_table.php new file mode 100644 index 0000000..4630297 --- /dev/null +++ b/database/migrations/2025_05_04_124217_create_nocs_table.php @@ -0,0 +1,51 @@ +id(); + $table->unsignedBigInteger('permohonan_id'); + $table->unsignedBigInteger('persetujuan_penawaran_id'); + $table->string('bukti_bayar')->nullable(); + $table->decimal('nominal_bayar', 15, 2)->nullable(); + $table->boolean('status_bayar')->default(false); + $table->date('tanggal_pembayaran')->nullable(); + $table->decimal('nominal_penyelesaian', 15, 2)->nullable(); + $table->boolean('status_penyelesaiaan')->default(false); + $table->date('tanggal_penyelesaian')->nullable(); + $table->string('bukti_penyelesaian')->nullable(); + $table->string('bukti_ksl')->nullable(); + $table->text('memo_penyelesaian')->nullable(); + $table->boolean('status')->default(true); + $table->char('authorized_status', 1)->nullable(); + $table->timestamp('authorized_at')->nullable(); + $table->unsignedBigInteger('authorized_by')->nullable(); + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + $table->timestamps(); + $table->softDeletes(); + + $table->foreign('permohonan_id')->references('id')->on('permohonan'); + $table->foreign('persetujuan_penawaran_id')->references('id')->on('persetujuan_penawaran'); + }); + } + + /** + * Reverse the migrations. + */ + public function down() + : void + { + Schema::dropIfExists('noc'); + } + }; From 7f6c702683d1087e7389f649c8dfed1b9096920a Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 5 May 2025 11:39:05 +0700 Subject: [PATCH 05/20] refactor(controllers): perbaikan struktur kode controllers Permohonan dan Penilai - Reformat kode untuk meningkatkan keterbacaan, termasuk penghapusan spasi kosong yang tidak diperlukan. - Penyesuaian indentasi dan konsistensi format import pada `PermohonanController`. - Optimasi fungsi data handling pada fungsi-fungsi terkait permohonan seperti `update`, `destroy`, `dataForDatatables`, dan `dataForAuthorization`. - Penyesuaian pemetaan data output dalam format JSON pada datatables. - Penghapusan elemen komentar yang tidak relevan atau redundant. Signed-off-by: Daeng Deni Mardaeni --- app/Http/Controllers/PenilaiController.php | 6 +- app/Http/Controllers/PermohonanController.php | 931 +++++++++--------- resources/views/permohonan/index.blade.php | 22 +- 3 files changed, 489 insertions(+), 470 deletions(-) diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index fe20028..b3c498f 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -1056,14 +1056,14 @@ class PenilaiController extends Controller $data = []; - $kategoriUnik = ['tanah', 'bangunan', 'apartemen-kantor', 'alat-berat', 'mesin', 'kendaraan', 'pesawat', 'kapal', 'sarana_pelengkap_penilai']; + $kategoriUnik = ['tanah', 'bangunan', 'apartemen-kantor', 'alat-berat', 'mesin', 'kendaraan', 'pesawat', 'kapal', 'sarana_pelengkap_penilai']; foreach ($kategoriUnik as $kategori) { // Dynamically generate keys $luasKey = 'luas_' . $kategori; $nilaiKey1 = 'nilai_' . $kategori . '_1'; $nilaiKey2 = 'nilai_' . $kategori . '_2'; - + // Collect data if exists if ($request->has($luasKey)) { $data[$luasKey] = $request->input($luasKey); @@ -1075,7 +1075,7 @@ class PenilaiController extends Controller $data[$nilaiKey2] = $request->input($nilaiKey2); } } - + $data['total_nilai_pasar_wajar'] = $request->input('total_nilai_pasar_wajar'); $data['likuidasi'] = $request->input('likuidasi'); $data['likuidasi_nilai_1'] = $request->input('likuidasi_nilai_1'); diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index 0c5c05b..da92c4a 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -1,489 +1,518 @@ historyService = $historyService; - } + public $user; + protected $historyService; - public function index() - { - return view('lpj::permohonan.index'); - } - - public function store(PermohonanRequest $request) - { - $validate = $request->validated(); - if ($validate) { - try { - // Process file upload - $filePath = null; - if ($request->hasFile('attachment')) { - $file = $request->file('attachment'); - $fileName = time() . '_' . $file->getClientOriginalName(); - $filePath = $file->storeAs('permohonan_attachments', $fileName, 'public'); - } - - // Get keterangan if provided - $keterangan = $request->input('keterangan') ?? null; - - - // Save to database - $permohonan = Permohonan::create($validate); - - // Create history - $this->historyService->createHistory( - $permohonan, - $validate['status'], - $keterangan, - [], // beforeRequest is empty for new permohonan - $permohonan->toArray(), - $filePath, - ); - - $documents = DokumenJaminan::where('permohonan_id', $permohonan->id)->get(); - if (count($documents) < 1) { - return redirect()->route('debitur.jaminan.create', array_merge(['permohonan_id' => $permohonan->id], ['id' => $permohonan->debiture->id]))->with('success', 'Permohonan created successfully, Lengkapi data jaminan terlebih dahulu'); - } - return redirect() - ->route('permohonan.index')->with('success', 'Permohonan created successfully'); - } catch (Exception $e) { - return redirect() - ->route('permohonan.create')->with('error', 'Failed to create permohonan' . $e->getMessage()); - } - } else { - return redirect() - ->route('permohonan.create')->with('success', 'error naon iye')->withInput(); + public function __construct(PermohonanHistoryService $historyService) + { + $this->historyService = $historyService; } - } - public function create() - { - return view('lpj::permohonan.create'); - } + public function index() + { + return view('lpj::permohonan.index'); + } - public function createPermohonan($debitur) - { - $branches = Branch::all(); - $debitur = Debiture::find($debitur); - $tujuanPenilaian = TujuanPenilaian::all(); - $status = StatusPermohonan::all(); - $fasilitasKredit = JenisFasilitasKredit::all(); - $plafond = NilaiPlafond::all(); + public function store(PermohonanRequest $request) + { + $validate = $request->validated(); + if ($validate) { + try { + // Process file upload + $filePath = null; + if ($request->hasFile('attachment')) { + $file = $request->file('attachment'); + $fileName = time() . '_' . $file->getClientOriginalName(); + $filePath = $file->storeAs('permohonan_attachments', $fileName, 'public'); + } - return view( - 'lpj::permohonan.form', - compact('branches', 'debitur', 'tujuanPenilaian', 'status', 'fasilitasKredit', 'plafond'), - ); - } + // Get keterangan if provided + $keterangan = $request->input('keterangan') ?? null; - public function edit($id) - { - $permohonan = Permohonan::find($id); - $branches = Branch::all(); - $debitur = Debiture::find($permohonan->debiture_id); - $tujuanPenilaian = TujuanPenilaian::all(); - $status = StatusPermohonan::all(); - $provinces = Province::all(); - $cities = City::where('province_code', $debitur->province_code)->get(); - $districts = District::where('city_code', $debitur->city_code)->get(); - $villages = Village::where('district_code', $debitur->district_code)->get(); - $documents = DokumenJaminan::with('pemilik', 'detail')->where('debiture_id', $id)->get(); - $fasilitasKredit = JenisFasilitasKredit::all(); - $plafond = NilaiPlafond::all(); + // Save to database + $permohonan = Permohonan::create($validate); - return view( - 'lpj::permohonan.form', - compact( - 'permohonan', - 'branches', - 'debitur', - 'tujuanPenilaian', - 'status', - 'provinces', - 'cities', - 'districts', - 'villages', - 'documents', - 'fasilitasKredit', - 'plafond', - ), - ); - } + // Create history + $this->historyService->createHistory( + $permohonan, + $validate['status'], + $keterangan, + [], // beforeRequest is empty for new permohonan + $permohonan->toArray(), + $filePath, + ); - public function update(PermohonanRequest $request, $id) - { - $permohonan = Permohonan::findOrFail($id); - $beforeRequest = $permohonan->toArray(); - - $validate = $request->validated(); - if ($validate) { - try { - // Update in database - - if ($permohonan->status == 'revisi') { - $validate['status'] = 'order'; + $documents = DokumenJaminan::where('permohonan_id', $permohonan->id)->get(); + if (count($documents) < 1) { + return redirect()->route( + 'debitur.jaminan.create', + array_merge(['permohonan_id' => $permohonan->id], ['id' => $permohonan->debiture->id]), + )->with('success', 'Permohonan created successfully, Lengkapi data jaminan terlebih dahulu'); + } + return redirect() + ->route('permohonan.index')->with('success', 'Permohonan created successfully'); + } catch (Exception $e) { + return redirect() + ->route('permohonan.create')->with('error', 'Failed to create permohonan' . $e->getMessage()); } - $permohonan->update($validate); - - $documents = DokumenJaminan::where('permohonan_id', $permohonan->id)->get(); - if (count($documents) < 1) { - return redirect()->route('debitur.jaminan.create', array_merge(['permohonan_id' => $permohonan->id], ['id' => $permohonan->debiture->id]))->with('success', 'Permohonan created successfully, Lengkapi data jaminan terlebih dahulu'); - } - + } else { return redirect() - ->route('permohonan.index')->with('success', 'Permohonan updated successfully'); - } catch (Exception $e) { - return redirect() - ->route('permohonan.edit', $id)->with('error', 'Failed to update permohonan'); + ->route('permohonan.create')->with('success', 'error naon iye')->withInput(); } } - } - public function destroy($id) - { - try { - // Delete from database + public function create() + { + return view('lpj::permohonan.create'); + } + + public function createPermohonan($debitur) + { + $branches = Branch::all(); + $debitur = Debiture::find($debitur); + $tujuanPenilaian = TujuanPenilaian::all(); + $status = StatusPermohonan::all(); + $fasilitasKredit = JenisFasilitasKredit::all(); + $plafond = NilaiPlafond::all(); + + return view( + 'lpj::permohonan.form', + compact('branches', 'debitur', 'tujuanPenilaian', 'status', 'fasilitasKredit', 'plafond'), + ); + } + + public function edit($id) + { + $permohonan = Permohonan::find($id); + $branches = Branch::all(); + $debitur = Debiture::find($permohonan->debiture_id); + $tujuanPenilaian = TujuanPenilaian::all(); + $status = StatusPermohonan::all(); + $provinces = Province::all(); + $cities = City::where('province_code', $debitur->province_code)->get(); + $districts = District::where('city_code', $debitur->city_code)->get(); + $villages = Village::where('district_code', $debitur->district_code)->get(); + $documents = DokumenJaminan::with('pemilik', 'detail')->where('debiture_id', $id)->get(); + + $fasilitasKredit = JenisFasilitasKredit::all(); + $plafond = NilaiPlafond::all(); + + return view( + 'lpj::permohonan.form', + compact( + 'permohonan', + 'branches', + 'debitur', + 'tujuanPenilaian', + 'status', + 'provinces', + 'cities', + 'districts', + 'villages', + 'documents', + 'fasilitasKredit', + 'plafond', + ), + ); + } + + public function destroy($id) + { + try { + // Delete from database + $permohonan = Permohonan::find($id); + $permohonan->delete(); + + echo json_encode(['success' => true, 'message' => 'Permohonan deleted successfully']); + } catch (Exception $e) { + echo json_encode(['success' => false, 'message' => 'Failed to delete permohonan']); + } + } + + public function dataForDatatables(Request $request) + { + if (is_null($this->user) || !$this->user->can('debitur.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); + } + + // Retrieve data from the database + $query = Permohonan::query(); + + if (!Auth::user()->hasAnyRole(['administrator'])) { + $query = $query->where('branch_id', Auth::user()->branch_id); + } + + $query = $query->orderBy('nomor_registrasi', 'desc'); + // 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('nomor_registrasi', 'LIKE', '%' . $search . '%'); + $q->orWhere('mig_mst_lpj_nomor_jaminan', 'LIKE', '%' . $search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhere('status', '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(); + $size = $request->get('size', 10); + if ($size == 0) { + $size = 10; + } + + // 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->get(); + + $data = $data->map(function ($item) { + return [ + 'id' => $item->id, + 'nomor_registrasi' => $item->nomor_registrasi, + 'mig_mst_lpj_nomor_jaminan' => $item->mig_mst_lpj_nomor_jaminan, + 'tanggal_permohonan' => $item->tanggal_permohonan ? dateFormat( + $item->tanggal_permohonan, + ) : null, + 'pemohon' => $item->user->name ?? 'N/A', + 'branch' => $item->branch->name ?? 'N/A', + 'debiture' => [ + 'name' => $item->debiture->name, + ], + 'tujuan_penilaian' => [ + 'code' => $item->tujuanPenilaian->code ?? null, + 'name' => $item->tujuanPenilaian->name ?? null, + ], + 'status' => $item->status, + 'documents' => count($item->documents), + 'keterangan' => $item->keterangan, + 'penilaian' => [ + 'id' => $item->penilaian->id ?? null, + 'waktu_penilaian' => $item->penilaian->waktu_penilaian ?? null, + 'rejected_note' => $item->penilaian->rejected_note ?? null, + 'authorized_status' => $item->penilaian->authorized_status ?? null, + ], + 'registrasi_catatan' => $item->registrasi_catatan, + ]; + }); + + // Calculate the page count + $pageCount = ceil($totalRecords / $size); + + // Calculate the current page number + $currentPage = max(1, $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, + ]); + } + + public function export() + { + return Excel::download(new PermohonanExport(), 'permohonan.xlsx'); + } + + public function authorization() + { + return view('lpj::permohonan.authorization.index'); + } + + public function dataForAuthorization(Request $request) + { + if (is_null($this->user) || !$this->user->can('debitur.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); + } + + // Retrieve data from the database + $query = Permohonan::query()->with('documents')->has('documents', '>', 0)->where('status', '=', 'order'); + + if (!Auth::user()->hasAnyRole(['administrator'])) { + $query = $query->where('branch_id', Auth::user()->branch_id); + } + + // 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('nomor_registrasi', 'LIKE', '%' . $search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhere('status', '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(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = 0 + 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, + ]); + } + + public function showAuthorization($id) + { $permohonan = Permohonan::find($id); - $permohonan->delete(); - - echo json_encode(['success' => true, 'message' => 'Permohonan deleted successfully']); - } catch (Exception $e) { - echo json_encode(['success' => false, 'message' => 'Failed to delete permohonan']); - } - } - - public function dataForDatatables(Request $request) - { - if (is_null($this->user) || !$this->user->can('debitur.view')) { - //abort(403, 'Sorry! You are not allowed to view users.'); + return view('lpj::permohonan.authorization.show', compact('permohonan')); } - // Retrieve data from the database - $query = Permohonan::query(); - - if (!Auth::user()->hasAnyRole(['administrator'])) { - $query = $query->where('branch_id', Auth::user()->branch_id); - } - - $query = $query->orderBy('nomor_registrasi', 'desc'); - // 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('nomor_registrasi', 'LIKE', '%' . $search . '%'); - $q->orWhere('mig_mst_lpj_nomor_jaminan', 'LIKE', '%' . $search . '%'); - $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhere('status', '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(); - $size = $request->get('size', 10); - if ($size == 0) { - $size = 10; - } - - // 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(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian','documents'])->get(); - - // Calculate the page count - $pageCount = ceil($totalRecords / $size); - - // Calculate the current page number - $currentPage = max(1, $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, - ]); - } - - public function export() - { - return Excel::download(new PermohonanExport(), 'permohonan.xlsx'); - } - - public function authorization() - { - return view('lpj::permohonan.authorization.index'); - } - - public function dataForAuthorization(Request $request) - { - if (is_null($this->user) || !$this->user->can('debitur.view')) { - //abort(403, 'Sorry! You are not allowed to view users.'); - } - - // Retrieve data from the database - $query = Permohonan::query()->with('documents')->has('documents', '>', 0)->where('status', '=', 'order'); - - if (!Auth::user()->hasAnyRole(['administrator'])) { - $query = $query->where('branch_id', Auth::user()->branch_id); - } - - // 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('nomor_registrasi', 'LIKE', '%' . $search . '%'); - $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhere('status', '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(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get( - ); - - // Calculate the page count - $pageCount = ceil($totalRecords / $request->get('size')); - - // Calculate the current page number - $currentPage = 0 + 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, - ]); - } - - public function showAuthorization($id) - { - $permohonan = Permohonan::find($id); - return view('lpj::permohonan.authorization.show', compact('permohonan')); - } - - public function updateAuthorization(Request $request, $id) - { - try { - $permohonan = Permohonan::find($id); - $permohonan->status = $request->status; - $permohonan->keterangan = $request->keterangan; - $permohonan->save(); - } catch (Exception $e) { - return redirect()->route('authorization.show', $id)->with('error', 'Failed to update permohonan'); - } - - return redirect()->route('authorization.index')->with('success', 'Permohonan updated successfully'); - } - - public function show($id) - { - $permohonan = Permohonan::find($id); - - return view('lpj::permohonan.show', compact('permohonan')); - } - - public function print($id) - { - $permohonan = Permohonan::find($id); - return view('lpj::permohonan.print', compact('permohonan')); - - // $pdf = Pdf::loadView('lpj::permohonan.print', compact('permohonan')); - // return $pdf->stream(); - } - - public function showPembatalan($id) - { - $permohonan = Permohonan::with(['pembatalan','debiture'])->findOrFail($id); - return view('lpj::permohonan.pembatalan-form', compact('permohonan')); - } - - - public function pembatalan(Request $request) - { - // Validate the request - $validatedData = $request->validate([ - 'permohonan_id' => 'required|exists:permohonan,id', - 'alasan_pembatalan' => 'required|string', - 'file_pembatalan' => 'required|file|mimes:pdf,doc,docx|max:2048', - ]); - - // Handle file upload - if ($request->hasFile('file_pembatalan')) { - $file = $request->file('file_pembatalan'); - $filename = time() . '_' . $file->getClientOriginalName(); - $filePath = $file->storeAs('pembatalan', $filename, 'public'); - $validatedData['file_pembatalan'] = $filePath; - } - - // Add created_by - $validatedData['created_by'] = auth()->id(); - - // Create new PermohonanPembatalan - $pembatalan = PermohonanPembatalan::create($validatedData); - - return redirect()->route('permohonan.index')->with('success', 'Pembatalan Permohonan Menunggu Approval'); - } - - public function storeAproved(Request $request, $id): JsonResponse - { - $data = []; - if (request()->ajax()) { + public function updateAuthorization(Request $request, $id) + { try { - $penilaian = Penilaian::findOrFail($id); - $penilaian->update([ - 'authorized_status' => 1, - ]); - - $permohonan = Permohonan::findOrFail($request->permohonan_id); - - $permohonan->update([ - 'status' => 'proses-survey' - ]); - - $data['status'] = 'success'; - $data['message'] = 'Jadwal '.$request->noReg.' berhasil di aprove'; - } catch (\Exception $e) { - $data['status'] = 'error'; - $data['message'] = 'Gagal membuat jadwal: ' . $e->getMessage(); + $permohonan = Permohonan::find($id); + $permohonan->status = $request->status; + $permohonan->keterangan = $request->keterangan; + $permohonan->save(); + } catch (Exception $e) { + return redirect()->route('authorization.show', $id)->with('error', 'Failed to update permohonan'); } - } else { - $data['status'] = 'error'; - $data['message'] = "no ajax request"; + return redirect()->route('authorization.index')->with('success', 'Permohonan updated successfully'); } - return response()->json($data); - } + public function show($id) + { + $permohonan = Permohonan::find($id); + return view('lpj::permohonan.show', compact('permohonan')); + } - public function storeRescheduleSurvey(Request $request, $id) - { - try { + public function print($id) + { + $permohonan = Permohonan::find($id); + return view('lpj::permohonan.print', compact('permohonan')); + + // $pdf = Pdf::loadView('lpj::permohonan.print', compact('permohonan')); + // return $pdf->stream(); + } + + public function showPembatalan($id) + { + $permohonan = Permohonan::with(['pembatalan', 'debiture'])->findOrFail($id); + return view('lpj::permohonan.pembatalan-form', compact('permohonan')); + } + + public function pembatalan(Request $request) + { + // Validate the request $validatedData = $request->validate([ 'permohonan_id' => 'required|exists:permohonan,id', - 'penilaian_id' => 'nullable', - 'nomor_registrasi' => 'required', - 'reschedule_note' => 'required', - 'reschedule_date' => 'required', - 'keterangan' => 'required' + 'alasan_pembatalan' => 'required|string', + 'file_pembatalan' => 'required|file|mimes:pdf,doc,docx|max:2048', ]); - DB::beginTransaction(); + // Handle file upload + if ($request->hasFile('file_pembatalan')) { + $file = $request->file('file_pembatalan'); + $filename = time() . '_' . $file->getClientOriginalName(); + $filePath = $file->storeAs('pembatalan', $filename, 'public'); + $validatedData['file_pembatalan'] = $filePath; + } - $permohonan = Permohonan::findOrFail($request->permohonan_id); - $permohonan->update([ - 'status' => 'request-reschedule' - ]); + // Add created_by + $validatedData['created_by'] = auth()->id(); - $penilaian = Penilaian::findOrFail($id); + // Create new PermohonanPembatalan + $pembatalan = PermohonanPembatalan::create($validatedData); - $penilaian->update([ - 'reschedule_date' => $request->reschedule_date, - 'reschedule_note' => $request->reschedule_note, - ]); - - DB::commit(); - return response()->json([ - 'status' => 'success', - 'message' => 'Proses request reschedule permohonan Nomor registrasi '.$request->nomor_registrasi.' berhasil', - ]); - } catch (\Exception $e) { - DB::rollBack(); - return response()->json([ - 'status' => 'error', - 'message' => 'Gagal membuat request reschedule: ' . $e->getMessage(), - ]); + return redirect()->route('permohonan.index')->with('success', 'Pembatalan Permohonan Menunggu Approval'); } - } -} + public function storeAproved(Request $request, $id) + : JsonResponse { + $data = []; + if (request()->ajax()) { + try { + $penilaian = Penilaian::findOrFail($id); + $penilaian->update([ + 'authorized_status' => 1, + ]); + + $permohonan = Permohonan::findOrFail($request->permohonan_id); + + $permohonan->update([ + 'status' => 'proses-survey', + ]); + + $data['status'] = 'success'; + $data['message'] = 'Jadwal ' . $request->noReg . ' berhasil di aprove'; + } catch (Exception $e) { + $data['status'] = 'error'; + $data['message'] = 'Gagal membuat jadwal: ' . $e->getMessage(); + } + } else { + $data['status'] = 'error'; + $data['message'] = "no ajax request"; + } + + return response()->json($data); + } + + public function update(PermohonanRequest $request, $id) + { + $permohonan = Permohonan::findOrFail($id); + $beforeRequest = $permohonan->toArray(); + + $validate = $request->validated(); + if ($validate) { + try { + // Update in database + + if ($permohonan->status == 'revisi') { + $validate['status'] = 'order'; + } + $permohonan->update($validate); + + $documents = DokumenJaminan::where('permohonan_id', $permohonan->id)->get(); + if (count($documents) < 1) { + return redirect()->route( + 'debitur.jaminan.create', + array_merge(['permohonan_id' => $permohonan->id], ['id' => $permohonan->debiture->id]), + )->with('success', 'Permohonan created successfully, Lengkapi data jaminan terlebih dahulu'); + } + + return redirect() + ->route('permohonan.index')->with('success', 'Permohonan updated successfully'); + } catch (Exception $e) { + return redirect() + ->route('permohonan.edit', $id)->with('error', 'Failed to update permohonan'); + } + } + } + + public function storeRescheduleSurvey(Request $request, $id) + { + try { + $validatedData = $request->validate([ + 'permohonan_id' => 'required|exists:permohonan,id', + 'penilaian_id' => 'nullable', + 'nomor_registrasi' => 'required', + 'reschedule_note' => 'required', + 'reschedule_date' => 'required', + 'keterangan' => 'required', + ]); + + DB::beginTransaction(); + + $permohonan = Permohonan::findOrFail($request->permohonan_id); + $permohonan->update([ + 'status' => 'request-reschedule', + ]); + + $penilaian = Penilaian::findOrFail($id); + + $penilaian->update([ + 'reschedule_date' => $request->reschedule_date, + 'reschedule_note' => $request->reschedule_note, + ]); + + DB::commit(); + return response()->json([ + 'status' => 'success', + 'message' => 'Proses request reschedule permohonan Nomor registrasi ' . $request->nomor_registrasi . ' berhasil', + ]); + } catch (Exception $e) { + DB::rollBack(); + return response()->json([ + 'status' => 'error', + 'message' => 'Gagal membuat request reschedule: ' . $e->getMessage(), + ]); + } + } + + } diff --git a/resources/views/permohonan/index.blade.php b/resources/views/permohonan/index.blade.php index e0c66b3..7bc48de 100644 --- a/resources/views/permohonan/index.blade.php +++ b/resources/views/permohonan/index.blade.php @@ -49,11 +49,11 @@ Tanggal Permohonan - - @@ -150,21 +150,12 @@ }, tanggal_permohonan: { title: 'Tanggal Permohonan', - render: (item, data) => { - return `${window.formatTanggalIndonesia(data.tanggal_permohonan)}`; - }, }, - user_id: { - title: 'User Pemohon', - render: (item, data) => { - return `${data.user.name}`; - }, + pemohon: { + title: 'User Pemohon' }, - branch_id: { + branch: { title: 'Cabang Pemohon', - render: (item, data) => { - return `${data.branch.name}`; - }, }, debitur_id: { title: 'Debitur', @@ -201,8 +192,7 @@ status: { title: 'Status', render: (item, data) => { - console.log(data.documents.length); - if (data.documents.length > 0) { + if (data.documents > 0) { return `${data.status}`; } return `Lengkapi Aset Jaminan`; From 5e8067ad72e48618c25428554f5e749e54ca51ee Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 5 May 2025 14:13:54 +0700 Subject: [PATCH 06/20] feat(noc): tambahkan integrasi dan validasi data NOC - Tambahkan model NOC ke NocController, PersetujuanPenawaranController, dan validasi pada NocRequest. - Implementasi penyimpanan data NOC menggunakan `updateOrCreate` di beberapa alur proses. - Tambahkan properti baru `catatan_noc` pada model, migrasi database, dan form terkait. - Revisi aturan validasi pada NocRequest dan PersetujuanPenawaranRequest. - Tingkatkan tampilan form NOC dengan penanganan file upload dan pratinjau file yang sudah diunggah. - Perbaikan beberapa nama properti seperti `status_bayar` menjadi `status_pembayar`. Signed-off-by: Daeng Deni Mardaeni --- app/Http/Controllers/NocController.php | 47 ++++-- .../PersetujuanPenawaranController.php | 17 +++ app/Http/Requests/NocRequest.php | 138 +++++++++++++++++- .../Requests/PersetujuanPenawaranRequest.php | 7 - app/Models/Noc.php | 1 + .../2025_05_04_124217_create_nocs_table.php | 1 + resources/views/noc/form.blade.php | 47 ++++-- 7 files changed, 223 insertions(+), 35 deletions(-) diff --git a/app/Http/Controllers/NocController.php b/app/Http/Controllers/NocController.php index 3186d82..d7fb9ce 100644 --- a/app/Http/Controllers/NocController.php +++ b/app/Http/Controllers/NocController.php @@ -6,6 +6,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Modules\Lpj\Http\Requests\NocRequest; + use Modules\Lpj\Models\Noc; use Modules\Lpj\Models\PenawaranTender; use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\PersetujuanPenawaran; @@ -43,26 +44,34 @@ $status = "persetujuan-penawaran"; } - $persetujuanPenawaran = PersetujuanPenawaran::updateOrCreate( - ['penawaran_id' => $validated['penawaran_id']], - $validated, + + $dataNoc = [ + 'nominal_bayar' => $validated['nominal_bayar'], + 'tanggal_pembayaran' => date('Y-m-d'), + 'status_bayar' => $validated['nominal_bayar'] < $validated['total_harus_bayar'] ? false : true, + 'catatan_noc' => $validated['catatan_noc'], + ]; + $noc = Noc::updateOrCreate( + [ + 'permohonan_id' => $validated['permohonan_id'], + 'persetujuan_penawaran_id' => $validated['persetujuan_penawaran_id'] + ],$dataNoc ); - $folderPath = 'noc/' . $validated['penawaran_id']; + $folderPath = 'noc/' . request()->get('penawaran_id'); if ($request->hasFile('bukti_ksl')) { - $persetujuanPenawaran->bukti_ksl = $request->file('bukti_ksl')->store( + $noc->bukti_ksl = $request->file('bukti_ksl')->store( $folderPath, 'public', ); } - - $persetujuanPenawaran->save(); + $noc->save(); // Update the status of the related permohonan to 'spk' $permohonan = Permohonan::find(request()->get('permohonan_id')); if ($permohonan) { - $permohonan->status_bayar = request()->get('status_bayar'); + $permohonan->status_bayar = request()->get('status_pembayar'); if ($permohonan->jenis_penilaian_id == 2) { $permohonan->status = $status; } @@ -116,9 +125,7 @@ */ public function edit($id) { - $persetujuanPenawaran = PersetujuanPenawaran::where('id', $id)->with( - ['penawaran.detail', 'penawaran.permohonan.debiture', 'permohonan'], - )->first(); + $persetujuanPenawaran = PersetujuanPenawaran::where('id', $id)->first(); return view('lpj::noc.form', compact('persetujuanPenawaran')); } @@ -181,13 +188,23 @@ 'nomor_registrasi' => $persetujuanPenawaran->permohonan->nomor_registrasi ?? $persetujuanPenawaran->penawaran->nomor_registrasi, 'nama_debitur' => $persetujuanPenawaran->permohonan->debiture->name ?? $persetujuanPenawaran->penawaran->permohonan->debiture->name, 'cabang' => $persetujuanPenawaran->permohonan->branch->name ?? $persetujuanPenawaran->penawaran->permohonan->branch->name, - 'tanggal_setor' => dateFormat($persetujuanPenawaran->moc->created_at ?? $persetujuanPenawaran->created_at, true), - 'nominal_bayar' => currencyFormat($persetujuanPenawaran->noc->nominal_bayar ?? $persetujuanPenawaran->nominal_bayar ?? 0), + 'tanggal_setor' => dateFormat( + $persetujuanPenawaran->moc->created_at ?? $persetujuanPenawaran->created_at, + true, + ), + 'nominal_bayar' => currencyFormat( + $persetujuanPenawaran->noc->nominal_bayar ?? $persetujuanPenawaran->nominal_bayar ?? 0, + ), 'bukti_ksl' => $persetujuanPenawaran->noc->bukti_ksl ?? $persetujuanPenawaran->bukti_ksl ?? null, 'memo_penyelesaian' => $persetujuanPenawaran->noc->memo_penyelesaian ?? $persetujuanPenawaran->memo_penyelesaian ?? null, - 'nominal_penyelesaian' => currencyFormat($persetujuanPenawaran->noc->nominal_penyelesaian ?? $persetujuanPenawaran->nominal_penyelesaian ?? 0), + 'nominal_penyelesaian' => currencyFormat( + $persetujuanPenawaran->noc->nominal_penyelesaian ?? $persetujuanPenawaran->nominal_penyelesaian ?? 0, + ), 'bukti_penyelesaian' => $persetujuanPenawaran->noc->bukti_penyelesaian ?? $persetujuanPenawaran->bukti_penyelesaian ?? null, - 'tanggal_penyelesaian' => dateFormat($persetujuanPenawaran->noc->tanggal_penyelesaian ?? $persetujuanPenawaran->updated_at, true), + 'tanggal_penyelesaian' => dateFormat( + $persetujuanPenawaran->noc->tanggal_penyelesaian ?? $persetujuanPenawaran->updated_at, + true, + ), ]; }); diff --git a/app/Http/Controllers/PersetujuanPenawaranController.php b/app/Http/Controllers/PersetujuanPenawaranController.php index 1486fbe..3838167 100644 --- a/app/Http/Controllers/PersetujuanPenawaranController.php +++ b/app/Http/Controllers/PersetujuanPenawaranController.php @@ -6,6 +6,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Modules\Lpj\Http\Requests\PersetujuanPenawaranRequest; + use Modules\Lpj\Models\Noc; use Modules\Lpj\Models\PenawaranDetailTender; use Modules\Lpj\Models\PenawaranDetailTenderLog; use Modules\Lpj\Models\PenawaranTender; @@ -67,6 +68,22 @@ $persetujuanPenawaran->save(); + + // Save NOC + try { + $noc = Noc::updateOrCreate([ + 'permohonan_id' => $persetujuanPenawaran->permohonan_id, + 'persetujuan_penawaran_id' => $persetujuanPenawaran->id + ],[ + 'bukti_bayar' => $persetujuanPenawaran->bukti_bayar, + ]); + } catch (\Exception $e) { + \Log::error('Failed to create or update NOC: ' . $e->getMessage()); + return redirect() + ->route('persetujuan-penawaran.index') + ->with('error', 'Persetujuan Penawaran berhasil disimpan tetapi gagal membuat NOC: ' . $e->getMessage()); + } + return redirect() ->route('persetujuan-penawaran.index')->with('success', 'Persetujuan Penawaran berhasil disimpan.'); } diff --git a/app/Http/Requests/NocRequest.php b/app/Http/Requests/NocRequest.php index 0cb7e66..13b76af 100644 --- a/app/Http/Requests/NocRequest.php +++ b/app/Http/Requests/NocRequest.php @@ -4,20 +4,150 @@ use Illuminate\Foundation\Http\FormRequest; + /** + * Form Request untuk validasi data NOC (Notice of Completion) + */ class NocRequest extends FormRequest { + /** + * Konstanta untuk jenis file yang diizinkan + */ + private const ALLOWED_FILE_TYPES = 'pdf,jpg,jpeg,png'; + + /** + * Konstanta untuk ukuran file maksimum (dalam KB) + */ + private const MAX_FILE_SIZE = 10240; + + /** + * Menentukan apakah pengguna berwenang untuk melakukan request ini + * + * @return bool + */ public function authorize() { return true; } + /** + * Mengumpulkan semua aturan validasi + * + * @return array + */ public function rules() + { + return array_merge( + $this->getBasicInfoRules(), + $this->getPaymentRules(), + $this->getSettlementRules(), + $this->getAuthorizationRules(), + ); + } + + /** + * Aturan validasi untuk informasi dasar + * + * @return array + */ + private function getBasicInfoRules() { return [ - 'penawaran_id' => 'nullable|exists:penawaran,id', - 'nominal_bayar' => 'nullable|numeric|min:0', - 'bukti_ksl' => 'nullable|file|mimes:pdf,jpg,jpeg,png|max:10240', - 'status' => 'nullable|boolean', + 'permohonan_id' => 'required|exists:permohonan,id', + 'persetujuan_penawaran_id' => 'required|exists:persetujuan_penawaran,id', + 'status' => 'nullable|boolean', + 'created_by' => 'nullable|exists:users,id', + 'updated_by' => 'nullable|exists:users,id', + ]; + } + + /** + * Aturan validasi untuk data pembayaran + * + * @return array + */ + private function getPaymentRules() + { + $fileRule = 'nullable|file|mimes:' . self::ALLOWED_FILE_TYPES . '|max:' . self::MAX_FILE_SIZE; + + return [ + 'total_harus_bayar' => 'nullable|numeric|min:0', + 'nominal_bayar' => 'nullable|numeric|min:0', + 'bukti_ksl' => $fileRule, + 'bukti_bayar' => $fileRule, + 'status_bayar' => 'nullable|boolean', + 'tanggal_pembayaran' => 'nullable|date', + ]; + } + + /** + * Aturan validasi untuk data penyelesaian + * + * @return array + */ + private function getSettlementRules() + { + $fileRule = 'nullable|file|mimes:' . self::ALLOWED_FILE_TYPES . '|max:' . self::MAX_FILE_SIZE; + + return [ + 'nominal_penyelesaian' => 'nullable|numeric|min:0', + 'status_penyelesaian' => 'nullable|boolean', + 'tanggal_penyelesaian' => 'nullable|date', + 'bukti_penyelesaian' => $fileRule, + 'memo_penyelesaian' => $fileRule, + 'catatan_noc' => 'nullable|string', + ]; + } + + /** + * Aturan validasi untuk otorisasi + * + * @return array + */ + private function getAuthorizationRules() + { + return [ + 'authorized_status' => 'nullable|boolean', + 'authorized_at' => 'nullable|date', + 'authorized_by' => 'nullable|exists:users,id', + ]; + } + + /** + * Pesan khusus untuk validasi + * + * @return array + */ + public function messages() + { + return [ + 'permohonan_id.required' => 'ID Permohonan harus diisi', + 'permohonan_id.exists' => 'ID Permohonan tidak valid', + 'persetujuan_penawaran_id.required' => 'ID Persetujuan Penawaran harus diisi', + 'persetujuan_penawaran_id.exists' => 'ID Persetujuan Penawaran tidak valid', + 'nominal_bayar.numeric' => 'Nominal Bayar harus berupa angka', + 'nominal_bayar.min' => 'Nominal Bayar minimal 0', + 'bukti_ksl.file' => 'Bukti KSL harus berupa file', + 'bukti_ksl.mimes' => 'Bukti KSL harus berformat pdf, jpg, jpeg, atau png', + 'bukti_ksl.max' => 'Ukuran Bukti KSL maksimal 10MB', + 'bukti_bayar.file' => 'Bukti Bayar harus berupa file', + 'bukti_bayar.mimes' => 'Bukti Bayar harus berformat pdf, jpg, jpeg, atau png', + 'bukti_bayar.max' => 'Ukuran Bukti Bayar maksimal 10MB', + 'status.boolean' => 'Status harus berupa boolean', + 'status_bayar.boolean' => 'Status Bayar harus berupa boolean', + 'tanggal_pembayaran.date' => 'Format Tanggal Pembayaran tidak valid', + 'nominal_penyelesaian.numeric' => 'Nominal Penyelesaian harus berupa angka', + 'nominal_penyelesaian.min' => 'Nominal Penyelesaian minimal 0', + 'status_penyelesaian.boolean' => 'Status Penyelesaian harus berupa boolean', + 'tanggal_penyelesaian.date' => 'Format Tanggal Penyelesaian tidak valid', + 'bukti_penyelesaian.file' => 'Bukti Penyelesaian harus berupa file', + 'bukti_penyelesaian.mimes' => 'Bukti Penyelesaian harus berformat pdf, jpg, jpeg, atau png', + 'bukti_penyelesaian.max' => 'Ukuran Bukti Penyelesaian maksimal 10MB', + 'memo_penyelesaian.file' => 'Memo Penyelesaian harus berupa file', + 'memo_penyelesaian.mimes' => 'Memo Penyelesaian harus berformat pdf, jpg, jpeg, atau png', + 'memo_penyelesaian.max' => 'Ukuran Memo Penyelesaian maksimal 10MB', + 'authorized_status.boolean' => 'Status Otorisasi harus berupa boolean', + 'authorized_at.date' => 'Format Tanggal Otorisasi tidak valid', + 'authorized_by.exists' => 'User Otorisasi tidak valid', ]; } } diff --git a/app/Http/Requests/PersetujuanPenawaranRequest.php b/app/Http/Requests/PersetujuanPenawaranRequest.php index 8d04940..d1f87f8 100644 --- a/app/Http/Requests/PersetujuanPenawaranRequest.php +++ b/app/Http/Requests/PersetujuanPenawaranRequest.php @@ -23,8 +23,6 @@ 'sla_final' => 'nullable|numeric|min:0', 'file_persetujuan_penawaran' => 'nullable|file|mimes:pdf,doc,docx|max:10240', 'surat_representasi' => 'nullable|file|mimes:pdf,doc,docx|max:10240', - 'bukti_bayar' => 'nullable|file|mimes:pdf,jpg,jpeg,png|max:10240', - 'nominal_bayar' => 'nullable|numeric|min:0', 'status' => 'nullable|boolean', 'authorized_status' => 'boolean', 'authorized_at' => 'nullable|date', @@ -52,9 +50,6 @@ 'surat_representasi.file' => 'Surat Representasi harus berupa file.', 'surat_representasi.mimes' => 'Surat Representasi harus berupa file PDF, DOC, atau DOCX.', 'surat_representasi.max' => 'Ukuran Surat Representasi tidak boleh lebih dari 10MB.', - 'bukti_bayar.file' => 'Bukti Bayar harus berupa file.', - 'bukti_bayar.mimes' => 'Bukti Bayar harus berupa file PDF, JPG, JPEG, atau PNG.', - 'bukti_bayar.max' => 'Ukuran Bukti Bayar tidak boleh lebih dari 10MB.', 'region_id.required' => 'Region ID wajib diisi.', 'region_id.exists' => 'Region ID tidak valid.', 'status.required' => 'Status wajib diisi.', @@ -62,8 +57,6 @@ 'authorized_status.boolean' => 'Status otorisasi harus berupa nilai boolean.', 'authorized_at.date' => 'Tanggal otorisasi harus berupa tanggal yang valid.', 'authorized_by.exists' => 'ID pengguna yang mengotorisasi tidak valid.', - 'status_bayar.required' => 'Status bayar wajib diisi.', - 'status_bayar.in' => 'Status bayar harus berupa "sudah_bayar", "belum_bayar" atau "tidak bayar".', ]; } } diff --git a/app/Models/Noc.php b/app/Models/Noc.php index a9104fd..16a0342 100644 --- a/app/Models/Noc.php +++ b/app/Models/Noc.php @@ -23,6 +23,7 @@ class Noc extends Base 'bukti_penyelesaian', 'bukti_ksl', 'memo_penyelesaian', + 'catatan_noc', 'status', 'authorized_status', 'authorized_at', diff --git a/database/migrations/2025_05_04_124217_create_nocs_table.php b/database/migrations/2025_05_04_124217_create_nocs_table.php index 4630297..a91fc31 100644 --- a/database/migrations/2025_05_04_124217_create_nocs_table.php +++ b/database/migrations/2025_05_04_124217_create_nocs_table.php @@ -26,6 +26,7 @@ $table->string('bukti_ksl')->nullable(); $table->text('memo_penyelesaian')->nullable(); $table->boolean('status')->default(true); + $table->string('catatan_noc')->nullable(); $table->char('authorized_status', 1)->nullable(); $table->timestamp('authorized_at')->nullable(); $table->unsignedBigInteger('authorized_by')->nullable(); diff --git a/resources/views/noc/form.blade.php b/resources/views/noc/form.blade.php index 9d0eb81..9721c50 100644 --- a/resources/views/noc/form.blade.php +++ b/resources/views/noc/form.blade.php @@ -19,6 +19,7 @@
@csrf +
@@ -26,10 +27,10 @@ Status Bayar
- - - + + @error('status_bayar') {{ $message }} @@ -39,11 +40,11 @@
- - @error('bukti_ksl') + + @error('total_harus_bayar') {{ $message }} @enderror
@@ -54,19 +55,47 @@ Nominal Bayar
- + @error('nominal_bayar') {{ $message }} @enderror
+
+ +
+ + @error('bukti_ksl') + {{ $message }} + @enderror + + @if(isset($persetujuanPenawaran->noc->bukti_ksl) && !empty($persetujuanPenawaran->noc->bukti_ksl)) +
+ File yang sudah diupload: + + + + + + Lihat File + +
+ @endif +
+
+
- + @error('catatan') {{ $message }} @enderror @@ -78,7 +107,7 @@ Catatan NOC
- + @error('catatan_noc') {{ $message }} @enderror From eea49b79437967593fa9fcbfb072c37bf8219126 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 6 May 2025 13:41:36 +0700 Subject: [PATCH 07/20] feat(noc): tambah fitur penyelesaian NOC - Tambah atribut baru: `tanggal_pembayaran`, `memo_penyelesaian`, `bukti_penyelesaian`, dan `nominal_penyelesaian`. - Update logika penyimpanan dan update data NOC dengan atribut baru. - Tambah validasi dan handling untuk memproses pembayaran dan penyelesaian NOC. - Update form NOC untuk mendukung input penyelesaian, termasuk file memo dan bukti penyelesaian. - Update tampilan tabel data untuk menampilkan atribut baru di halaman index NOC. - Tambah logika untuk memeriksa keberadaan memo penyelesaian di view form NOC. - Penyesuaian endpoint dan logika dalam controller untuk mendukung penyelesaian data NOC. Signed-off-by: Daeng Deni Mardaeni --- app/Http/Controllers/NocController.php | 60 +++++++++---- resources/views/noc/form.blade.php | 115 +++++++++++++++++++++---- resources/views/noc/index.blade.php | 46 ++++++++++ 3 files changed, 186 insertions(+), 35 deletions(-) diff --git a/app/Http/Controllers/NocController.php b/app/Http/Controllers/NocController.php index d7fb9ce..891e9ea 100644 --- a/app/Http/Controllers/NocController.php +++ b/app/Http/Controllers/NocController.php @@ -47,18 +47,19 @@ $dataNoc = [ 'nominal_bayar' => $validated['nominal_bayar'], - 'tanggal_pembayaran' => date('Y-m-d'), + 'tanggal_pembayaran' => $validated['tanggal_pembayaran'] ?? date('Y-m-d'), 'status_bayar' => $validated['nominal_bayar'] < $validated['total_harus_bayar'] ? false : true, - 'catatan_noc' => $validated['catatan_noc'], + 'catatan_noc' => $validated['catatan_noc'], ]; - $noc = Noc::updateOrCreate( + $noc = Noc::updateOrCreate( [ 'permohonan_id' => $validated['permohonan_id'], - 'persetujuan_penawaran_id' => $validated['persetujuan_penawaran_id'] - ],$dataNoc + 'persetujuan_penawaran_id' => $validated['persetujuan_penawaran_id'], + ], + $dataNoc, ); - $folderPath = 'noc/' . request()->get('penawaran_id'); + $folderPath = 'noc/' . request()->get('persetujuan_penawaran_id') . '/bukti_ksl/'; if ($request->hasFile('bukti_ksl')) { $noc->bukti_ksl = $request->file('bukti_ksl')->store( @@ -90,7 +91,7 @@ } return redirect() - ->route('noc.index')->with('success', 'Penyelesaian KSL berhasil disimpan.'); + ->route('noc.index')->with('success', 'NOC berhasil disimpan.'); } /** @@ -98,13 +99,36 @@ */ public function update(NocRequest $request, PersetujuanPenawaran $persetujuanPenawaran) { - $validated = $request->validated(); - $validated['updated_by'] = Auth::id(); + $validated = $request->validated(); + $dataNoc = [ + 'nominal_penyelesaian' => $validated['nominal_penyelesaian'], + 'tanggal_penyelesaian' => $validated['tanggal_penyelesaian'] ?? date('Y-m-d'), + 'status_pelunasan' => ((int)$validated['nominal_bayar'] + (int)$validated['nominal_penyelesaian']) === (int)$validated['total_harus_bayar'] ? true : false, + 'catatan_noc' => $validated['catatan_noc'], + ]; + + + $noc = Noc::updateOrCreate( + [ + 'permohonan_id' => $validated['permohonan_id'], + 'persetujuan_penawaran_id' => $validated['persetujuan_penawaran_id'], + ], + $dataNoc, + ); + + $folderPath = 'noc/' . request()->get('persetujuan_penawaran_id') . '/bukti_penyelesaian/'; + + if ($request->hasFile('bukti_penyelesaian')) { + $noc->bukti_penyelesaian = $request->file('bukti_penyelesaian')->store( + $folderPath, + 'public', + ); + } + $noc->save(); - $persetujuanPenawaran->update($validated); return redirect() - ->route('noc.index')->with('success', 'Persetujuan Penawaran updated successfully'); + ->route('noc.index')->with('success', 'NOC updated successfully'); } /** @@ -188,8 +212,8 @@ 'nomor_registrasi' => $persetujuanPenawaran->permohonan->nomor_registrasi ?? $persetujuanPenawaran->penawaran->nomor_registrasi, 'nama_debitur' => $persetujuanPenawaran->permohonan->debiture->name ?? $persetujuanPenawaran->penawaran->permohonan->debiture->name, 'cabang' => $persetujuanPenawaran->permohonan->branch->name ?? $persetujuanPenawaran->penawaran->permohonan->branch->name, - 'tanggal_setor' => dateFormat( - $persetujuanPenawaran->moc->created_at ?? $persetujuanPenawaran->created_at, + 'tanggal_pembayaran' => dateFormat( + $persetujuanPenawaran->noc->tanggal_pembayaran ?? $persetujuanPenawaran->noc?->created_at, true, ), 'nominal_bayar' => currencyFormat( @@ -201,12 +225,12 @@ $persetujuanPenawaran->noc->nominal_penyelesaian ?? $persetujuanPenawaran->nominal_penyelesaian ?? 0, ), 'bukti_penyelesaian' => $persetujuanPenawaran->noc->bukti_penyelesaian ?? $persetujuanPenawaran->bukti_penyelesaian ?? null, - 'tanggal_penyelesaian' => dateFormat( - $persetujuanPenawaran->noc->tanggal_penyelesaian ?? $persetujuanPenawaran->updated_at, - true, - ), + 'tanggal_penyelesaian' => $persetujuanPenawaran->noc?->tanggal_penyelesaian ? dateFormat( + $persetujuanPenawaran->noc?->tanggal_penyelesaian, + true) : '-', + 'updated_at' => dateFormat($persetujuanPenawaran->updated_at, true), ]; - }); + })->sortBy('updated_at', 1); // Calculate the page count $pageCount = ceil($totalRecords / $request->get('size')); diff --git a/resources/views/noc/form.blade.php b/resources/views/noc/form.blade.php index 9721c50..b435428 100644 --- a/resources/views/noc/form.blade.php +++ b/resources/views/noc/form.blade.php @@ -4,6 +4,16 @@ {{ Breadcrumbs::render(request()->route()->getName()) }} @endsection +@php + $hasMemo = false; + try { + $memoPath = $persetujuanPenawaran->noc->memo_penyelesaian ?? null; + $hasMemo = isset($memoPath) && !empty($memoPath) && Storage::exists($memoPath); + } catch (Exception $e) { + // Jika terjadi error, $hasMemo tetap false + } +@endphp + @section('content')
@@ -16,8 +26,11 @@
- + @csrf + @if($hasMemo) + @method('PUT') + @endif @@ -27,7 +40,7 @@ Status Bayar
- @@ -55,41 +68,109 @@ Nominal Bayar
- + @error('nominal_bayar') {{ $message }} @enderror
+
+ +
+ + @error('tanggal_pembayaran') + {{ $message }} + @enderror +
+
+ +
- - @error('bukti_ksl') - {{ $message }} - @enderror + @if($hasMemo) + + @error('bukti_ksl') + {{ $message }} + @enderror + @endif @if(isset($persetujuanPenawaran->noc->bukti_ksl) && !empty($persetujuanPenawaran->noc->bukti_ksl))
- File yang sudah diupload: - - - - - - Lihat File + + Lihat File
@endif
+ @if($hasMemo) +
+ + +
+ +
+ +
+ + @error('bukti_penyelesaian') + {{ $message }} + @enderror + + @if(isset($persetujuanPenawaran->noc->bukti_penyelesaian) && !empty($persetujuanPenawaran->noc->bukti_penyelesaian)) + + @endif +
+
+ +
+ +
+ + @error('nominal_penyelesaian') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('tanggal_penyelesaian') + {{ $message }} + @enderror +
+
+ @endif +
+ + + + + - -
+ User Pemohon + Cabang Pemohon + Tanggal Pembayaran + + + Memo Penyelesaian + + + Bukti Penyelesaian + + + Nominal Penyelesaian + + Tanggal Penyelesaian @@ -149,6 +165,36 @@ } }, }, + tanggal_pembayaran: { + title: 'Tanggal Pembayaran', + }, + memo_penyelesaian: { + title: 'Memo Penyelesaian', + render: (item, data) => { + if (data.memo_penyelesaian) { + return ` + Download + `; + } else { + return '-'; + } + }, + }, + bukti_penyelesaian: { + title: 'Bukti Penyelesaian', + render: (item, data) => { + if (data.bukti_penyelesaian) { + return ` + Download + `; + } else { + return '-'; + } + }, + }, + nominal_penyelesaian: { + title: 'Nominal Penyelesaian', + }, tanggal_penyelesaian: { title: 'Tanggal Penyelesaian', }, From 8158f3058f016af09bdc7af71cb92a96624880ba Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 7 May 2025 09:19:41 +0700 Subject: [PATCH 08/20] feat(noc): tambahkan fitur bukti bayar dan nominal diterima - Menambahkan kolom "Bukti Bayar" dan "Nominal Diterima" pada tampilan daftar noc. - Menambahkan input untuk bukti bayar dan nominal diterima pada form noc. - Mengubah logika pengecekan input file bukti KSL agar sesuai kondisi. - Memperbaiki placeholder dan label form untuk konsistensi. - Memperbaiki render data bukti bayar pada tabular untuk mendukung tindakan download atau lihat file. Signed-off-by: Daeng Deni Mardaeni --- app/Http/Controllers/NocController.php | 7 +++++-- resources/views/noc/form.blade.php | 23 +++++++++++++++++++---- resources/views/noc/index.blade.php | 23 +++++++++++++++++++++++ 3 files changed, 47 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/NocController.php b/app/Http/Controllers/NocController.php index 891e9ea..5053015 100644 --- a/app/Http/Controllers/NocController.php +++ b/app/Http/Controllers/NocController.php @@ -216,10 +216,13 @@ $persetujuanPenawaran->noc->tanggal_pembayaran ?? $persetujuanPenawaran->noc?->created_at, true, ), - 'nominal_bayar' => currencyFormat( - $persetujuanPenawaran->noc->nominal_bayar ?? $persetujuanPenawaran->nominal_bayar ?? 0, + 'nominal_bayar' => currencyFormat($persetujuanPenawaran->nominal_bayar ?? 0, + ), + 'nominal_diterima' => currencyFormat( + $persetujuanPenawaran->noc->nominal_bayar ?? 0, ), 'bukti_ksl' => $persetujuanPenawaran->noc->bukti_ksl ?? $persetujuanPenawaran->bukti_ksl ?? null, + 'bukti_bayar' => $persetujuanPenawaran->bukti_bayar ?? null, 'memo_penyelesaian' => $persetujuanPenawaran->noc->memo_penyelesaian ?? $persetujuanPenawaran->memo_penyelesaian ?? null, 'nominal_penyelesaian' => currencyFormat( $persetujuanPenawaran->noc->nominal_penyelesaian ?? $persetujuanPenawaran->nominal_penyelesaian ?? 0, diff --git a/resources/views/noc/form.blade.php b/resources/views/noc/form.blade.php index b435428..ff8f8cc 100644 --- a/resources/views/noc/form.blade.php +++ b/resources/views/noc/form.blade.php @@ -28,7 +28,7 @@
@csrf - @if($hasMemo) + @if(!$hasMemo) @method('PUT') @endif @@ -53,7 +53,22 @@
+
+ @if(!empty($persetujuanPenawaran->bukti_bayar)) + + @endif +
+
+ +
+
@@ -65,7 +80,7 @@
@@ -93,7 +108,7 @@ Bukti KSL
- @if($hasMemo) + @if(!$hasMemo) @error('bukti_ksl') {{ $message }} diff --git a/resources/views/noc/index.blade.php b/resources/views/noc/index.blade.php index 7420700..ca72e7b 100644 --- a/resources/views/noc/index.blade.php +++ b/resources/views/noc/index.blade.php @@ -53,6 +53,14 @@ Nominal bayar
+ Bukti Bayar + + + Nominal Diterima + + Bukti KSL @@ -153,6 +161,21 @@ nominal_bayar: { title: 'Nominal Bayar', }, + bukti_bayar: { + title: 'Bukti KSL', + render: (item, data) => { + if (data.bukti_bayar) { + return ` + Download + `; + } else { + return '-'; + } + }, + }, + nominal_diterima: { + title: 'Nominal Diterima', + }, bukti_ksl: { title: 'Bukti KSL', render: (item, data) => { From 980b4e8e9f5950940870c582cc73f53a921072bc Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 7 May 2025 10:29:02 +0700 Subject: [PATCH 09/20] feat(noc): tambah fitur penyelesaian dan memo penyelesaian NOC - Menambahkan relasi `noc` pada data laporan. - Memperbarui logika `update` NOC untuk memproses memo penyelesaian. - Menambahkan tombol "Penyelesaian" pada halaman laporan jika data NOC belum selesai. - Memperbaiki pengecekan keberadaan file memo dengan disk publik. - Mengimplementasikan view dan form baru untuk input memo penyelesaian pada NOC. - Menambahkan routing dan breadcrumbs untuk proses penyelesaian memo NOC. - Menambahkan validasi dan penyimpanan file memo penyelesaian. Signed-off-by: Daeng Deni Mardaeni --- app/Http/Controllers/LaporanController.php | 2 +- app/Http/Controllers/NocController.php | 27 +++- resources/views/laporan/index.blade.php | 11 +- resources/views/noc/form.blade.php | 6 +- resources/views/noc/memo.blade.php | 163 +++++++++++++++++++++ routes/breadcrumbs.php | 5 + routes/web.php | 3 + 7 files changed, 211 insertions(+), 6 deletions(-) create mode 100644 resources/views/noc/memo.blade.php diff --git a/app/Http/Controllers/LaporanController.php b/app/Http/Controllers/LaporanController.php index b457413..660176e 100644 --- a/app/Http/Controllers/LaporanController.php +++ b/app/Http/Controllers/LaporanController.php @@ -123,7 +123,7 @@ class LaporanController extends Controller $filteredRecords = $query->count(); // Get the data for the current page - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian','jenisFasilitasKredit', 'documents.inspeksi','penilai','documents.detail'])->get(); + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian','jenisFasilitasKredit', 'documents.inspeksi','penilai','documents.detail','noc'])->get(); // Calculate the page count $pageCount = ceil($totalRecords / $size); diff --git a/app/Http/Controllers/NocController.php b/app/Http/Controllers/NocController.php index 5053015..48f685b 100644 --- a/app/Http/Controllers/NocController.php +++ b/app/Http/Controllers/NocController.php @@ -100,6 +100,27 @@ public function update(NocRequest $request, PersetujuanPenawaran $persetujuanPenawaran) { $validated = $request->validated(); + + if($request->get('is_memo')){ + + $memo = Noc::find($request->get('is_memo')); + + $folderPath = 'noc/' . request()->get('persetujuan_penawaran_id') . '/memo_penyelesaian/'; + + if ($request->hasFile('memo_penyelesaian')) { + $memo->memo_penyelesaian = $request->file('memo_penyelesaian')->store( + $folderPath, + 'public', + ); + } + + $memo->catatan_noc = $validated['catatan_noc']; + $memo->save(); + + + return redirect() + ->route('laporan.index')->with('success', 'Memo Penyelesaian updated successfully'); + } $dataNoc = [ 'nominal_penyelesaian' => $validated['nominal_penyelesaian'], 'tanggal_penyelesaian' => $validated['tanggal_penyelesaian'] ?? date('Y-m-d'), @@ -142,7 +163,11 @@ /** * Display the specified resource. */ - public function show($id) {} + public function show(Request $request) { + $noc = Noc::find($request->get('id')); + + return view('lpj::noc.memo', compact('noc')); + } /** * Show the form for editing the specified resource. diff --git a/resources/views/laporan/index.blade.php b/resources/views/laporan/index.blade.php index 9e1d2ee..85193ec 100644 --- a/resources/views/laporan/index.blade.php +++ b/resources/views/laporan/index.blade.php @@ -237,8 +237,17 @@ const type = data.penilai?.type || ''; let laporanButton = ''; let resumeButton = ''; + let penyelesaian = ''; + if(data.noc) { + if (!data.noc?.tanggal_penyelesaian && !data.noc?.memo_penyelesaian) { + penyelesaian = ` + + Penyelesaian + `; + } + } if(data.penilai.resume) { resumeButton = ` @@ -270,7 +279,7 @@ } - return `
${resumeButton} ${laporanButton}
`; + return `
${penyelesaian} ${resumeButton} ${laporanButton}
`; }, } }, diff --git a/resources/views/noc/form.blade.php b/resources/views/noc/form.blade.php index ff8f8cc..34ac92a 100644 --- a/resources/views/noc/form.blade.php +++ b/resources/views/noc/form.blade.php @@ -8,7 +8,7 @@ $hasMemo = false; try { $memoPath = $persetujuanPenawaran->noc->memo_penyelesaian ?? null; - $hasMemo = isset($memoPath) && !empty($memoPath) && Storage::exists($memoPath); + $hasMemo = isset($memoPath) && !empty($memoPath) && Storage::disk('public')->exists($memoPath); } catch (Exception $e) { // Jika terjadi error, $hasMemo tetap false } @@ -19,7 +19,7 @@
- NOC + {{ $hasMemo ? 'Proses Penyelesaian NOC' : 'NOC' }}
Back @@ -28,7 +28,7 @@
@csrf - @if(!$hasMemo) + @if($hasMemo) @method('PUT') @endif diff --git a/resources/views/noc/memo.blade.php b/resources/views/noc/memo.blade.php new file mode 100644 index 0000000..97a1e06 --- /dev/null +++ b/resources/views/noc/memo.blade.php @@ -0,0 +1,163 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection +@section('content') +
+
+
+
+ Memo Penyelesaian NOC +
+
+ Back +
+
+
+ + @csrf + @method('PUT') + + + + +
+ +
+ + @error('status_bayar') + {{ $message }} + @enderror +
+
+ +
+ +
+ @if(!empty($noc->persetujuanPenawaran->bukti_bayar)) + + @endif +
+
+ +
+ +
+ + @error('total_harus_bayar') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('nominal_bayar') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('tanggal_pembayaran') + {{ $message }} + @enderror +
+
+ + +
+ +
+ @if(isset($noc->bukti_ksl) && !empty($noc->bukti_ksl)) + + @endif +
+
+ +
+ +
+ + + @error('memo_penyelesaian') + {{ $message }} + @enderror + + @if(isset($noc->memo_penyelesaian) && !empty($noc->memo_penyelesaian)) + + @endif +
+
+ + +
+ +
+ + @error('catatan') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('catatan_noc') + {{ $message }} + @enderror +
+
+ +
+ +
+ +
+
+
+@endsection diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index d3fab80..2e9f08c 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -678,6 +678,11 @@ Breadcrumbs::for('noc.edit', function (BreadcrumbTrail $trail) { $trail->push('Proses NOC'); }); + Breadcrumbs::for('noc.penyelesaian', function (BreadcrumbTrail $trail) { + $trail->parent('noc'); + $trail->push('Proses Memo Penyelesaian NOC'); + }); + Breadcrumbs::for('laporan-external', function (BreadcrumbTrail $trail) { $trail->push('Laporan External', route('laporan-external.index')); }); diff --git a/routes/web.php b/routes/web.php index a7a181d..d04fe9a 100644 --- a/routes/web.php +++ b/routes/web.php @@ -654,6 +654,9 @@ Route::middleware(['auth'])->group(function () { Route::get('noc/datatables', [NocController::class, 'dataForDatatables']) ->name('noc.datatables'); + Route::get('noc/penyelesaian',[NocController::class, 'show'])->name('noc.penyelesaian'); + Route::post('noc/penyelesaian',[NocController::class, 'penyelesaian'])->name('noc.store.penyelesaian'); + Route::resource('noc', NocController::class); From e731e9cea043db9748bafc095f78a00cd6876435 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 7 May 2025 13:31:34 +0700 Subject: [PATCH 10/20] fix(laporan-penilaian): perbaiki logika paginasi dan tambahkan kontrol pagination di view - Ubah logika default nilai parameter halaman ketika tidak ada input dari request. - Tambahkan elemen kontrol pagination dan jumlah data per halaman di tampilan UI. - Pastikan data table kembali ke halaman pertama saat melakukan ekspor data. Signed-off-by: Daeng Deni Mardaeni --- ...lPenilaianJaminanInternalExternalController.php | 2 +- .../index.blade.php | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/LaporanHasilPenilaianJaminanInternalExternalController.php b/app/Http/Controllers/LaporanHasilPenilaianJaminanInternalExternalController.php index 3bac546..081d455 100644 --- a/app/Http/Controllers/LaporanHasilPenilaianJaminanInternalExternalController.php +++ b/app/Http/Controllers/LaporanHasilPenilaianJaminanInternalExternalController.php @@ -190,7 +190,7 @@ $pageCount = ceil($totalRecords / $request->get('size')); // Calculate the current page number - $currentPage = $request->get('page', 1); + $currentPage = $request->get('page') ?: 1; // Return the response data as a JSON object return response()->json([ diff --git a/resources/views/laporan_hasil_penilaian_jaminan_internal_external/index.blade.php b/resources/views/laporan_hasil_penilaian_jaminan_internal_external/index.blade.php index f67fb41..bc59c17 100644 --- a/resources/views/laporan_hasil_penilaian_jaminan_internal_external/index.blade.php +++ b/resources/views/laporan_hasil_penilaian_jaminan_internal_external/index.blade.php @@ -219,10 +219,19 @@
+ @@ -437,6 +446,7 @@ // Update export URL with filters function updateExportUrl() { + dataTable.goPage(1); let url = new URL(exportBtn.href); if (startDateInput.value) { From ade4ffcad49d1175a1c0d6e1fe9122b5bc70c3e4 Mon Sep 17 00:00:00 2001 From: majid Date: Tue, 20 May 2025 14:10:52 +0700 Subject: [PATCH 11/20] fix: perbaikkan update surveyor dan penilai --- app/Http/Controllers/PenilaiController.php | 27 ++++++++++++++++--- .../views/component/form-penilai.blade.php | 4 +-- .../lpj-sederhana-standar.blade.php | 8 +++--- resources/views/penilai/show.blade.php | 10 +++---- 4 files changed, 35 insertions(+), 14 deletions(-) diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index b3c498f..3f21f73 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -82,7 +82,7 @@ class PenilaiController extends Controller public function sederhana(Request $request, $id) { - $documentId = $request->query('documentId'); + $documentId = $request->query('dokument'); $jaminanId = $request->query('jaminanId'); $permohonan = $this->surveyorController->getPermohonanJaminanId($id, $documentId, $jaminanId); $basicData = $this->surveyorController->getCommonData(); @@ -148,10 +148,15 @@ class PenilaiController extends Controller public function standar(Request $request, $id) { - $documentId = $request->query('documentId'); + $documentId = $request->query('dokument'); $jaminanId = $request->query('jaminanId'); $permohonan = $this->surveyorController->getPermohonanJaminanId($id, $documentId, $jaminanId); + + if ($permohonan->status == 'proses-laporan') { + return redirect()->back()->with('error', 'Masih dalam proses laporan'); + } + $basicData = $this->surveyorController->getCommonData(); $noLpSederhana = $this->generateNoLaporan($permohonan, $documentId, 'lpj'); @@ -218,6 +223,11 @@ class PenilaiController extends Controller $jaminanId = $request->query('jaminanId'); $permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId); + + if ($permohonan->status == 'proses-laporan') { + return redirect()->back()->with('error', 'Masih dalam proses laporan'); + } + $nomorLaporan = $this->generateNoLaporan($permohonan, $documentId, 'resume'); $inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); $noLpresume = $this->generateNoLaporan($permohonan, $documentId, 'resume'); @@ -253,6 +263,9 @@ class PenilaiController extends Controller $data = $this->getDataPermohonanWithPenilaiAndInspeksi($req['permohonanId'], $req['documentId'], $req['jaminanId']); $permohonan = $data['permohonan']; + if ($permohonan->status == 'proses-laporan') { + return redirect()->back()->with('error', 'Masih dalam proses laporan'); + } $nomorLaporan = $this->generateNoLaporan($permohonan, $req['documentId'], 'memo'); $inspeksi = Inspeksi::where('permohonan_id', $req['permohonanId'])->where('dokument_id', $req['documentId'])->first(); @@ -388,10 +401,15 @@ class PenilaiController extends Controller { $permohonanId = $request->query('permohonanId'); - $documentId = $request->query('documentId'); + $documentId = $request->query('dokument'); $jaminanId = $request->query('jaminanId'); $provinces = Province::all(); $permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId); + + if ($permohonan->status == 'proses-laporan') { + return redirect()->back()->with('error', 'Masih dalam proses laporan'); + } + $nomorLaporan = $this->generateNoLaporan($permohonan, $documentId, 'rap'); $basicData = $this->surveyorController->getCommonData(); $inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); @@ -470,6 +488,9 @@ class PenilaiController extends Controller $jaminanId = $request->query('jaminanId'); $provinces = Province::all(); $permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId); + if ($permohonan->status == 'proses-laporan') { + return redirect()->back()->with('error', 'Masih dalam proses laporan'); + } $nomorLaporan = $this->generateNoLaporan($permohonan, $documentId, 'call-report'); $basicData = $this->surveyorController->getCommonData(); $inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); diff --git a/resources/views/component/form-penilai.blade.php b/resources/views/component/form-penilai.blade.php index 12b2cee..946ca13 100644 --- a/resources/views/component/form-penilai.blade.php +++ b/resources/views/component/form-penilai.blade.php @@ -36,7 +36,7 @@ Informasi dan pembanding
- Edit Data Pembanding @@ -553,7 +553,7 @@ const urlParams = new URLSearchParams(window.location.search); const permohonanId = {{ $permohonan->id }}; - const documentId = urlParams.get('documentId'); + const documentId = urlParams.get('dokument'); const inspeksiId = urlParams.get('inspeksiId'); const requestUrl = diff --git a/resources/views/penilai/components/lpj-sederhana-standar.blade.php b/resources/views/penilai/components/lpj-sederhana-standar.blade.php index 1008b5f..e210da6 100644 --- a/resources/views/penilai/components/lpj-sederhana-standar.blade.php +++ b/resources/views/penilai/components/lpj-sederhana-standar.blade.php @@ -23,7 +23,7 @@ @include('lpj::assetsku.includenya')
- + @include('lpj::component.form-penilai') @@ -52,15 +52,15 @@ @endif @if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal', 'administrator'])) + href="{{ route('penilai.lampiran') }}?permohonanId={{ $permohonan->id }}&documentId={{ request('dokument') }}&jaminanId={{ request('jaminanId') }}&statusLpj=1"> Lampiran Foto dan Dokumen - Cetak Hasil Inspeksi + onclick="checkLaporan('{{ $permohonan->id }}', '{{ request('dokument') }}', {{ request('jaminanId') }}, 0)"> Cetak Laporan @endif diff --git a/resources/views/penilai/show.blade.php b/resources/views/penilai/show.blade.php index 853834f..705c3cb 100644 --- a/resources/views/penilai/show.blade.php +++ b/resources/views/penilai/show.blade.php @@ -493,11 +493,11 @@ if (data.status === 'standar') { showLoadingSwal('Tunggu ...'); window.location.href = - `{{ route('penilai.standar', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.standar', $permohonan->id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; } else if (data.status === 'sederhana') { showLoadingSwal('Tunggu ...'); window.location.href = - `{{ route('penilai.sederhana', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.sederhana', $permohonan->id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; } } else { if (fasilitasKredit.toUpperCase() === 'KPR KERJASAMA') { @@ -556,10 +556,10 @@ if (data.success) { if (type === 'standar') { window.location.href = - `{{ route('penilai.standar', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.standar', $permohonan->id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; } else if (type === 'sederhana') { window.location.href = - `{{ route('penilai.sederhana', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.sederhana', $permohonan->id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; } } }); @@ -640,7 +640,7 @@ function rap(permohonanId, documentId, jaminanId) { showLoadingSwal('Tunggu ...'); window.location.href = - `{{ route('penilai.rap') }}?permohonanId=${permohonanId}&documentId=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.rap') }}?permohonanId=${permohonanId}&dokument=${documentId}&jaminanId=${jaminanId}`; } From 500118d7873cb9e2aa3642a8908a3c4349a2536b Mon Sep 17 00:00:00 2001 From: majid Date: Tue, 20 May 2025 14:10:52 +0700 Subject: [PATCH 12/20] fix: perbaikkan update surveyor dan penilai --- app/Http/Controllers/PenilaiController.php | 27 ++++++++++++++++--- .../views/component/form-penilai.blade.php | 4 +-- .../lpj-sederhana-standar.blade.php | 8 +++--- resources/views/penilai/show.blade.php | 10 +++---- 4 files changed, 35 insertions(+), 14 deletions(-) diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index b3c498f..3f21f73 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -82,7 +82,7 @@ class PenilaiController extends Controller public function sederhana(Request $request, $id) { - $documentId = $request->query('documentId'); + $documentId = $request->query('dokument'); $jaminanId = $request->query('jaminanId'); $permohonan = $this->surveyorController->getPermohonanJaminanId($id, $documentId, $jaminanId); $basicData = $this->surveyorController->getCommonData(); @@ -148,10 +148,15 @@ class PenilaiController extends Controller public function standar(Request $request, $id) { - $documentId = $request->query('documentId'); + $documentId = $request->query('dokument'); $jaminanId = $request->query('jaminanId'); $permohonan = $this->surveyorController->getPermohonanJaminanId($id, $documentId, $jaminanId); + + if ($permohonan->status == 'proses-laporan') { + return redirect()->back()->with('error', 'Masih dalam proses laporan'); + } + $basicData = $this->surveyorController->getCommonData(); $noLpSederhana = $this->generateNoLaporan($permohonan, $documentId, 'lpj'); @@ -218,6 +223,11 @@ class PenilaiController extends Controller $jaminanId = $request->query('jaminanId'); $permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId); + + if ($permohonan->status == 'proses-laporan') { + return redirect()->back()->with('error', 'Masih dalam proses laporan'); + } + $nomorLaporan = $this->generateNoLaporan($permohonan, $documentId, 'resume'); $inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); $noLpresume = $this->generateNoLaporan($permohonan, $documentId, 'resume'); @@ -253,6 +263,9 @@ class PenilaiController extends Controller $data = $this->getDataPermohonanWithPenilaiAndInspeksi($req['permohonanId'], $req['documentId'], $req['jaminanId']); $permohonan = $data['permohonan']; + if ($permohonan->status == 'proses-laporan') { + return redirect()->back()->with('error', 'Masih dalam proses laporan'); + } $nomorLaporan = $this->generateNoLaporan($permohonan, $req['documentId'], 'memo'); $inspeksi = Inspeksi::where('permohonan_id', $req['permohonanId'])->where('dokument_id', $req['documentId'])->first(); @@ -388,10 +401,15 @@ class PenilaiController extends Controller { $permohonanId = $request->query('permohonanId'); - $documentId = $request->query('documentId'); + $documentId = $request->query('dokument'); $jaminanId = $request->query('jaminanId'); $provinces = Province::all(); $permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId); + + if ($permohonan->status == 'proses-laporan') { + return redirect()->back()->with('error', 'Masih dalam proses laporan'); + } + $nomorLaporan = $this->generateNoLaporan($permohonan, $documentId, 'rap'); $basicData = $this->surveyorController->getCommonData(); $inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); @@ -470,6 +488,9 @@ class PenilaiController extends Controller $jaminanId = $request->query('jaminanId'); $provinces = Province::all(); $permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId); + if ($permohonan->status == 'proses-laporan') { + return redirect()->back()->with('error', 'Masih dalam proses laporan'); + } $nomorLaporan = $this->generateNoLaporan($permohonan, $documentId, 'call-report'); $basicData = $this->surveyorController->getCommonData(); $inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); diff --git a/resources/views/component/form-penilai.blade.php b/resources/views/component/form-penilai.blade.php index 12b2cee..946ca13 100644 --- a/resources/views/component/form-penilai.blade.php +++ b/resources/views/component/form-penilai.blade.php @@ -36,7 +36,7 @@ Informasi dan pembanding
- Edit Data Pembanding @@ -553,7 +553,7 @@ const urlParams = new URLSearchParams(window.location.search); const permohonanId = {{ $permohonan->id }}; - const documentId = urlParams.get('documentId'); + const documentId = urlParams.get('dokument'); const inspeksiId = urlParams.get('inspeksiId'); const requestUrl = diff --git a/resources/views/penilai/components/lpj-sederhana-standar.blade.php b/resources/views/penilai/components/lpj-sederhana-standar.blade.php index 1008b5f..e210da6 100644 --- a/resources/views/penilai/components/lpj-sederhana-standar.blade.php +++ b/resources/views/penilai/components/lpj-sederhana-standar.blade.php @@ -23,7 +23,7 @@ @include('lpj::assetsku.includenya') - + @include('lpj::component.form-penilai') @@ -52,15 +52,15 @@ @endif @if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal', 'administrator'])) + href="{{ route('penilai.lampiran') }}?permohonanId={{ $permohonan->id }}&documentId={{ request('dokument') }}&jaminanId={{ request('jaminanId') }}&statusLpj=1"> Lampiran Foto dan Dokumen - Cetak Hasil Inspeksi + onclick="checkLaporan('{{ $permohonan->id }}', '{{ request('dokument') }}', {{ request('jaminanId') }}, 0)"> Cetak Laporan @endif diff --git a/resources/views/penilai/show.blade.php b/resources/views/penilai/show.blade.php index 853834f..705c3cb 100644 --- a/resources/views/penilai/show.blade.php +++ b/resources/views/penilai/show.blade.php @@ -493,11 +493,11 @@ if (data.status === 'standar') { showLoadingSwal('Tunggu ...'); window.location.href = - `{{ route('penilai.standar', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.standar', $permohonan->id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; } else if (data.status === 'sederhana') { showLoadingSwal('Tunggu ...'); window.location.href = - `{{ route('penilai.sederhana', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.sederhana', $permohonan->id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; } } else { if (fasilitasKredit.toUpperCase() === 'KPR KERJASAMA') { @@ -556,10 +556,10 @@ if (data.success) { if (type === 'standar') { window.location.href = - `{{ route('penilai.standar', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.standar', $permohonan->id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; } else if (type === 'sederhana') { window.location.href = - `{{ route('penilai.sederhana', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.sederhana', $permohonan->id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; } } }); @@ -640,7 +640,7 @@ function rap(permohonanId, documentId, jaminanId) { showLoadingSwal('Tunggu ...'); window.location.href = - `{{ route('penilai.rap') }}?permohonanId=${permohonanId}&documentId=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.rap') }}?permohonanId=${permohonanId}&dokument=${documentId}&jaminanId=${jaminanId}`; } From 6ddf78d2b0a55db5ad2b23617bdcb716330fc8e7 Mon Sep 17 00:00:00 2001 From: majid Date: Wed, 21 May 2025 10:30:18 +0700 Subject: [PATCH 13/20] fix: update dokumentId and fix save penilai rap --- app/Http/Controllers/PenilaiController.php | 23 ++++----------- app/Http/Controllers/SurveyorController.php | 16 +++++----- app/Services/SaveFormInspesksiService.php | 2 +- .../lpj-sederhana-standar.blade.php | 8 ++--- .../penilai/components/rap-penilai.blade.php | 29 +++++++++++-------- resources/views/penilai/show.blade.php | 10 +++---- .../surveyor/components/card-tambah.blade.php | 12 ++++---- .../components/data-pembanding.blade.php | 2 +- .../views/surveyor/components/foto.blade.php | 10 +++---- .../surveyor/components/informasi.blade.php | 2 +- .../surveyor/components/inspeksi.blade.php | 2 +- .../components/pembanding-kendaraan.blade.php | 2 +- .../pembanding-tanah-bangunan-unit.blade.php | 2 +- 13 files changed, 57 insertions(+), 63 deletions(-) diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index 3f21f73..6a148cc 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -82,7 +82,7 @@ class PenilaiController extends Controller public function sederhana(Request $request, $id) { - $documentId = $request->query('dokument'); + $documentId = $request->query('documentId'); $jaminanId = $request->query('jaminanId'); $permohonan = $this->surveyorController->getPermohonanJaminanId($id, $documentId, $jaminanId); $basicData = $this->surveyorController->getCommonData(); @@ -148,7 +148,7 @@ class PenilaiController extends Controller public function standar(Request $request, $id) { - $documentId = $request->query('dokument'); + $documentId = $request->query('documentId'); $jaminanId = $request->query('jaminanId'); $permohonan = $this->surveyorController->getPermohonanJaminanId($id, $documentId, $jaminanId); @@ -401,7 +401,7 @@ class PenilaiController extends Controller { $permohonanId = $request->query('permohonanId'); - $documentId = $request->query('dokument'); + $documentId = $request->query('documentId'); $jaminanId = $request->query('jaminanId'); $provinces = Province::all(); $permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId); @@ -1153,20 +1153,9 @@ class PenilaiController extends Controller { DB::beginTransaction(); try { - $formRequest = new FormSurveyorRequest(); - $formRequest->setContainer(app()); - $formRequest->initialize( - $request->all(), - $request->query->all(), - $request->attributes->all(), - $request->cookies->all(), - $request->files->all(), - $request->server->all(), - $request->getContent() - ); - $validated = $formRequest->validateResolved(); - $result = $this->surveyorController->store($formRequest); + $validatedData = $request->all(); + $result = $this->inspeksiService->storeInspeksi($validatedData, $request->input('type'), $request); $data = [ 'kepada' => $request->input('kepada'), @@ -1431,7 +1420,7 @@ class PenilaiController extends Controller } - // pengunaan request query by id permohonan, dokument, jaminan , inspeksi + // pengunaan request query by id permohonan, documentId, jaminan , inspeksi protected function getRequestQueryId(Request $request) { return [ diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index 137b986..605f99d 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -1556,11 +1556,11 @@ class SurveyorController extends Controller { $validated = $request->validate([ - 'dokument' => 'required', + 'documentId' => 'required', 'jenis_jaminan' => 'required' ]); - $dokumentId = $validated['dokument']; + $dokumentId = $validated['documentId']; $jaminanId = $validated['jenis_jaminan']; $permohonan = $this->getPermohonanJaminanId($id, $dokumentId, $jaminanId); @@ -1644,11 +1644,11 @@ class SurveyorController extends Controller public function denah(Request $request, $id) { $validated = $request->validate([ - 'dokument' => 'required', + 'documentId' => 'required', 'jenis_jaminan' => 'required' ]); - $dokumentId = $validated['dokument']; + $dokumentId = $validated['documentId']; $jaminanId = $validated['jenis_jaminan']; $permohonan = $this->getPermohonanJaminanId($id, $dokumentId, $jaminanId); @@ -1672,11 +1672,11 @@ class SurveyorController extends Controller public function foto(Request $request, $id) { $validated = $request->validate([ - 'dokument' => 'required', + 'documentId' => 'required', 'jenis_jaminan' => 'required' ]); - $dokumentId = $validated['dokument']; + $dokumentId = $validated['documentId']; $jaminanId = $validated['jenis_jaminan']; $fotoObjekJaminan = FotoObjekJaminan::all(); @@ -1707,11 +1707,11 @@ class SurveyorController extends Controller // Ambil data permohonan dengan eager loading $validated = $request->validate([ - 'dokument' => 'required', + 'documentId' => 'required', 'jenis_jaminan' => 'required' ]); - $dokumentId = $validated['dokument']; + $dokumentId = $validated['documentId']; $jaminanId = $validated['jenis_jaminan']; $permohonan = $this->getPermohonanJaminanId($id, $dokumentId, $jaminanId); diff --git a/app/Services/SaveFormInspesksiService.php b/app/Services/SaveFormInspesksiService.php index cc88461..1abc932 100644 --- a/app/Services/SaveFormInspesksiService.php +++ b/app/Services/SaveFormInspesksiService.php @@ -122,7 +122,7 @@ class SaveFormInspesksiService } if ($hasFactaData) { - $rules = array_merge($rules, $this->getFactData($data, $request)); + $rules = array_merge($rules, $this->getFactData($data, $request, $inspeksi)); } return $rules; diff --git a/resources/views/penilai/components/lpj-sederhana-standar.blade.php b/resources/views/penilai/components/lpj-sederhana-standar.blade.php index e210da6..b928fa3 100644 --- a/resources/views/penilai/components/lpj-sederhana-standar.blade.php +++ b/resources/views/penilai/components/lpj-sederhana-standar.blade.php @@ -23,7 +23,7 @@ @include('lpj::assetsku.includenya') - + @include('lpj::component.form-penilai') @@ -52,15 +52,15 @@ @endif @if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal', 'administrator'])) + href="{{ route('penilai.lampiran') }}?permohonanId={{ $permohonan->id }}&documentId={{ request('documentId') }}&jaminanId={{ request('jaminanId') }}&statusLpj=1"> Lampiran Foto dan Dokumen - Cetak Hasil Inspeksi + onclick="checkLaporan('{{ $permohonan->id }}', '{{ request('documentId') }}', {{ request('jaminanId') }}, 0)"> Cetak Laporan @endif diff --git a/resources/views/penilai/components/rap-penilai.blade.php b/resources/views/penilai/components/rap-penilai.blade.php index be5966a..2f684f7 100644 --- a/resources/views/penilai/components/rap-penilai.blade.php +++ b/resources/views/penilai/components/rap-penilai.blade.php @@ -14,14 +14,16 @@ @include('lpj::assetsku.includenya') - @include('lpj::surveyor.components.header') - @include('lpj::surveyor.components.rap') -

RAP

+ + Back + + +
@@ -64,24 +66,27 @@
+ @include('lpj::surveyor.components.header') + @include('lpj::surveyor.components.rap')
@if (Auth::user()->hasAnyRole(['senior-officer', 'surveyor', 'administrator'])) - +
+ @endif @if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal', 'administrator'])) Lampiran Foto dan Dokumen - + Cetak Hasil Inspeksi id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.standar', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; } else if (data.status === 'sederhana') { showLoadingSwal('Tunggu ...'); window.location.href = - `{{ route('penilai.sederhana', $permohonan->id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.sederhana', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; } } else { if (fasilitasKredit.toUpperCase() === 'KPR KERJASAMA') { @@ -556,10 +556,10 @@ if (data.success) { if (type === 'standar') { window.location.href = - `{{ route('penilai.standar', $permohonan->id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.standar', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; } else if (type === 'sederhana') { window.location.href = - `{{ route('penilai.sederhana', $permohonan->id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.sederhana', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; } } }); @@ -640,7 +640,7 @@ function rap(permohonanId, documentId, jaminanId) { showLoadingSwal('Tunggu ...'); window.location.href = - `{{ route('penilai.rap') }}?permohonanId=${permohonanId}&dokument=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.rap') }}?permohonanId=${permohonanId}&documentId=${documentId}&jaminanId=${jaminanId}`; } diff --git a/resources/views/surveyor/components/card-tambah.blade.php b/resources/views/surveyor/components/card-tambah.blade.php index 6116d9d..8f5d5ba 100644 --- a/resources/views/surveyor/components/card-tambah.blade.php +++ b/resources/views/surveyor/components/card-tambah.blade.php @@ -14,7 +14,7 @@ 'url' => route('surveyor.inspeksi', [ 'id' => $permohonan->id, - ]) . "?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}", + ]) . "?documentId={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}", 'show' => true, 'icon' => !empty($currentInspeksi['data_form']), ], @@ -27,7 +27,7 @@ 'url' => route('surveyor.denah', [ 'id' => $permohonan->id, - ]) . "?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}", + ]) . "?documentId={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}", 'show' => true, 'icon' => !empty($currentInspeksi['denah_form']), ]; @@ -39,7 +39,7 @@ 'url' => route('surveyor.foto', [ 'id' => $permohonan->id, - ]) . "?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}", + ]) . "?documentId={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}", 'show' => true, 'icon' => !empty($currentInspeksi['foto_form']), ], @@ -48,7 +48,7 @@ 'url' => route('surveyor.data-pembanding', [ 'id' => $permohonan->id, - ]) . "?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}", + ]) . "?documentId={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}", 'show' => true, 'icon' => !empty($currentInspeksi['data_pembanding']), ], @@ -84,7 +84,7 @@ @@ -109,7 +109,7 @@ diff --git a/resources/views/surveyor/components/data-pembanding.blade.php b/resources/views/surveyor/components/data-pembanding.blade.php index 375f94f..72c9888 100644 --- a/resources/views/surveyor/components/data-pembanding.blade.php +++ b/resources/views/surveyor/components/data-pembanding.blade.php @@ -20,7 +20,7 @@ @csrf - +
diff --git a/resources/views/surveyor/components/foto.blade.php b/resources/views/surveyor/components/foto.blade.php index 571ca91..61ee117 100644 --- a/resources/views/surveyor/components/foto.blade.php +++ b/resources/views/surveyor/components/foto.blade.php @@ -171,7 +171,7 @@ - + @@ -303,7 +303,7 @@ params: { permohonan_id: {{ $permohonan->id ?? 0 }}, - dokument_id: '{{ request('dokument') ?? '' }}', + dokument_id: '{{ request('documentId') ?? '' }}', param_name: paramName, nomor_registrasi: '{{ $permohonan->nomor_registrasi ?? '' }}', }, @@ -531,7 +531,7 @@ method: 'GET', data: { permohonan_id: {{ $permohonan->id ?? 0 }}, - dokument_id: '{{ request('dokument') ?? '' }}', + dokument_id: '{{ request('documentId') ?? '' }}', param_name: paramName }, headers: { @@ -881,7 +881,7 @@ data: { path: response.path, permohonan_id: {{ $permohonan->id ?? 0 }}, - dokument_id: '{{ request('dokument') ?? '' }}', + dokument_id: '{{ request('documentId') ?? '' }}', param_name: response.param_name }, headers: { @@ -916,7 +916,7 @@ }, data: { permohonan_id: {{ $permohonan->id }}, - dokument_id: '{{ request('dokument') ?? '' }}', + dokument_id: '{{ request('documentId') ?? '' }}', name: $('#editDataName').val(), description: $('#editDataDescription').val(), category: $('#editDataCategory').val(), diff --git a/resources/views/surveyor/components/informasi.blade.php b/resources/views/surveyor/components/informasi.blade.php index b3a7104..22b766c 100644 --- a/resources/views/surveyor/components/informasi.blade.php +++ b/resources/views/surveyor/components/informasi.blade.php @@ -342,7 +342,7 @@ // Buat FormData untuk mengirim file const formData = new FormData(); - const dokument = "{{ request('dokument') }}"; + const dokument = "{{ request('documentId') }}"; const permohonan = "{{ $permohonan->id }}"; formData.append('file', file); formData.append('dokument_id', dokument); diff --git a/resources/views/surveyor/components/inspeksi.blade.php b/resources/views/surveyor/components/inspeksi.blade.php index ddc0603..7ec3ab1 100644 --- a/resources/views/surveyor/components/inspeksi.blade.php +++ b/resources/views/surveyor/components/inspeksi.blade.php @@ -70,7 +70,7 @@ Simpan - Cetak Form Inspeksi diff --git a/resources/views/surveyor/components/pembanding-kendaraan.blade.php b/resources/views/surveyor/components/pembanding-kendaraan.blade.php index fd51c94..40987c9 100644 --- a/resources/views/surveyor/components/pembanding-kendaraan.blade.php +++ b/resources/views/surveyor/components/pembanding-kendaraan.blade.php @@ -1,7 +1,7 @@

Data Pembanding

- @if (Request::is('penilai/show-data-pembanding/*/edit') && request()->has('dokument') && request()->has('jenis_jaminan')) + @if (Request::is('penilai/show-data-pembanding/*/edit') && request()->has('documentId') && request()->has('jenis_jaminan')) Back diff --git a/resources/views/surveyor/components/pembanding-tanah-bangunan-unit.blade.php b/resources/views/surveyor/components/pembanding-tanah-bangunan-unit.blade.php index 6b2eabb..0daa270 100644 --- a/resources/views/surveyor/components/pembanding-tanah-bangunan-unit.blade.php +++ b/resources/views/surveyor/components/pembanding-tanah-bangunan-unit.blade.php @@ -1,7 +1,7 @@

Data Pembanding

- @if (Request::is('penilai/show-data-pembanding/*/edit') && request()->has('dokument') && request()->has('jenis_jaminan')) + @if (Request::is('penilai/show-data-pembanding/*/edit') && request()->has('documentId') && request()->has('jenis_jaminan')) Back From 320dba9d9c63968a83f2cd520c5d24d78cf92c5d Mon Sep 17 00:00:00 2001 From: majid Date: Wed, 21 May 2025 10:57:25 +0700 Subject: [PATCH 14/20] fix navigation buttons back, in file memo, rap-penilai, resume, sla, show, and header --- resources/views/penilai/components/memo.blade.php | 2 +- resources/views/penilai/components/rap-penilai.blade.php | 3 --- resources/views/penilai/components/resume.blade.php | 2 +- resources/views/penilaian/otorisator/show.blade.php | 4 ++-- resources/views/penilaian/otorisator/sla.blade.php | 2 +- resources/views/surveyor/components/header.blade.php | 8 +++++--- 6 files changed, 10 insertions(+), 11 deletions(-) diff --git a/resources/views/penilai/components/memo.blade.php b/resources/views/penilai/components/memo.blade.php index 4bf608d..d24c23e 100644 --- a/resources/views/penilai/components/memo.blade.php +++ b/resources/views/penilai/components/memo.blade.php @@ -19,7 +19,7 @@ @endphp @if (Auth::user()->hasAnyRole(['administrator', 'senior-officer', 'EO Appraisal', 'DD Appraisal']) && Route::currentRouteName('otorisator.show')) - Back diff --git a/resources/views/penilai/components/rap-penilai.blade.php b/resources/views/penilai/components/rap-penilai.blade.php index 2f684f7..e77ee29 100644 --- a/resources/views/penilai/components/rap-penilai.blade.php +++ b/resources/views/penilai/components/rap-penilai.blade.php @@ -19,9 +19,6 @@

RAP

- - Back -
diff --git a/resources/views/penilai/components/resume.blade.php b/resources/views/penilai/components/resume.blade.php index 033dbf9..37cfd69 100644 --- a/resources/views/penilai/components/resume.blade.php +++ b/resources/views/penilai/components/resume.blade.php @@ -57,7 +57,7 @@ @if (Auth::user()->hasAnyRole(['administrator', 'senior-officer', 'EO Appraisal', 'DD Appraisal']) && Route::currentRouteName('otorisator.show')) - Back diff --git a/resources/views/penilaian/otorisator/show.blade.php b/resources/views/penilaian/otorisator/show.blade.php index cf027b1..ca79239 100644 --- a/resources/views/penilaian/otorisator/show.blade.php +++ b/resources/views/penilaian/otorisator/show.blade.php @@ -159,7 +159,7 @@ @if ($dataHeader == 'pelaporan') + href="{{ route('otorisator.view-laporan') }}?permohonanId={{ $permohonan->id }}&documentId={{ $documentId }}&jaminanId={{ $jenisJaminanId }}&statusLpj={{ true }}&header={{ $header ?? '' }}"> Lihat Laporan @if (Auth::user()->hasAnyRole(['administrator', 'senior-officer']) && $permohonan->approval_so == 0) @@ -203,7 +203,7 @@ + href="{{ route('otorisator.view-laporan') }}?permohonanId={{ $permohonan->id }}&documentId={{ $documentId }}&jaminanId={{ $jenisJaminanId }}&statusLpj={{ true }}&header={{ $header ?? '' }}"> Lihat resume diff --git a/resources/views/penilaian/otorisator/sla.blade.php b/resources/views/penilaian/otorisator/sla.blade.php index e119b58..eabe6f5 100644 --- a/resources/views/penilaian/otorisator/sla.blade.php +++ b/resources/views/penilaian/otorisator/sla.blade.php @@ -161,7 +161,7 @@ @if ($dataHeader == 'pelaporan') + href="{{ route('otorisator.view-laporan') }}?permohonanId={{ $permohonan->id }}&documentId={{ $documentId }}&inspeksiId={{ $inspeksiId }}&jaminanId={{ $jenisJaminanId }}&statusLpj={{ true }}&header={{ $header }}"> Lihat Laporan @endif diff --git a/resources/views/surveyor/components/header.blade.php b/resources/views/surveyor/components/header.blade.php index 032bbb1..067a0ef 100644 --- a/resources/views/surveyor/components/header.blade.php +++ b/resources/views/surveyor/components/header.blade.php @@ -9,6 +9,8 @@
@php use Illuminate\Support\Facades\Route; + + // dd(request('header')); @endphp @if (isset($id)) @@ -16,13 +18,13 @@ @else @if (Auth::user()->hasAnyRole(['administrator', 'senior-officer', 'EO Appraisal', 'DD Appraisal']) && - Request::is('otorisator/show/*/Pelaporan')) - Back @elseif (Auth::user()->hasAnyRole(['administrator', 'surveyor', 'penilai'])) - @if (Request::is('surveyor/inspeksi/*/create') && request()->has('dokument') && request()->has('jenis_jaminan')) + @if (Request::is('surveyor/inspeksi/*/create') && request()->has('documentId') && request()->has('jenis_jaminan')) Back From 8fbc02bfffba9cb89c9254878de6b870575d01a7 Mon Sep 17 00:00:00 2001 From: majid Date: Wed, 21 May 2025 10:30:18 +0700 Subject: [PATCH 15/20] fix: update dokumentId and fix save penilai rap --- app/Http/Controllers/PenilaiController.php | 23 ++++----------- app/Http/Controllers/SurveyorController.php | 16 +++++----- app/Services/SaveFormInspesksiService.php | 2 +- .../lpj-sederhana-standar.blade.php | 8 ++--- .../penilai/components/rap-penilai.blade.php | 29 +++++++++++-------- resources/views/penilai/show.blade.php | 10 +++---- .../surveyor/components/card-tambah.blade.php | 12 ++++---- .../components/data-pembanding.blade.php | 2 +- .../views/surveyor/components/foto.blade.php | 10 +++---- .../surveyor/components/informasi.blade.php | 2 +- .../surveyor/components/inspeksi.blade.php | 2 +- .../components/pembanding-kendaraan.blade.php | 2 +- .../pembanding-tanah-bangunan-unit.blade.php | 2 +- 13 files changed, 57 insertions(+), 63 deletions(-) diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index 3f21f73..6a148cc 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -82,7 +82,7 @@ class PenilaiController extends Controller public function sederhana(Request $request, $id) { - $documentId = $request->query('dokument'); + $documentId = $request->query('documentId'); $jaminanId = $request->query('jaminanId'); $permohonan = $this->surveyorController->getPermohonanJaminanId($id, $documentId, $jaminanId); $basicData = $this->surveyorController->getCommonData(); @@ -148,7 +148,7 @@ class PenilaiController extends Controller public function standar(Request $request, $id) { - $documentId = $request->query('dokument'); + $documentId = $request->query('documentId'); $jaminanId = $request->query('jaminanId'); $permohonan = $this->surveyorController->getPermohonanJaminanId($id, $documentId, $jaminanId); @@ -401,7 +401,7 @@ class PenilaiController extends Controller { $permohonanId = $request->query('permohonanId'); - $documentId = $request->query('dokument'); + $documentId = $request->query('documentId'); $jaminanId = $request->query('jaminanId'); $provinces = Province::all(); $permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId); @@ -1153,20 +1153,9 @@ class PenilaiController extends Controller { DB::beginTransaction(); try { - $formRequest = new FormSurveyorRequest(); - $formRequest->setContainer(app()); - $formRequest->initialize( - $request->all(), - $request->query->all(), - $request->attributes->all(), - $request->cookies->all(), - $request->files->all(), - $request->server->all(), - $request->getContent() - ); - $validated = $formRequest->validateResolved(); - $result = $this->surveyorController->store($formRequest); + $validatedData = $request->all(); + $result = $this->inspeksiService->storeInspeksi($validatedData, $request->input('type'), $request); $data = [ 'kepada' => $request->input('kepada'), @@ -1431,7 +1420,7 @@ class PenilaiController extends Controller } - // pengunaan request query by id permohonan, dokument, jaminan , inspeksi + // pengunaan request query by id permohonan, documentId, jaminan , inspeksi protected function getRequestQueryId(Request $request) { return [ diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index 137b986..605f99d 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -1556,11 +1556,11 @@ class SurveyorController extends Controller { $validated = $request->validate([ - 'dokument' => 'required', + 'documentId' => 'required', 'jenis_jaminan' => 'required' ]); - $dokumentId = $validated['dokument']; + $dokumentId = $validated['documentId']; $jaminanId = $validated['jenis_jaminan']; $permohonan = $this->getPermohonanJaminanId($id, $dokumentId, $jaminanId); @@ -1644,11 +1644,11 @@ class SurveyorController extends Controller public function denah(Request $request, $id) { $validated = $request->validate([ - 'dokument' => 'required', + 'documentId' => 'required', 'jenis_jaminan' => 'required' ]); - $dokumentId = $validated['dokument']; + $dokumentId = $validated['documentId']; $jaminanId = $validated['jenis_jaminan']; $permohonan = $this->getPermohonanJaminanId($id, $dokumentId, $jaminanId); @@ -1672,11 +1672,11 @@ class SurveyorController extends Controller public function foto(Request $request, $id) { $validated = $request->validate([ - 'dokument' => 'required', + 'documentId' => 'required', 'jenis_jaminan' => 'required' ]); - $dokumentId = $validated['dokument']; + $dokumentId = $validated['documentId']; $jaminanId = $validated['jenis_jaminan']; $fotoObjekJaminan = FotoObjekJaminan::all(); @@ -1707,11 +1707,11 @@ class SurveyorController extends Controller // Ambil data permohonan dengan eager loading $validated = $request->validate([ - 'dokument' => 'required', + 'documentId' => 'required', 'jenis_jaminan' => 'required' ]); - $dokumentId = $validated['dokument']; + $dokumentId = $validated['documentId']; $jaminanId = $validated['jenis_jaminan']; $permohonan = $this->getPermohonanJaminanId($id, $dokumentId, $jaminanId); diff --git a/app/Services/SaveFormInspesksiService.php b/app/Services/SaveFormInspesksiService.php index cc88461..1abc932 100644 --- a/app/Services/SaveFormInspesksiService.php +++ b/app/Services/SaveFormInspesksiService.php @@ -122,7 +122,7 @@ class SaveFormInspesksiService } if ($hasFactaData) { - $rules = array_merge($rules, $this->getFactData($data, $request)); + $rules = array_merge($rules, $this->getFactData($data, $request, $inspeksi)); } return $rules; diff --git a/resources/views/penilai/components/lpj-sederhana-standar.blade.php b/resources/views/penilai/components/lpj-sederhana-standar.blade.php index e210da6..b928fa3 100644 --- a/resources/views/penilai/components/lpj-sederhana-standar.blade.php +++ b/resources/views/penilai/components/lpj-sederhana-standar.blade.php @@ -23,7 +23,7 @@ @include('lpj::assetsku.includenya') - + @include('lpj::component.form-penilai') @@ -52,15 +52,15 @@ @endif @if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal', 'administrator'])) + href="{{ route('penilai.lampiran') }}?permohonanId={{ $permohonan->id }}&documentId={{ request('documentId') }}&jaminanId={{ request('jaminanId') }}&statusLpj=1"> Lampiran Foto dan Dokumen - Cetak Hasil Inspeksi + onclick="checkLaporan('{{ $permohonan->id }}', '{{ request('documentId') }}', {{ request('jaminanId') }}, 0)"> Cetak Laporan @endif diff --git a/resources/views/penilai/components/rap-penilai.blade.php b/resources/views/penilai/components/rap-penilai.blade.php index be5966a..2f684f7 100644 --- a/resources/views/penilai/components/rap-penilai.blade.php +++ b/resources/views/penilai/components/rap-penilai.blade.php @@ -14,14 +14,16 @@ @include('lpj::assetsku.includenya') - @include('lpj::surveyor.components.header') - @include('lpj::surveyor.components.rap') -

RAP

+ + Back + + +
@@ -64,24 +66,27 @@
+ @include('lpj::surveyor.components.header') + @include('lpj::surveyor.components.rap')
@if (Auth::user()->hasAnyRole(['senior-officer', 'surveyor', 'administrator'])) - +
+ @endif @if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal', 'administrator'])) Lampiran Foto dan Dokumen - + Cetak Hasil Inspeksi id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.standar', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; } else if (data.status === 'sederhana') { showLoadingSwal('Tunggu ...'); window.location.href = - `{{ route('penilai.sederhana', $permohonan->id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.sederhana', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; } } else { if (fasilitasKredit.toUpperCase() === 'KPR KERJASAMA') { @@ -556,10 +556,10 @@ if (data.success) { if (type === 'standar') { window.location.href = - `{{ route('penilai.standar', $permohonan->id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.standar', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; } else if (type === 'sederhana') { window.location.href = - `{{ route('penilai.sederhana', $permohonan->id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.sederhana', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; } } }); @@ -640,7 +640,7 @@ function rap(permohonanId, documentId, jaminanId) { showLoadingSwal('Tunggu ...'); window.location.href = - `{{ route('penilai.rap') }}?permohonanId=${permohonanId}&dokument=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.rap') }}?permohonanId=${permohonanId}&documentId=${documentId}&jaminanId=${jaminanId}`; } diff --git a/resources/views/surveyor/components/card-tambah.blade.php b/resources/views/surveyor/components/card-tambah.blade.php index 6116d9d..8f5d5ba 100644 --- a/resources/views/surveyor/components/card-tambah.blade.php +++ b/resources/views/surveyor/components/card-tambah.blade.php @@ -14,7 +14,7 @@ 'url' => route('surveyor.inspeksi', [ 'id' => $permohonan->id, - ]) . "?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}", + ]) . "?documentId={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}", 'show' => true, 'icon' => !empty($currentInspeksi['data_form']), ], @@ -27,7 +27,7 @@ 'url' => route('surveyor.denah', [ 'id' => $permohonan->id, - ]) . "?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}", + ]) . "?documentId={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}", 'show' => true, 'icon' => !empty($currentInspeksi['denah_form']), ]; @@ -39,7 +39,7 @@ 'url' => route('surveyor.foto', [ 'id' => $permohonan->id, - ]) . "?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}", + ]) . "?documentId={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}", 'show' => true, 'icon' => !empty($currentInspeksi['foto_form']), ], @@ -48,7 +48,7 @@ 'url' => route('surveyor.data-pembanding', [ 'id' => $permohonan->id, - ]) . "?dokument={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}", + ]) . "?documentId={$jaminanId}&jenis_jaminan={$dokumen->jenisJaminan->id}", 'show' => true, 'icon' => !empty($currentInspeksi['data_pembanding']), ], @@ -84,7 +84,7 @@ @@ -109,7 +109,7 @@ diff --git a/resources/views/surveyor/components/data-pembanding.blade.php b/resources/views/surveyor/components/data-pembanding.blade.php index 375f94f..72c9888 100644 --- a/resources/views/surveyor/components/data-pembanding.blade.php +++ b/resources/views/surveyor/components/data-pembanding.blade.php @@ -20,7 +20,7 @@ @csrf - +
diff --git a/resources/views/surveyor/components/foto.blade.php b/resources/views/surveyor/components/foto.blade.php index 571ca91..61ee117 100644 --- a/resources/views/surveyor/components/foto.blade.php +++ b/resources/views/surveyor/components/foto.blade.php @@ -171,7 +171,7 @@ - + @@ -303,7 +303,7 @@ params: { permohonan_id: {{ $permohonan->id ?? 0 }}, - dokument_id: '{{ request('dokument') ?? '' }}', + dokument_id: '{{ request('documentId') ?? '' }}', param_name: paramName, nomor_registrasi: '{{ $permohonan->nomor_registrasi ?? '' }}', }, @@ -531,7 +531,7 @@ method: 'GET', data: { permohonan_id: {{ $permohonan->id ?? 0 }}, - dokument_id: '{{ request('dokument') ?? '' }}', + dokument_id: '{{ request('documentId') ?? '' }}', param_name: paramName }, headers: { @@ -881,7 +881,7 @@ data: { path: response.path, permohonan_id: {{ $permohonan->id ?? 0 }}, - dokument_id: '{{ request('dokument') ?? '' }}', + dokument_id: '{{ request('documentId') ?? '' }}', param_name: response.param_name }, headers: { @@ -916,7 +916,7 @@ }, data: { permohonan_id: {{ $permohonan->id }}, - dokument_id: '{{ request('dokument') ?? '' }}', + dokument_id: '{{ request('documentId') ?? '' }}', name: $('#editDataName').val(), description: $('#editDataDescription').val(), category: $('#editDataCategory').val(), diff --git a/resources/views/surveyor/components/informasi.blade.php b/resources/views/surveyor/components/informasi.blade.php index b3a7104..22b766c 100644 --- a/resources/views/surveyor/components/informasi.blade.php +++ b/resources/views/surveyor/components/informasi.blade.php @@ -342,7 +342,7 @@ // Buat FormData untuk mengirim file const formData = new FormData(); - const dokument = "{{ request('dokument') }}"; + const dokument = "{{ request('documentId') }}"; const permohonan = "{{ $permohonan->id }}"; formData.append('file', file); formData.append('dokument_id', dokument); diff --git a/resources/views/surveyor/components/inspeksi.blade.php b/resources/views/surveyor/components/inspeksi.blade.php index ddc0603..7ec3ab1 100644 --- a/resources/views/surveyor/components/inspeksi.blade.php +++ b/resources/views/surveyor/components/inspeksi.blade.php @@ -70,7 +70,7 @@ Simpan - Cetak Form Inspeksi diff --git a/resources/views/surveyor/components/pembanding-kendaraan.blade.php b/resources/views/surveyor/components/pembanding-kendaraan.blade.php index fd51c94..40987c9 100644 --- a/resources/views/surveyor/components/pembanding-kendaraan.blade.php +++ b/resources/views/surveyor/components/pembanding-kendaraan.blade.php @@ -1,7 +1,7 @@

Data Pembanding

- @if (Request::is('penilai/show-data-pembanding/*/edit') && request()->has('dokument') && request()->has('jenis_jaminan')) + @if (Request::is('penilai/show-data-pembanding/*/edit') && request()->has('documentId') && request()->has('jenis_jaminan')) Back diff --git a/resources/views/surveyor/components/pembanding-tanah-bangunan-unit.blade.php b/resources/views/surveyor/components/pembanding-tanah-bangunan-unit.blade.php index 6b2eabb..0daa270 100644 --- a/resources/views/surveyor/components/pembanding-tanah-bangunan-unit.blade.php +++ b/resources/views/surveyor/components/pembanding-tanah-bangunan-unit.blade.php @@ -1,7 +1,7 @@

Data Pembanding

- @if (Request::is('penilai/show-data-pembanding/*/edit') && request()->has('dokument') && request()->has('jenis_jaminan')) + @if (Request::is('penilai/show-data-pembanding/*/edit') && request()->has('documentId') && request()->has('jenis_jaminan')) Back From 7aae88ce8544c885c58aaae94e01883de46f0bf2 Mon Sep 17 00:00:00 2001 From: majid Date: Wed, 21 May 2025 10:57:25 +0700 Subject: [PATCH 16/20] fix navigation buttons back, in file memo, rap-penilai, resume, sla, show, and header --- resources/views/penilai/components/memo.blade.php | 2 +- resources/views/penilai/components/rap-penilai.blade.php | 3 --- resources/views/penilai/components/resume.blade.php | 2 +- resources/views/penilaian/otorisator/show.blade.php | 4 ++-- resources/views/penilaian/otorisator/sla.blade.php | 2 +- resources/views/surveyor/components/header.blade.php | 8 +++++--- 6 files changed, 10 insertions(+), 11 deletions(-) diff --git a/resources/views/penilai/components/memo.blade.php b/resources/views/penilai/components/memo.blade.php index 4bf608d..d24c23e 100644 --- a/resources/views/penilai/components/memo.blade.php +++ b/resources/views/penilai/components/memo.blade.php @@ -19,7 +19,7 @@ @endphp @if (Auth::user()->hasAnyRole(['administrator', 'senior-officer', 'EO Appraisal', 'DD Appraisal']) && Route::currentRouteName('otorisator.show')) - Back diff --git a/resources/views/penilai/components/rap-penilai.blade.php b/resources/views/penilai/components/rap-penilai.blade.php index 2f684f7..e77ee29 100644 --- a/resources/views/penilai/components/rap-penilai.blade.php +++ b/resources/views/penilai/components/rap-penilai.blade.php @@ -19,9 +19,6 @@

RAP

- - Back -
diff --git a/resources/views/penilai/components/resume.blade.php b/resources/views/penilai/components/resume.blade.php index 033dbf9..37cfd69 100644 --- a/resources/views/penilai/components/resume.blade.php +++ b/resources/views/penilai/components/resume.blade.php @@ -57,7 +57,7 @@ @if (Auth::user()->hasAnyRole(['administrator', 'senior-officer', 'EO Appraisal', 'DD Appraisal']) && Route::currentRouteName('otorisator.show')) - Back diff --git a/resources/views/penilaian/otorisator/show.blade.php b/resources/views/penilaian/otorisator/show.blade.php index cf027b1..ca79239 100644 --- a/resources/views/penilaian/otorisator/show.blade.php +++ b/resources/views/penilaian/otorisator/show.blade.php @@ -159,7 +159,7 @@ @if ($dataHeader == 'pelaporan') + href="{{ route('otorisator.view-laporan') }}?permohonanId={{ $permohonan->id }}&documentId={{ $documentId }}&jaminanId={{ $jenisJaminanId }}&statusLpj={{ true }}&header={{ $header ?? '' }}"> Lihat Laporan @if (Auth::user()->hasAnyRole(['administrator', 'senior-officer']) && $permohonan->approval_so == 0) @@ -203,7 +203,7 @@ + href="{{ route('otorisator.view-laporan') }}?permohonanId={{ $permohonan->id }}&documentId={{ $documentId }}&jaminanId={{ $jenisJaminanId }}&statusLpj={{ true }}&header={{ $header ?? '' }}"> Lihat resume diff --git a/resources/views/penilaian/otorisator/sla.blade.php b/resources/views/penilaian/otorisator/sla.blade.php index e119b58..eabe6f5 100644 --- a/resources/views/penilaian/otorisator/sla.blade.php +++ b/resources/views/penilaian/otorisator/sla.blade.php @@ -161,7 +161,7 @@ @if ($dataHeader == 'pelaporan') + href="{{ route('otorisator.view-laporan') }}?permohonanId={{ $permohonan->id }}&documentId={{ $documentId }}&inspeksiId={{ $inspeksiId }}&jaminanId={{ $jenisJaminanId }}&statusLpj={{ true }}&header={{ $header }}"> Lihat Laporan @endif diff --git a/resources/views/surveyor/components/header.blade.php b/resources/views/surveyor/components/header.blade.php index 032bbb1..067a0ef 100644 --- a/resources/views/surveyor/components/header.blade.php +++ b/resources/views/surveyor/components/header.blade.php @@ -9,6 +9,8 @@
@php use Illuminate\Support\Facades\Route; + + // dd(request('header')); @endphp @if (isset($id)) @@ -16,13 +18,13 @@ @else @if (Auth::user()->hasAnyRole(['administrator', 'senior-officer', 'EO Appraisal', 'DD Appraisal']) && - Request::is('otorisator/show/*/Pelaporan')) - Back @elseif (Auth::user()->hasAnyRole(['administrator', 'surveyor', 'penilai'])) - @if (Request::is('surveyor/inspeksi/*/create') && request()->has('dokument') && request()->has('jenis_jaminan')) + @if (Request::is('surveyor/inspeksi/*/create') && request()->has('documentId') && request()->has('jenis_jaminan')) Back From fa659ff11515666c7e2d8e75c528040f4e5badcc Mon Sep 17 00:00:00 2001 From: majid Date: Wed, 21 May 2025 14:10:36 +0700 Subject: [PATCH 17/20] fix: perbaikan form-penilai,inspeksi denah - ubah dokument ke documentId, dan print-out-sederhana berdasarkan kategori form --- .../views/component/form-penilai.blade.php | 2 +- .../components/print-out-sederhana.blade.php | 595 ++---------------- .../views/surveyor/components/denah.blade.php | 2 +- .../surveyor/components/inspeksi.blade.php | 2 +- 4 files changed, 38 insertions(+), 563 deletions(-) diff --git a/resources/views/component/form-penilai.blade.php b/resources/views/component/form-penilai.blade.php index 946ca13..a606f6f 100644 --- a/resources/views/component/form-penilai.blade.php +++ b/resources/views/component/form-penilai.blade.php @@ -36,7 +36,7 @@ Informasi dan pembanding
- Edit Data Pembanding diff --git a/resources/views/penilai/components/print-out-sederhana.blade.php b/resources/views/penilai/components/print-out-sederhana.blade.php index 3ebc2f9..946368b 100644 --- a/resources/views/penilai/components/print-out-sederhana.blade.php +++ b/resources/views/penilai/components/print-out-sederhana.blade.php @@ -17,12 +17,12 @@
- - - - - - - - - - - -
+ - + @@ -120,7 +120,7 @@
Nama Debitur :{{ $permohonan->debiture->name ?? '' }}{{ u $permohonan->debiture->name ?? '' }}
Alamat dan Telpon
+ @@ -191,17 +191,17 @@
Fasilitas Kredit
-
- A. STATUS KEPEMILIKAN, HUBUNGAN DAN PENGHUNI + STATUS KEPEMILIKAN, HUBUNGAN DAN PENGHUNI - C. SARANA PELENGKAP DAN LINGKUNGAN + SARANA PELENGKAP DAN LINGKUNGAN
- +
+ @php @@ -236,328 +236,6 @@
{{ $hubCadeb ?? '' }}
- - - - - - -
- B. ANALISA {{ $data }} -
- - @foreach ($permohonan->documents as $dokumen) - @if ($dokumen->jenisJaminan) - @php - $formKategori = json_decode($dokumen->jenisJaminan->form_kategori, true); - @endphp - @if (isset($formKategori) && $formKategori) - @php - $kategoriArray = is_array($formKategori) ? $formKategori : [$formKategori]; - $kategoriUnik = array_unique($kategoriArray); - @endphp - - @foreach ($kategoriUnik as $kategori) - @if ($kategori === 'tanah') - - - @php - $cekLuas = isset($forminspeksi['tanah']['luas_tanah']['tidak sesuai']) - ? 'tidak sesuai' - : 'sesuai'; - - $luas = $forminspeksi['tanah']['luas_tanah'][$cekLuas] ?? null; - @endphp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @php - $spesifikasiBangunan = - $forminspeksi['bangunan']['spesifikasi_bangunan'] ?? []; - @endphp - - @if (!empty($spesifikasiBangunan)) - @foreach ($spesifikasiBangunan as $index => $bangunan) - @php - $spekKategori = $bangunan['spek_kategori_bangunan'] ?? []; - @endphp - - @if (count($spesifikasiBangunan) > 1) - - - - @endif - - @foreach ($spekKategori as $kategori => $nilaiKategori) - @if (!empty($nilaiKategori)) - - - - - - @endif - @endforeach - @endforeach - @else - - - - @endif -
Luas Tanah:{{ $luas ?? '' }}
Bentuk Tanah: - @php - $bentukTanah = isset( - $forminspeksi['tanah']['bentuk_tanah']['bentuk_tanah'], - ) - ? $forminspeksi['tanah']['bentuk_tanah']['bentuk_tanah'] - : []; - $lainnya = isset($forminspeksi['tanah']['bentuk_tanah']['lainnya']) - ? $forminspeksi['tanah']['bentuk_tanah']['lainnya'] - : null; - @endphp - - {{ !empty($bentukTanah) ? implode(', ', $bentukTanah) : '' }} - - @if (in_array('lainnya', array_map('strtolower', $bentukTanah)) && !empty($lainnya)) - ({{ $lainnya }}) - @endif -
Kontur Tanah: - @php - $konturTanah = $forminspeksi['tanah']['kontur_tanah'] ?? []; - @endphp - - @if (!empty($konturTanah)) - {{ implode(', ', $konturTanah) }} - @else - - - @endif -
Permukaan dengan Jalan: - @php - $ketinggianTanah = $forminspeksi['tanah']['ketinggian_tanah']; - $ketinggian = $ketinggianTanah['ketinggian'][0] ?? '-'; - $lebihTinggi = $ketinggianTanah['lebih_tinggi']; - $lebihRendah = $ketinggianTanah['lebih_rendah']; - @endphp - - {{ $ketinggian }} - @if ($ketinggian === 'Lebih Tinggi' && $lebihTinggi !== null) - (Ketinggian: {{ $lebihTinggi }} cm) - @elseif($ketinggian === 'Lebih Rendah' && $lebihRendah !== null) - (Kerendahan: {{ $lebihRendah }} cm) - @endif -
Peruntukan Tanah:Perumahan bukan Real Estate -
Fisik Tanah: - @php - $kondisiFisikTanah = - $forminspeksi['tanah']['kondisi_fisik_tanah'][ - 'kondisi_fisik_tanah' - ][0] ?? '-'; - $lainnya = - $forminspeksi['tanah']['kondisi_fisik_tanah']['lainnya'] ?? - null; - @endphp - - {{ $kondisiFisikTanah }} - @if (strcasecmp($kondisiFisikTanah, 'Lainnya') === 0 && $lainnya) - ({{ $lainnya }}) - @endif - -
Luas Bangunan: - @php - $luasTanahBangunan = - $forminspeksi['bangunan']['luas_tanah_bagunan']; - - $output = !empty($luasTanahBangunan['sesuai']) - ? $luasTanahBangunan['sesuai'] - : (!empty($luasTanahBangunan['tidak sesuai']) - ? $luasTanahBangunan['tidak sesuai'] - : '-'); - @endphp - - {{ $output }} -
Jenis Bangunan: - @php - $jenisBangunan = $forminspeksi['bangunan']['jenis_bangunan'] ?? []; - @endphp - - @if (!empty($jenisBangunan)) - {{ implode(', ', $jenisBangunan) }} - @else - - - @endif -
Kondisi Bangunan: - @php - $kondisiBangunan = - $forminspeksi['bangunan']['kondisi_bangunan'] ?? []; - @endphp - - @if (!empty($kondisiBangunan)) - {{ implode(', ', $kondisiBangunan) }} - @else - - - @endif -
Sifat Bangunan: - @php - $sifatBangunan = - $forminspeksi['bangunan']['sifat_bangunan'][0] ?? '-'; - $sifatBangunanInput = - $forminspeksi['bangunan']['sifat_bangunan_input']; - - // Filter input yang tidak null - $inputTambahan = array_filter($sifatBangunanInput, function ( - $value, - ) { - return $value !== null && $value !== ''; - }); - - // Gabungkan sifat bangunan dengan input tambahan - $output = $sifatBangunan; - - if (!empty($inputTambahan)) { - $output .= ' (' . implode(', ', $inputTambahan) . ')'; - } - @endphp - - {{ $output }} -
- {{ $bangunan['bagunan'] ?? 'Bangunan ' . ($index + 1) }} -
- {{ $kategori }}: - {{ implode(', ', $nilaiKategori) }}
Tidak - ada data - spesifikasi bangunan
- @elseif ($kategori === 'apartemen-kantor') - - - @php - $cekLuas = isset($forminspeksi['luas_unit']['tidak sesuai']) - ? 'tidak sesuai' - : 'sesuai'; - - $luas = $forminspeksi['luas_unit'][$cekLuas] ?? null; - @endphp - - - - - - - - - - - - - - - - - - - - - - - - -
Luas Unit:{{ $luas ?? '' }} m2
Bentuk Unit: - @php - $bentukUnit = $forminspeksi['bentuk_unit'] ?? []; - @endphp - - @if (!empty($bentukUnit)) - {{ implode(', ', $bentukUnit) }} - @else - - - @endif -
Kondisi Unit: - @php - $bentukUnit = $forminspeksi['kondisi_unit'] ?? []; - @endphp - - @if (!empty($bentukUnit)) - {{ implode(', ', $bentukUnit) }} - @else - - - @endif -
Posisi Unit: - @php - $bentukUnit = $forminspeksi['posisi_unit'] ?? []; - @endphp - - @if (!empty($bentukUnit)) - {{ implode(', ', $bentukUnit) }} - @else - - - @endif -
View Unit: - @php - $bentukUnit = $forminspeksi['view'] ?? []; - @endphp - - @if (!empty($bentukUnit)) - {{ implode(', ', $bentukUnit) }} - @else - - - @endif -
- @endif - @endforeach - @endif - @endif - @endforeach
@@ -693,11 +371,36 @@
+ + @foreach ($permohonan->documents as $dokumen) + @if ($dokumen->jenisJaminan) + @php + $formKategori = json_decode($dokumen->jenisJaminan->form_kategori, true); + @endphp + @if (isset($formKategori) && $formKategori) + @php + $kategoriArray = is_array($formKategori) ? $formKategori : [$formKategori]; + $kategoriUnik = array_unique($kategoriArray); + @endphp + + @foreach ($kategoriUnik as $kategori) + + @if ($kategori !== 'lingkungan') + @include('lpj::penilai.components.analisa.' . str_replace('-', '-', $kategori), [ + 'dokumen' => $dokumen, + ]) + @endif + + @endforeach + @endif + @endif + @endforeach +
-
- D. INFORMASI HARGA + + INFORMASI HARGA
@@ -706,7 +409,7 @@
-
E. INFORMASI NILAI + INFORMASI NILAI
@@ -801,233 +504,5 @@
-
- - - - - -
- F. ANALISA FAKTA -
- - - - - - - - - - - - - - - - - - @if (!empty($forminspeksi['fakta']['keterangan'])) - - - - - @endif -
Faktor Positif - @isset($forminspeksi['fakta']['fakta_positif']) - - @foreach ($forminspeksi['fakta']['fakta_positif'] as $key => $item) - - - - @endforeach -
{!! nl2br(e($item)) !!}
- @endisset -
Faktor Negatif - @isset($forminspeksi['fakta']['fakta_negatif']) - - @foreach ($forminspeksi['fakta']['fakta_negatif'] as $key => $item) - - - - @endforeach -
{!! nl2br(e($item)) !!}
- @endisset -
Batas batas - @foreach ($forminspeksi['fakta']['batas_batas_input'] ?? [] as $arah => $batas) - @if ($batas) -

- {{ $arah }} : {{ $batas }}

- @endif - @endforeach -
Informasi Dinas Tata Ruang - - @php - $informasi = [ - 'peruntukan', - 'kdb', - 'kdh', - 'gsb', - 'max_lantai', - 'klb', - 'gss', - 'pelebaran_jalan', - 'nama_petugas', - ]; - @endphp - - @foreach ($informasi as $key) - @if (isset($forminspeksi['fakta'][$key]) && $forminspeksi['fakta'][$key] !== '-') - @php - $displayKey = ucfirst(str_replace('_', ' ', $key)); - if (strlen($key) == 3) { - $displayKey = strtoupper($key); - } - @endphp -

- {{ $displayKey }}: {{ $forminspeksi['fakta'][$key] }}

- @endif - @endforeach - -
Catatan yang Perlu - Diperhatikan - @php - $keterangan = $forminspeksi['fakta']['keterangan'] ?? ''; - if (is_array($keterangan)) { - $keterangan = implode(', ', array_filter($keterangan)); - } - @endphp - - @if (!empty($keterangan)) - - - - -
{{ $keterangan }}
- @endif -
-
- -
- -
-
    - -
  1. PENILAIAN INI DIBUAT BERDASARKAN ATURAN YANG - BERLAKU DI SUBDIT APPRAISAL
  2. -
  3. LAPORAN INI DIBUAT BERDASARKAN DATA FOTOCOPY - DOKUMEN YANG DITERIMA PENILAI DENGAN ASUMSI BAHWA DATA TERSEBUT SESUAI DENGAN - DOKUMEN ASLINYA
  4. -
  5. PENILAI TIDAK MELAKUKAN PEMBUKTIAN LEBIH RINCI ATAU - PENGAKUAN TERTULIS DARI PIHAK YANG DITEMUI SAAT PENILAIAN, ATAS INFORMASI YANG - DIBERIKAN SECARA LISAN SEHUBUNGAN DENGAN IDENTITAS DIRI DAN HUBUNGAN DI ANTARA - PIHAK TERKAIT SAAT MELAKUKAN INSPEKSI OBJEK YANG DINILAI
  6. -
  7. LAPORAN INI DIGUNAKAN HANYA UNTUK KEPENTINGAN - INTERNAL DAN DILARANG MENYEBARKAN KEPADA PIHAK KETIGA
  8. -
-
-
- -
-
Demikian laporan penilai jaminan ini di buat secara objektif, tanpa adanya pengaruh baik intern - maupun ekstern
- @php - use Modules\Usermanagement\Models\User; - $penilaiUser = User::where('id', $penilai->userPenilaiTeam->id)->first(); - $imagePathPenilai = storage_path( - 'app/public/signatures/' . $penilaiUser->id . '/' . $penilaiUser->sign, - ); - - $soUser = User::where('id', $senior_officer->id)->first(); - $imagePathSo = storage_path('app/public/signatures/' . $soUser->id . '/' . $soUser->sign); - - $imagePathEO = storage_path( - 'app/public/signatures/' . - User::role('EO Appraisal')->first()->id . - '/' . - User::role('EO Appraisal')->first()->sign, - ); - - $imagePathDD = storage_path( - 'app/public/signatures/' . - User::role('DD Appraisal')->first()->id . - '/' . - User::role('DD Appraisal')->first()->sign, - ); - @endphp - - - @if ($permohonan->approval_so != null) - - @endif - @if ($permohonan->approval_eo != null) - - @endif - @if ($permohonan->approval_dd != null) - - @endif - - - - @if ($permohonan->approval_so != null) - - @endif - - @if ($permohonan->approval_eo != null) - - @endif - @if ($permohonan->approval_dd != null) - - @endif - -
- @if (file_exists($imagePathPenilai)) - {{ $imagePathPenilai }} - @endif - - @if (file_exists($imagePathSo)) - {{ $imagePathSo }} - @endif - - @if (file_exists($imagePathEO)) - {{ $imagePathEO }} - @endif - - @if (file_exists($imagePathDD)) - {{ $imagePathDD }} - @endif -
{{ $penilai->userPenilaiTeam->name ?? '' }}
- - {{ ucwords(strtolower('PENILAI')) }} - -
- {{ $senior_officer->name ?? '' }}
- - {{ ucwords(strtolower('SENIOR OFFICER')) }} - - -
- {{ User::role('EO Appraisal')->first()->name ?? '' }}
- - {{ ucwords(strtolower('EXECUTIVE OFFICER')) }} - -
- {{ User::role('DD Appraisal')->first()->name ?? '' }}
- - {{ ucwords(strtolower('DEPUTY DIRECTOR')) }} - -
- - -
-
@include('lpj::penilai.components.footer') diff --git a/resources/views/surveyor/components/denah.blade.php b/resources/views/surveyor/components/denah.blade.php index 6dbe2f9..deb149d 100644 --- a/resources/views/surveyor/components/denah.blade.php +++ b/resources/views/surveyor/components/denah.blade.php @@ -35,7 +35,7 @@ @csrf - +
diff --git a/resources/views/surveyor/components/inspeksi.blade.php b/resources/views/surveyor/components/inspeksi.blade.php index 7ec3ab1..9c39fab 100644 --- a/resources/views/surveyor/components/inspeksi.blade.php +++ b/resources/views/surveyor/components/inspeksi.blade.php @@ -10,7 +10,7 @@ @csrf - + @if (strtolower($permohonan->tujuanPenilaian->name) == 'rap') From 0f8774a37c60d06cf4cebb4c4b1999c25d38b72d Mon Sep 17 00:00:00 2001 From: majid Date: Wed, 21 May 2025 10:30:18 +0700 Subject: [PATCH 18/20] fix: update dokumentId and fix save penilai rap --- app/Http/Controllers/PenilaiController.php | 6 +++--- .../penilai/components/lpj-sederhana-standar.blade.php | 6 +++--- resources/views/penilai/show.blade.php | 10 +++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index 83f8eec..6a148cc 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -82,7 +82,7 @@ class PenilaiController extends Controller public function sederhana(Request $request, $id) { - $documentId = $request->query('dokument'); + $documentId = $request->query('documentId'); $jaminanId = $request->query('jaminanId'); $permohonan = $this->surveyorController->getPermohonanJaminanId($id, $documentId, $jaminanId); $basicData = $this->surveyorController->getCommonData(); @@ -148,7 +148,7 @@ class PenilaiController extends Controller public function standar(Request $request, $id) { - $documentId = $request->query('dokument'); + $documentId = $request->query('documentId'); $jaminanId = $request->query('jaminanId'); $permohonan = $this->surveyorController->getPermohonanJaminanId($id, $documentId, $jaminanId); @@ -401,7 +401,7 @@ class PenilaiController extends Controller { $permohonanId = $request->query('permohonanId'); - $documentId = $request->query('dokument'); + $documentId = $request->query('documentId'); $jaminanId = $request->query('jaminanId'); $provinces = Province::all(); $permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId); diff --git a/resources/views/penilai/components/lpj-sederhana-standar.blade.php b/resources/views/penilai/components/lpj-sederhana-standar.blade.php index 543dd34..b928fa3 100644 --- a/resources/views/penilai/components/lpj-sederhana-standar.blade.php +++ b/resources/views/penilai/components/lpj-sederhana-standar.blade.php @@ -23,7 +23,7 @@ @include('lpj::assetsku.includenya') - + @include('lpj::component.form-penilai') @@ -52,10 +52,10 @@ @endif @if (Auth::user()->hasAnyRole(['senior-officer', 'EO Appraisal', 'DD Appraisal', 'administrator'])) + href="{{ route('penilai.lampiran') }}?permohonanId={{ $permohonan->id }}&documentId={{ request('documentId') }}&jaminanId={{ request('jaminanId') }}&statusLpj=1"> Lampiran Foto dan Dokumen - Cetak Hasil Inspeksi diff --git a/resources/views/penilai/show.blade.php b/resources/views/penilai/show.blade.php index 705c3cb..853834f 100644 --- a/resources/views/penilai/show.blade.php +++ b/resources/views/penilai/show.blade.php @@ -493,11 +493,11 @@ if (data.status === 'standar') { showLoadingSwal('Tunggu ...'); window.location.href = - `{{ route('penilai.standar', $permohonan->id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.standar', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; } else if (data.status === 'sederhana') { showLoadingSwal('Tunggu ...'); window.location.href = - `{{ route('penilai.sederhana', $permohonan->id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.sederhana', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; } } else { if (fasilitasKredit.toUpperCase() === 'KPR KERJASAMA') { @@ -556,10 +556,10 @@ if (data.success) { if (type === 'standar') { window.location.href = - `{{ route('penilai.standar', $permohonan->id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.standar', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; } else if (type === 'sederhana') { window.location.href = - `{{ route('penilai.sederhana', $permohonan->id) }}?dokument=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.sederhana', $permohonan->id) }}?documentId=${documentId}&jaminanId=${jaminanId}`; } } }); @@ -640,7 +640,7 @@ function rap(permohonanId, documentId, jaminanId) { showLoadingSwal('Tunggu ...'); window.location.href = - `{{ route('penilai.rap') }}?permohonanId=${permohonanId}&dokument=${documentId}&jaminanId=${jaminanId}`; + `{{ route('penilai.rap') }}?permohonanId=${permohonanId}&documentId=${documentId}&jaminanId=${jaminanId}`; } From 760a0cb85dbf77288f8110c810dbd89f3b05371f Mon Sep 17 00:00:00 2001 From: majid Date: Wed, 21 May 2025 14:38:50 +0700 Subject: [PATCH 19/20] fix: hapus 'u' yang tidak diperlukan di file prit-out-sederhana --- .../views/penilai/components/print-out-sederhana.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/penilai/components/print-out-sederhana.blade.php b/resources/views/penilai/components/print-out-sederhana.blade.php index 946368b..f9f6cb0 100644 --- a/resources/views/penilai/components/print-out-sederhana.blade.php +++ b/resources/views/penilai/components/print-out-sederhana.blade.php @@ -22,7 +22,7 @@ Nama Debitur : - {{ u $permohonan->debiture->name ?? '' }} + {{ u $permohonan->debiture->name ?? '' }} Alamat dan Telpon From 2708dead538cee64c8a4133dbff22143db8761f4 Mon Sep 17 00:00:00 2001 From: majid Date: Thu, 22 May 2025 11:25:08 +0700 Subject: [PATCH 20/20] fix: save penilai dan so, perbaikan print sederhana dan standar --- app/Http/Controllers/PenilaiController.php | 3 +- .../components/print-out-sederhana.blade.php | 29 +++++++++---------- .../components/print-out-standar.blade.php | 29 ++++++++++--------- 3 files changed, 31 insertions(+), 30 deletions(-) diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index 6a148cc..a3588f2 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -1125,8 +1125,7 @@ class PenilaiController extends Controller $penilai = Penilai::updateOrCreate( [ 'permohonan_id' => $request->permohonanId, - 'dokument_id' => $request->documentId, - + 'dokument_id' => $request->input('dokument_id'), ], [ 'lpj' => json_encode($data), diff --git a/resources/views/penilai/components/print-out-sederhana.blade.php b/resources/views/penilai/components/print-out-sederhana.blade.php index f9f6cb0..67b6e05 100644 --- a/resources/views/penilai/components/print-out-sederhana.blade.php +++ b/resources/views/penilai/components/print-out-sederhana.blade.php @@ -22,7 +22,7 @@ Nama Debitur : - {{ u $permohonan->debiture->name ?? '' }} + {{ $permohonan->debiture->name ?? '' }} Alamat dan Telpon @@ -58,7 +58,7 @@ Tanggal Survey : - {{ formatTanggalIndonesia($permohonan->penilaian->updated_at) }} + {{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }} User @@ -116,7 +116,7 @@ Waktu Penyelesaian : - {{ hitungHariKerja($permohonan->penilaian->updated_at, $tanggalLaporan) }} + {{ hitungHariKerja($permohonan->penilaian->tanggal_kunjungan, $tanggalLaporan) }} @@ -204,19 +204,18 @@ @php + $cekHubDebitur = isset($forminspeksi['asset']['hub_cadeb']) && + $forminspeksi['asset']['hub_cadeb'] === 'sesuai' + ? 'sesuai' + : 'tidak sesuai'; - $cekHub = - isset($forminspeksi['asset']['hub_cadeb']) && $forminspeksi['asset']['hub_cadeb'] === 'sesuai' - ? 'sesuai' - : 'tidak sesuai'; - - $hubCadeb = $cekHub === 'sesuai' - ? ($forminspeksi['asset']['hub_cadeb']['sesuai'] ?? null) - : ($forminspeksi['asset']['hub_cadeb']['tidak sesuai'] ?? null); - @endphp - - - + $hubCadebDebitur = isset($forminspeksi['asset']['hub_cadeb'][$cekHubDebitur]) + ? $forminspeksi['asset']['hub_cadeb']['tidak sesuai'] + : $forminspeksi['asset']['hub_cadeb']['sesuai']; + @endphp + + + @php diff --git a/resources/views/penilai/components/print-out-standar.blade.php b/resources/views/penilai/components/print-out-standar.blade.php index 791fdf8..3c35cb3 100644 --- a/resources/views/penilai/components/print-out-standar.blade.php +++ b/resources/views/penilai/components/print-out-standar.blade.php @@ -106,8 +106,13 @@ - + @if (isset($forminspeksi['asset']['debitur_perwakilan'])) + + @endif @@ -179,20 +184,18 @@
Hubungan Pemilik Jaminan dengan Debitur:{{ $hubCadeb ?? '' }}Hubungan Pemilik Jaminan dengan Debitur:{{ $hubCadebDebitur ?? '' }}
Debitur / Wakil Debitur :{{ $permohonan->debiture->name ?? '' }} - + @foreach ($forminspeksi['asset']['debitur_perwakilan'] as $item) + {{ $item ?? $permohonan->debiture->name ?? '' }}
+ @endforeach +
Pihak Bank selain Appraisal
@php + $cekHubDebitur = isset($forminspeksi['asset']['hub_cadeb']) && + $forminspeksi['asset']['hub_cadeb'] === 'sesuai' + ? 'sesuai' + : 'tidak sesuai'; - $cekHub = - isset($forminspeksi['asset']['hub_cadeb']) && $forminspeksi['asset']['hub_cadeb'] === 'sesuai' - ? 'sesuai' - : 'tidak sesuai'; - - - $hubCadeb = $cekHub === 'sesuai' - ? ($forminspeksi['asset']['hub_cadeb']['sesuai'] ?? null) - : ($forminspeksi['asset']['hub_cadeb']['tidak sesuai'] ?? null); - @endphp + $hubCadebDebitur = isset($forminspeksi['asset']['hub_cadeb'][$cekHubDebitur]) + ? $forminspeksi['asset']['hub_cadeb']['tidak sesuai'] + : $forminspeksi['asset']['hub_cadeb']['sesuai']; + @endphp - + @php
Hubungan Pemilik Jaminan dengan Debitur :{{ $hubCadeb ?? '' }}{{ $cekHubDebitur ?? '' }}