From 5bc4d54f3dedf8c53d939971769072cc89fb8646 Mon Sep 17 00:00:00 2001 From: majid Date: Fri, 20 Dec 2024 07:11:41 +0700 Subject: [PATCH 01/28] perbaikana perhitungan npw dan nl otomatis, dan perbaikan otorisator --- app/Http/Controllers/LaporanController.php | 6 + app/Http/Controllers/PenilaiController.php | 11 +- app/Http/Controllers/PenilaianController.php | 33 +- module.json | 27 - resources/views/laporan/index.blade.php | 96 ++++ .../views/laporan/sederhana_index.blade.php | 487 ------------------ .../lpj-sederhana-standard.blade.php | 417 ++++++++++----- resources/views/penilai/index.blade.php | 190 ++++--- resources/views/penilai/show.blade.php | 8 +- .../penilaian/otorisator/index.blade.php | 24 +- .../views/penilaian/otorisator/show.blade.php | 17 +- routes/web.php | 5 +- 12 files changed, 552 insertions(+), 769 deletions(-) create mode 100644 resources/views/laporan/index.blade.php delete mode 100644 resources/views/laporan/sederhana_index.blade.php diff --git a/app/Http/Controllers/LaporanController.php b/app/Http/Controllers/LaporanController.php index ec4cf45..c06db93 100644 --- a/app/Http/Controllers/LaporanController.php +++ b/app/Http/Controllers/LaporanController.php @@ -11,6 +11,12 @@ class LaporanController extends Controller /** * Display a listing of the resource. */ + + public function index() + { + return view('lpj::laporan.index'); + } + public function sederhana_index() { return view('lpj::laporan.sederhana_index'); diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index 2be57e5..7528118 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -199,7 +199,7 @@ class PenilaiController extends Controller $permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId); $inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); - + return view('lpj::penilai.components.paparan'); } @@ -240,10 +240,10 @@ class PenilaiController extends Controller }); } - // Apply whereHas to check penilai_id, role, and user_id specifically for 'penilai' role + $query->whereHas('penilaian.userPenilai', function ($q) { - $q->where('role', 'penilai') // Ensure the role is 'penilai' - ->where('user_id', Auth::user()->id); // Ganti dengan Auth::user()->id jika dinamis + $q->where('role', 'penilai') + ->where('user_id', Auth::user()->id); }); // Apply sorting if provided @@ -487,7 +487,8 @@ class PenilaiController extends Controller } } - public function storeLpjSederhanadanStandard(Request $request){ + public function storeLpjSederhanadanStandard(Request $request) + { try { diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index 5515aaa..b7d4ed6 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -359,7 +359,7 @@ class PenilaianController extends Controller 'pembatalan' => 'Pembatalan', 'sla' => 'SLA', ]; - + $header = $headers[$type] ?? 'Pelaporan'; return view('lpj::penilaian.otorisator.index', compact('header')); @@ -380,7 +380,7 @@ class PenilaianController extends Controller return view('lpj::penilaian.otorisator.show', compact('permohonan', 'header')); } - public function otorisatorUpdate($id, $context) + public function otorisatorUpdate(Request $request, $id, $context) { $permohonan = Permohonan::find($id); @@ -396,28 +396,30 @@ class PenilaianController extends Controller $newStatus = $permohonan->status_bayar === 'sudah_bayar' ? 'belum_bayar' : 'sudah_bayar'; $permohonan->update([ - 'status_bayar' => $newStatus + 'status_bayar' => $newStatus, + 'keterangan' => $request->message ]); break; case 'pembatalan': - $permohonan->update([ - 'authorized_status' => 1, + 'status' => 'batal', + 'keterangan' => $request->message ]); break; case 'pelaporan': - $permohonan->update([ - 'status' => 'disetujui', + 'status' => 'proses-laporan', + 'keterangan' => $request->message ]); break; case 'sla': $permohonan->update([ - 'status' => 'order', + 'status' => 'proses-sla', + 'keterangan' => $request->message ]); break; @@ -449,10 +451,10 @@ class PenilaianController extends Controller // Tentukan status berdasarkan otorisator $status = match ($otorisator) { - 'Pelaporan' => 'proses laporan', + 'Pelaporan' => 'proses-laporan', 'Pembayaran' => 'proses', - 'Pembatalan' => 'proses', - 'SLA' => 'proses', + 'Pembatalan' => 'batal', + 'SLA' => 'freeze', default => '', }; @@ -477,10 +479,13 @@ class PenilaianController extends Controller if (!empty($otorisator)) { if ($status == 'proses') { $query->whereIn('status_bayar', ['sudah_bayar', 'belum_bayar']); + } elseif ($status == 'proses-laporan') { + $query->whereRaw('LOWER(status) = ?', [strtolower($status)]); + } elseif ($status == 'batal') { + $query->whereRaw('LOWER(status) = ?', [strtolower($status)]); + } elseif ($status == 'freeze') { + $query->whereRaw('LOWER(status) = ?', [strtolower($status)]); } - // else { - // $query->whereRaw('LOWER(status) = ?', [strtolower($status)]); - // } } // Filter berdasarkan region user yang login diff --git a/module.json b/module.json index f884f24..762ae31 100644 --- a/module.json +++ b/module.json @@ -323,33 +323,6 @@ "pemohon-eo", "admin", "senior-officer" - ], - "sub": [ - { - "title": "Sederhana", - "path": "laporan.sederhana", - "classes": "", - "attributes": [], - "permission": "", - "roles": [ - "administrator", - "admin" - ] - }, - { - "title": "Standard", - "path": "laporan.standard", - "classes": "", - "attributes": [], - "permission": "", - "roles": [ - "administrator", - "pemohon-ao", - "pemohon-eo", - "admin", - "senior-officer" - ] - } ] }, { diff --git a/resources/views/laporan/index.blade.php b/resources/views/laporan/index.blade.php new file mode 100644 index 0000000..46f3aff --- /dev/null +++ b/resources/views/laporan/index.blade.php @@ -0,0 +1,96 @@ +@extends('layouts.main') + +{{-- @section('breadcrumbs') --}} + {{-- {{ Breadcrumbs::render('laporan.index') }} --}} +{{-- @endsection --}} + + +@section('content') +
+ + +
+
+

+ Laporan +

+
+
+ +
+ +
+
+ +
+
+ + + + + + + + + + + + + + + +
+ + + Nomor Registrasi + + + Debitur + + + Pemohon(Cabang/Direktorat) + + + AO + + + Tujuan Penilaian + + + Fasilitas Kredit + + + Tanggal Survei + + + Due Date SLA + + Action
+
+ +
+ + +
+ +
+@endsection diff --git a/resources/views/laporan/sederhana_index.blade.php b/resources/views/laporan/sederhana_index.blade.php deleted file mode 100644 index 48cd5be..0000000 --- a/resources/views/laporan/sederhana_index.blade.php +++ /dev/null @@ -1,487 +0,0 @@ -@extends('layouts.main') - -@section('breadcrumbs') - {{ Breadcrumbs::render('laporan.sederhana.index') }} -@endsection - - -@section('content') - - -
-
-
-
-
- - @csrf - -
-
- -
- - @error('cadeb') - {{ $message }} - @enderror -
-
- -
- -
- - @error('aset') - {{ $message }} - @enderror -
-
-
- -
-
- -
- - @error('kredit') - {{ $message }} - @enderror -
-
- -
- -
- - @error('alamat') - {{ $message }} - @enderror -
-
-
- -
-
- -
- - @error('cabang') - {{ $message }} - @enderror -
-
- -
- -
- - @error('ao') - {{ $message }} - @enderror -
-
-
- -
- -
- -
- - @error('surveyor') - {{ $message }} - @enderror -
-
- -
- -
- - @error('penilai') - {{ $message }} - @enderror -
-
- -
- -
- - @error('tanggal_survey') - {{ $message }} - @enderror -
-
- -
-
- -
- - @error('nomor_resume') - {{ $message }} - @enderror -
-
- -
- -
- - @error('tanggal_resume') - {{ $message }} - @enderror -
-
-
- -
- -
- -
- - @error('faktor_positif') - {{ $message }} - @enderror -
-
- -
- -
- - @error('faktor_negatif') - {{ $message }} - @enderror -
-
- -
- - - -
- -
-
-
- - @error('sertifikat') - {{ $message }} - @enderror -
- -
- - - @error('luas_tanah') - {{ $message }} - @enderror -
- -
- - - @error('luas_bangunan') - {{ $message }} - @enderror -
- -
- Rp - - @error('pasar_wajar') - {{ $message }} - @enderror -
-
-
-
- -
- -
-
-
- - @error('sertifikat') - {{ $message }} - @enderror -
- -
- - - @error('luas_tanah') - {{ $message }} - @enderror -
- -
- - - @error('luas_bangunan') - {{ $message }} - @enderror -
- -
- Rp - - @error('pasar_wajar') - {{ $message }} - @enderror -
-
-
-
- -
- -
-
-
- - @error('sertifikat') - {{ $message }} - @enderror -
- -
- - - @error('luas_tanah') - {{ $message }} - @enderror -
- -
- - - @error('luas_bangunan') - {{ $message }} - @enderror -
- -
- Rp - - @error('pasar_wajar') - {{ $message }} - @enderror -
-
-
-
- -
- -
- -
- - @error('catatan') - {{ $message }} - @enderror -
-
- -
- -
- -
-
    -
  1. Laporan Resume ini dikeluarkan dikarenakan belum dilakukannya pembayaran biaya - penilaian jaminan
  2. -
  3. Laporan Resume ini tidak bisa dijadikan sebagai dasar pengajuan dan atau pencairan - kredit, laporan yang digunakan tetap wajib berupa Laporan Penilaian Jaminan (LPJ) -
  4. -
  5. Detail per meter tanah dan bangunan, sarana pelengkap dll akan tercatat di Laporan - Penilaian Jaminan (LPJ) nanti
  6. -
  7. Laporan Resume ini hanya digunakan untuk kepentingan internal bagi
  8. -
  9. Laporan resume ini hanya berlaku 14 hari kerja - terhitung dari tanggal resume ini dibuat sesuai aturan yang berlaku, apabila lewat - maka harus dilakukan order ulang sesuai prosedur yang berlaku
  10. -
  11. Apabila sudah melewati 6 bulan, maka harus penilaian ulang kembali
  12. -
-
-
- -
- - - -
-
- - -
-
- -
- -
-
-
-
-
- - {{--
-
- - -
-
- -
- - @error('code') - {{ $message }} - @enderror -
-
- -
- -
- - @error('name') - {{ $message }} - @enderror -
-
- -
- -
-
-
-
--}} -
-@endsection diff --git a/resources/views/penilai/components/lpj-sederhana-standard.blade.php b/resources/views/penilai/components/lpj-sederhana-standard.blade.php index 8fcaaa2..0d401c2 100644 --- a/resources/views/penilai/components/lpj-sederhana-standard.blade.php +++ b/resources/views/penilai/components/lpj-sederhana-standard.blade.php @@ -436,54 +436,115 @@
- +
- - + +
- - +
- +
- - + +
- - +
- +
- - + + + +
-
- - +
+ + +
+ + + +
+ +
+ + +
@@ -495,25 +556,35 @@
- +
- - + +
- - -
-
- - + +
+
@@ -535,19 +606,33 @@
- +
- - + +
- - + Rp + + +
@@ -565,90 +650,164 @@
- @endsection +@endsection - @include('lpj::surveyor.js.utils') - + }); + + document.querySelectorAll('.number-format').forEach(input => { + input.addEventListener('input', function() { + formatNumber(this); + }); + }); + }); + + function calculateTotal() { + // Fungsi untuk menghapus format ribuan/koma + const parseInput = (value) => parseFloat(value.replace(/[^0-9]/g, '')) || 0; + + // Ambil elemen input dan parse nilainya + let luasTanah = parseInput(document.getElementById('luas_tanah').value); + let hargaPerMeterTanah = parseInput(document.querySelector('input[name="nilai_tanah_1"]').value); + let totalLuasTanah = document.querySelector('input[name="nilai_tanah_2"]'); + + let luasBangunan = parseInput(document.getElementById('luas_bangunan').value); + let hargaPerMeterBangunan = parseInput(document.querySelector('input[name="nilai_bangunan_1"]').value); + let totalLuasBangunan = document.querySelector('input[name="nilai_bangunan_2"]'); + + let saranaPelengkap = parseInput(document.getElementById('sarana_pelengkap').value); + let hargaPerMeterSarana = parseInput(document.querySelector('input[name="nilai_sarana_pelengkap_1"]').value); + let totalLuasSarana = document.querySelector('input[name="nilai_sarana_pelengkap_2"]'); + + // Bagian Likuidasi + let persentaseLikuidasi = parseInput(document.getElementById('likuidasi').value); + let totalNilaiPasarLikuidasi = document.querySelector('input[name="likuidasi_nilai_1"]'); + let totalLikuidasi = document.querySelector('input[name="likuidasi_nilai_2"]'); + + // Bagian Asuransi + let luasBangunanAsuransi = parseInput(document.getElementById('asuransi_luas_bangunan').value); + let hargaPerMeterAsuransi = parseInput(document.querySelector('input[name="asuransi_nilai_1"]').value); + let totalNilaiAsuransi = document.querySelector('input[name="asuransi_nilai_2"]'); + + let total = document.querySelector('input[name="total_nilai_pasar_wajar"]'); + + // Hitung hasil + const hasilTanah = luasTanah * hargaPerMeterTanah; + const hasilBangunan = luasBangunan * hargaPerMeterBangunan; + const hasilSarana = saranaPelengkap * hargaPerMeterSarana; + + const totalNilaiPasarWajar = hasilTanah + hasilBangunan + hasilSarana; + + // Perhitungan Likuidasi + const hasilLikuidasi = (persentaseLikuidasi / 100) * totalNilaiPasarWajar; + + // Perhitungan Asuransi + const hasilAsuransi = luasBangunanAsuransi * hargaPerMeterAsuransi; + + // Tampilkan hasil dalam format currency + totalLuasTanah.value = formatCurrency(hasilTanah.toString()); + totalLuasBangunan.value = formatCurrency(hasilBangunan.toString()); + totalLuasSarana.value = formatCurrency(hasilSarana.toString()); + total.value = formatCurrency(totalNilaiPasarWajar.toString()); + + // Tampilkan nilai likuidasi dan asuransi + totalNilaiPasarLikuidasi.value = formatCurrency(totalNilaiPasarWajar.toString()); + totalNilaiAsuransi.value = formatCurrency(hasilAsuransi.toString()); + + // Total likuidasi (total nilai pasar wajar + nilai likuidasi) + // const totalPasarWajarDenganLikuidasi = totalNilaiPasarWajar + hasilLikuidasi; + totalLikuidasi.value = formatCurrency(hasilLikuidasi.toString()); +} + + + + function saveLpjSederhanadanStandard() { + const form = document.getElementById('form-lpj'); + const formData = new FormData(form); + + const jsonData = { + luas_tanah: formData.get('luas_tanah'), + nilai_tanah_1: formData.get('nilai_tanah_1'), + nilai_tanah_2: formData.get('nilai_tanah_2'), + luas_bangunan: formData.get('luas_bangunan'), + nilai_bangunan_1: formData.get('nilai_bangunan_1'), + nilai_bangunan_2: formData.get('nilai_bangunan_2'), + sarana_pelengkap: formData.get('sarana_pelengkap'), + nilai_sarana_pelengkap_1: formData.get('nilai_sarana_pelengkap_1'), + nilai_sarana_pelengkap_2: formData.get('nilai_sarana_pelengkap_2'), + total_nilai_pasar_wajar: formData.get('total_nilai_pasar_wajar'), + likuidasi: formData.get('likuidasi'), + likuidasi_nilai_1: formData.get('likuidasi_nilai_1'), + likuidasi_nilai_2: formData.get('likuidasi_nilai_2'), + asuransi_luas_bangunan: formData.get('asuransi_luas_bangunan'), + asuransi_nilai_1: formData.get('asuransi_nilai_1'), + asuransi_nilai_2: formData.get('asuransi_nilai_2') + }; + + showLoadingSwal('Mengirim data ke server...'); + + const urlParams = new URLSearchParams(window.location.search); + const permohonanId = {{ $permohonan->id }}; + const documentId = urlParams.get('documentId'); + const inspeksiId = urlParams.get('inspeksiId'); + + const requestUrl = `{{ route('penilai.storeLpjSederhanadanStandard') }}`; + $.ajax({ + url: requestUrl, + type: 'POST', + data: JSON.stringify({ + permohonan_id: permohonanId, + document_id: documentId, + inspeksi_id: inspeksiId, + lpj: jsonData, + }), + contentType: 'application/json', + headers: { + 'X-CSRF-TOKEN': '{{ csrf_token() }}' + }, + success: function(response) { + hideLoadingSwal(); + if (response.success) { + Swal.fire({ + title: 'Berhasil!', + text: response.message, + icon: 'success', + confirmButtonText: 'OK' + }).then((response) => { + if (response.isConfirmed) { + window.location.href = + '{{ route('penilai.show', ['id' => $permohonan->id]) }}'; + } + }); + } else { + Swal.fire({ + title: 'Error!', + text: response.message || 'Terjadi kesalahan', + icon: 'error', + confirmButtonText: 'OK' + }); + } + console.log(response); + }, + error: function(xhr, status, error) { + let errors = xhr.responseJSON?.errors; + $('.alert').text(''); + if (errors) { + $.each(errors, function(key, value) { + $(`#error-${key}`).text(value[0]); + toastrErrorBuild(value[0]); + }); + } + hideLoadingSwal(); + console.log(errors); + } + }); + } + +@include('lpj::surveyor.js.utils') diff --git a/resources/views/penilai/index.blade.php b/resources/views/penilai/index.blade.php index 539b603..ef6f4e1 100644 --- a/resources/views/penilai/index.blade.php +++ b/resources/views/penilai/index.blade.php @@ -5,92 +5,92 @@ @endsection @section('content') -
+
-
-
-

- Penilai -

-
-
- -
- +
+
+

+ Penilai +

+
+
+ +
+
- -
-
- - - - - - - - - - - - - - - -
- - - Nomor Registrasi - - - Debitur - - - Pemohon(Cabang/Direktorat) - - - AO - - - Tujuan Penilaian - - - Fasilitas Kredit - - - Tanggal Survei - - - Due Date SLA - - Action
-
- -
- -
+
+
+ + + + + + + + + + + + + + + +
+ + + Nomor Registrasi + + + Debitur + + + Pemohon(Cabang/Direktorat) + + + AO + + + Tujuan Penilaian + + + Fasilitas Kredit + + + Tanggal Survei + + + Due Date SLA + + Action
+
+ +
+ + +
+
@endsection @@ -181,12 +181,22 @@ actions: { title: 'Action', render: (item, data) => { - return ` + + if (data.status === 'done') { + return ` `; + } else { + return `
+ + + +
` + } + }, } }, @@ -200,4 +210,22 @@ }); + + @endpush diff --git a/resources/views/penilai/show.blade.php b/resources/views/penilai/show.blade.php index 76ee030..f3bc183 100644 --- a/resources/views/penilai/show.blade.php +++ b/resources/views/penilai/show.blade.php @@ -258,23 +258,17 @@
- -
@endforeach
diff --git a/resources/views/penilaian/otorisator/index.blade.php b/resources/views/penilaian/otorisator/index.blade.php index 56a8c90..66f2d1d 100644 --- a/resources/views/penilaian/otorisator/index.blade.php +++ b/resources/views/penilaian/otorisator/index.blade.php @@ -200,8 +200,7 @@ actions: { title: 'Status', render: (item, data) => { - if (data.status != 'proses laporan' && dataHeader != 'Pelaporan') { - return `
+ return `
@@ -210,14 +209,6 @@
`; - } else { - return `` - } }, } @@ -240,6 +231,12 @@ title: 'Apakah Anda yakin?', text: `Untuk melakukan otorisator ${dataHeader}!`, icon: 'warning', + input: 'textarea', // Menambahkan input textarea + inputLabel: 'Keterangan', + inputPlaceholder: 'Masukkan keterangan...', + inputAttributes: { + 'aria-label': 'Masukkan keterangan' + }, showCancelButton: true, confirmButtonColor: '#3085d6', cancelButtonColor: '#d33', @@ -247,6 +244,7 @@ cancelButtonText: 'Batal', }).then((result) => { if (result.isConfirmed) { + const userMessage = result.value || ''; // Ambil pesan dari textarea $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': '{{ csrf_token() }}' @@ -255,6 +253,9 @@ $.ajax({ url: `/otorisator/otorisator/${dataId}/${dataHeader}`, type: 'POST', + data: { + message: userMessage // Kirim pesan sebagai bagian dari data + }, success: (response) => { Swal.fire('Berhasil!', 'Data berhasil diotorisasi.', 'success').then(() => { window.location.reload(); @@ -264,13 +265,14 @@ error: (error) => { console.error('Error:', error); Swal.fire('Gagal!', 'Terjadi kesalahan saat melakukan otorisator.', - 'error'); + 'error'); } }); } }); } + function showLoadingSwal(message, duration = 5000) { Swal.fire({ title: message, diff --git a/resources/views/penilaian/otorisator/show.blade.php b/resources/views/penilaian/otorisator/show.blade.php index 00dd3e0..05b1fff 100644 --- a/resources/views/penilaian/otorisator/show.blade.php +++ b/resources/views/penilaian/otorisator/show.blade.php @@ -26,13 +26,18 @@ @push('scripts') @include('lpj::surveyor.js.utils') diff --git a/routes/web.php b/routes/web.php index 6106518..dd9eceb 100644 --- a/routes/web.php +++ b/routes/web.php @@ -538,7 +538,7 @@ Route::middleware(['auth'])->group(function () { Route::get('datatables', [PenilaiController::class, 'dataForDatatables'])->name('dataForTables'); Route::get('lampiran/{id}', [PenilaiController::class, 'lampiran'])->name('lampiran'); - Route::get('export/kertas-kerja/{id}/{jaminanId}', [PenilaiController::class, 'export_kertas_kerja'])->name('export.kertas-kerja'); + Route::get('export/kertas-kerja', [PenilaiController::class, 'export_kertas_kerja'])->name('export.kertas-kerja'); Route::post('import/kertas-kerja', [PenilaiController::class, 'import_kertas_kerja'])->name('import.kertas-kerja'); From 5fde58d00c4738c3e804ee70cac86145768658bb Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Fri, 20 Dec 2024 15:09:47 +0700 Subject: [PATCH 04/28] Refactor data rendering and query structures in SPK - Mengubah struktur query untuk mengambil data dari relasi yang lebih sesuai. - Memperbaiki atribut render di view agar lebih konsisten dengan struktur data baru. - Membersihkan logika yang tidak digunakan, termasuk format data untuk tanggal, biaya, dan path dokumen. - Mengoptimalkan fungsi download dengan menggunakan ID langsung dari PenawaranTender. --- app/Http/Controllers/SpkController.php | 35 ++++++++++++------------ resources/views/spk/index.blade.php | 38 +++++++++++++++----------- 2 files changed, 40 insertions(+), 33 deletions(-) diff --git a/app/Http/Controllers/SpkController.php b/app/Http/Controllers/SpkController.php index d0bc5f6..828170e 100644 --- a/app/Http/Controllers/SpkController.php +++ b/app/Http/Controllers/SpkController.php @@ -36,15 +36,17 @@ use Illuminate\Support\Facades\Auth; // Retrieve data from the database // $query =Permohonan::query()->with(['penawaran','penawaran.tujuanPenilaianKjpp'])->where('permohonan.status','=','spk'); // $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian','penilaian'])->get(); - $query =Permohonan::query()->with(['user', 'debiture', 'branch', 'tujuanPenilaian','penilaian','penawaran','penawaran.tujuanPenilaianKjpp'])->where('permohonan.status','=','spk'); + //$query =Permohonan::query()->with(['user', 'debiture', 'branch', 'tujuanPenilaian','penilaian','penawaran','penawaran.tujuanPenilaianKjpp'])->where('permohonan.status','=','spk'); + + $query = PenawaranTender::query()->with(['permohonan.user', 'permohonan.debiture', 'permohonan.branch', 'permohonan.tujuanPenilaian','permohonan.penilaian','tujuanPenilaianKjpp']); // 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('penawaran.tanggal_permohonan', 'LIKE', '%' . $search . '%'); + $q->whereRelation('permohonan','nomor_registrasi', 'LIKE', '%' . $search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); $q->orWhere('status', 'LIKE', '%' . $search . '%'); }); @@ -81,34 +83,34 @@ use Illuminate\Support\Facades\Auth; foreach($data as $obj) { // tanggal_permohonan - if ($obj->tanggal_permohonan) { - $data[$i]->tanggal_permohonan = Carbon::parse($obj->tanggal_permohonan)->format('d M Y'); + if ($obj->permohonan->tanggal_permohonan) { + $data[$i]->permohonan->tanggal_permohonan = Carbon::parse($obj->permohonan->tanggal_permohonan)->format('d M Y'); } - if($obj->penawaran->tanggal_penilaian_sebelumnya) + if($obj->tanggal_penilaian_sebelumnya) { - $data[$i]->penawaran->tanggal_penilaian_sebelumnya = Carbon::parse($obj->penawaran->tanggal_penilaian_sebelumnya)->format('d F Y H:i:s'); + $data[$i]->tanggal_penilaian_sebelumnya = Carbon::parse($obj->tanggal_penilaian_sebelumnya)->format('d F Y H:i:s'); } - if($obj->penawaran->biaya_kjpp_sebelumnya) + if($obj->biaya_kjpp_sebelumnya) { - $data[$i]->penawaran->biaya_kjpp_sebelumnya = formatRupiah($obj->penawaran->biaya_kjpp_sebelumnya); + $data[$i]->biaya_kjpp_sebelumnya = formatRupiah($obj->biaya_kjpp_sebelumnya); } // date_range - if($obj->penawaran->start_date && $obj->penawaran->end_date) + if($obj->start_date && $obj->end_date) { - $data[$i]->date_range = Carbon::parse($obj->penawaran->start_date)->format('d M Y').' - '. - Carbon::parse($obj->penawaran->end_date)->format('d M Y'); + $data[$i]->date_range = Carbon::parse($obj->start_date)->format('d M Y').' - '. + Carbon::parse($obj->end_date)->format('d M Y'); } // data spk_dokumen_path - if($obj->penawaran->spk_dokumen_path) + if($obj->spk_dokumen_path) { - $spk_dokumen_path = Storage::url($obj->penawaran->spk_dokumen_path); - $data[$i]->penawaran->spk_dokumen_path = $spk_dokumen_path; + $spk_dokumen_path = Storage::url($obj->spk_dokumen_path); + $data[$i]->spk_dokumen_path = $spk_dokumen_path; } $i++; @@ -393,8 +395,7 @@ use Illuminate\Support\Facades\Auth; public function download($id) { // dokumen pdf diambil dari penawaran.spk_dokumen_path - $permohonan = Permohonan::find($id); - $document = PenawaranTender::where('nomor_registrasi','=',$permohonan->nomor_registrasi)->first(); + $document = PenawaranTender::find($id); return response()->download(storage_path('app/public/' .$document->spk_dokumen_path)); } diff --git a/resources/views/spk/index.blade.php b/resources/views/spk/index.blade.php index 53218d9..8d980ca 100644 --- a/resources/views/spk/index.blade.php +++ b/resources/views/spk/index.blade.php @@ -126,12 +126,15 @@ }, 'nomor_registrasi': { title: 'Nomor Registrasi', + render: (item, data) => { + return `${data.permohonan.nomor_registrasi}`; + }, }, code: { title: 'Nomor Penawaran', render: (item, data) => { - if(data.penawaran) { - return `${data.penawaran.code}`; + if(data.code) { + return `${data.code}`; } return '-'; @@ -139,24 +142,27 @@ }, tanggal_permohonan: { title: 'Tanggal Permohonan', + render: (item, data) => { + return `${data.permohonan.tanggal_permohonan}`; + }, }, user_id: { title: 'User Pemohon', render: (item, data) => { - return `${data.user.name}`; + return `${data.permohonan.user.name}`; }, }, branch_id: { title: 'Cabang Pemohon', render: (item, data) => { - return `${data.branch.name}`; + return `${data.permohonan.branch.name}`; }, }, debitur_id: { title: 'Debitur', render: (item, data) => { - if (data.debiture) { - return `${data.debiture.name}`; + if (data.permohonan.debiture) { + return `${data.permohonan.debiture.name}`; } return "-"; }, @@ -167,14 +173,14 @@ tujuan_penilaian_id: { title: 'Tujuan Penilaian', render: (item, data) => { - return `${data.tujuan_penilaian.name}`; + return `${data.permohonan.tujuan_penilaian.name}`; }, }, tujuan_penilaian_kjpp_id: { title: 'Tujuan Penilaian KJPP', render: (item, data) => { - if(data.penawaran.tujuan_penilaian_kjpp) { - return `${data.penawaran.tujuan_penilaian_kjpp.name}`; + if(data.tujuan_penilaian_kjpp) { + return `${data.tujuan_penilaian_kjpp.name}`; } return '-'; @@ -183,15 +189,15 @@ kjpp_data: { title: 'Nama KJPP Terpilih', render: (item, data) => { - return `${data.penawaran.nama_kjpp_sebelumnya}`+'
' - +`${data.penawaran.biaya_kjpp_sebelumnya}`+'
' - +`${data.penawaran.tanggal_penilaian_sebelumnya}`; + return `${data.nama_kjpp_sebelumnya}`+'
' + +`${data.biaya_kjpp_sebelumnya}`+'
' + +`${data.tanggal_penilaian_sebelumnya}`; }, }, status: { title: 'Status', render: (item, data) => { - return `${data.penawaran.status}`.toUpperCase(); + return `${data.status}`.toUpperCase(); }, }, actions: { @@ -199,9 +205,9 @@ render: (item, data) => { var spkShow =''; var spkCreate=''; - if(!data.penawaran.spk_dokumen_path) + if(!data.spk_dokumen_path) { - spkCreate=` + spkCreate=` `; } @@ -211,7 +217,7 @@ `; - spkCreate=` + spkCreate=` `; } From 4b9685f14cae99792155620e1f6d03f9fe27de83 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Fri, 20 Dec 2024 15:13:52 +0700 Subject: [PATCH 05/28] Perbaiki logika tombol "Buat SPK" - Tambahkan pengecekan status data sebelum menampilkan tombol "Buat SPK". - Tombol hanya ditampilkan jika status data adalah "spk". --- resources/views/spk/index.blade.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/resources/views/spk/index.blade.php b/resources/views/spk/index.blade.php index 8d980ca..c6012c7 100644 --- a/resources/views/spk/index.blade.php +++ b/resources/views/spk/index.blade.php @@ -217,9 +217,11 @@ `; - spkCreate=` + if(data.status==='spk') { + spkCreate = ` `; + } } return `
` From b52fa5db7a457d8ea4a64ef5e317ef7b2b5054b9 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sat, 21 Dec 2024 05:21:36 +0700 Subject: [PATCH 06/28] Tambahkan fitur kontrol pagination di tampilan tabel - Menambahkan opsi "Show per page" untuk memilih jumlah data yang ditampilkan per halaman. - Menambahkan elemen informasi data dan navigasi pagination di bagian footer tabel. - Perubahan diterapkan pada file `noc/index.blade.php` dan `persetujuan_penawaran/index.blade.php`. --- resources/views/noc/index.blade.php | 13 +++++++++++++ .../views/persetujuan_penawaran/index.blade.php | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/resources/views/noc/index.blade.php b/resources/views/noc/index.blade.php index 3483629..7893562 100644 --- a/resources/views/noc/index.blade.php +++ b/resources/views/noc/index.blade.php @@ -66,6 +66,19 @@
+
@endsection diff --git a/resources/views/persetujuan_penawaran/index.blade.php b/resources/views/persetujuan_penawaran/index.blade.php index c2aeb3a..81ca72f 100644 --- a/resources/views/persetujuan_penawaran/index.blade.php +++ b/resources/views/persetujuan_penawaran/index.blade.php @@ -70,6 +70,19 @@ + @endsection From f22bdd9d9c7efb7d46b1407dfc753e09e057f70c Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sat, 21 Dec 2024 05:21:57 +0700 Subject: [PATCH 07/28] Update tabel permohonan: jumlah data per halaman & format tanggal - Ubah jumlah data yang ditampilkan per halaman dari 5 menjadi 10. - Tambahkan format tanggal Indonesia untuk kolom "Tanggal Permohonan". --- resources/views/permohonan/index.blade.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/resources/views/permohonan/index.blade.php b/resources/views/permohonan/index.blade.php index e73aa03..fb1e3f5 100644 --- a/resources/views/permohonan/index.blade.php +++ b/resources/views/permohonan/index.blade.php @@ -7,7 +7,7 @@ @section('content')
-

@@ -145,7 +145,10 @@ title: 'Nomor Registrasi', }, tanggal_permohonan: { - title: 'Tanggal Permohonan' + title: 'Tanggal Permohonan', + render: (item, data) => { + return `${window.formatTanggalIndonesia(data.tanggal_permohonan)}`; + }, }, user_id: { title: 'User Pemohon', From c0bf6d6be087c91a6220756cf2ef6fe2c245ca0b Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sat, 21 Dec 2024 05:26:11 +0700 Subject: [PATCH 08/28] Tingkatkan ukuran halaman data pada tabel - Mengubah `data-datatable-page-size` dari 5 menjadi 10 di berbagai file Blade. - Perubahan ini bertujuan untuk menampilkan lebih banyak data di setiap halaman tabel untuk meningkatkan pengalaman pengguna. --- resources/views/Ijin_usaha/index.blade.php | 2 +- resources/views/activity/index.blade.php | 2 +- .../views/arah_mata_angin/index.blade.php | 2 +- resources/views/authorization/index.blade.php | 2 +- resources/views/debitur/index.blade.php | 2 +- .../hubungan_pemilik_jaminan/index.blade.php | 2 +- .../hubungan_penghuni_jaminan/index.blade.php | 2 +- resources/views/jenis_aset/index.blade.php | 2 +- resources/views/jenis_dokumen/index.blade.php | 2 +- .../jenis_fasilitas_kredit/index.blade.php | 2 +- resources/views/jenis_jaminan/index.blade.php | 2 +- resources/views/jenis_laporan/index.blade.php | 2 +- .../jenis_legalitas_jaminan/index.blade.php | 2 +- .../views/jenis_penilaian/index.blade.php | 2 +- resources/views/kjpp/index.blade.php | 2 +- resources/views/laporan/index.blade.php | 2 +- resources/views/nilai_plafond/index.blade.php | 2 +- resources/views/noc/index.blade.php | 2 +- .../views/otorisasipenawaran/index.blade.php | 2 +- resources/views/penawaran/index.blade.php | 2 +- .../views/penawaran_ulang/index.blade.php | 2 +- resources/views/penilai/index.blade.php | 2 +- resources/views/penilaian/index.blade.php | 2 +- .../views/penilaian/otorisator/index.blade.php | 2 +- .../permohonan/authorization/index.blade.php | 2 +- resources/views/permohonan/create.blade.php | 2 +- .../persetujuan_penawaran/index.blade.php | 2 +- .../views/prosespenawaran/index.blade.php | 12 ++++++------ .../views/prosespenawaranulang/index.blade.php | 2 +- resources/views/region/index.blade.php | 2 +- resources/views/registrasi/index.blade.php | 2 +- .../views/registrasifinal/index.blade.php | 2 +- resources/views/spk/edit.blade.php | 18 +++++++++--------- resources/views/spk/index.blade.php | 2 +- resources/views/spk/view.blade.php | 2 +- .../views/status_permohonan/index.blade.php | 2 +- .../components/data-pembanding.blade.php | 2 +- resources/views/surveyor/data/index.blade.php | 2 +- resources/views/surveyor/index.blade.php | 2 +- resources/views/teams/index.blade.php | 2 +- .../views/tujuan_penilaian/index.blade.php | 2 +- .../tujuan_penilaian_kjpp/index.blade.php | 2 +- 42 files changed, 55 insertions(+), 55 deletions(-) diff --git a/resources/views/Ijin_usaha/index.blade.php b/resources/views/Ijin_usaha/index.blade.php index f3c7564..27f9d64 100644 --- a/resources/views/Ijin_usaha/index.blade.php +++ b/resources/views/Ijin_usaha/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-

diff --git a/resources/views/activity/index.blade.php b/resources/views/activity/index.blade.php index 72e4efc..e80ec81 100644 --- a/resources/views/activity/index.blade.php +++ b/resources/views/activity/index.blade.php @@ -95,7 +95,7 @@

-
diff --git a/resources/views/arah_mata_angin/index.blade.php b/resources/views/arah_mata_angin/index.blade.php index 817ef1a..3e6f1b8 100644 --- a/resources/views/arah_mata_angin/index.blade.php +++ b/resources/views/arah_mata_angin/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Arah Mata Angin diff --git a/resources/views/authorization/index.blade.php b/resources/views/authorization/index.blade.php index 9c7a782..793892f 100644 --- a/resources/views/authorization/index.blade.php +++ b/resources/views/authorization/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Authorization diff --git a/resources/views/debitur/index.blade.php b/resources/views/debitur/index.blade.php index 9416e04..81341eb 100644 --- a/resources/views/debitur/index.blade.php +++ b/resources/views/debitur/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Debitur diff --git a/resources/views/hubungan_pemilik_jaminan/index.blade.php b/resources/views/hubungan_pemilik_jaminan/index.blade.php index 620ee12..ce6db3f 100644 --- a/resources/views/hubungan_pemilik_jaminan/index.blade.php +++ b/resources/views/hubungan_pemilik_jaminan/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Hubungan Pemilik Jaminan diff --git a/resources/views/hubungan_penghuni_jaminan/index.blade.php b/resources/views/hubungan_penghuni_jaminan/index.blade.php index cc14530..297974b 100644 --- a/resources/views/hubungan_penghuni_jaminan/index.blade.php +++ b/resources/views/hubungan_penghuni_jaminan/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Hubungan Penghuni Jaminan diff --git a/resources/views/jenis_aset/index.blade.php b/resources/views/jenis_aset/index.blade.php index b77bf5b..64da628 100644 --- a/resources/views/jenis_aset/index.blade.php +++ b/resources/views/jenis_aset/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Jenis Aset diff --git a/resources/views/jenis_dokumen/index.blade.php b/resources/views/jenis_dokumen/index.blade.php index d905119..d99757b 100644 --- a/resources/views/jenis_dokumen/index.blade.php +++ b/resources/views/jenis_dokumen/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Jenis Dokumen diff --git a/resources/views/jenis_fasilitas_kredit/index.blade.php b/resources/views/jenis_fasilitas_kredit/index.blade.php index eb525ae..88fa5ac 100644 --- a/resources/views/jenis_fasilitas_kredit/index.blade.php +++ b/resources/views/jenis_fasilitas_kredit/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Jenis Fasilitas Kredit diff --git a/resources/views/jenis_jaminan/index.blade.php b/resources/views/jenis_jaminan/index.blade.php index 4863579..a4b6e6f 100644 --- a/resources/views/jenis_jaminan/index.blade.php +++ b/resources/views/jenis_jaminan/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Jenis Jaminan diff --git a/resources/views/jenis_laporan/index.blade.php b/resources/views/jenis_laporan/index.blade.php index 9d3e280..f922dd6 100644 --- a/resources/views/jenis_laporan/index.blade.php +++ b/resources/views/jenis_laporan/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
diff --git a/resources/views/jenis_legalitas_jaminan/index.blade.php b/resources/views/jenis_legalitas_jaminan/index.blade.php index c3f128d..08b8616 100644 --- a/resources/views/jenis_legalitas_jaminan/index.blade.php +++ b/resources/views/jenis_legalitas_jaminan/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Jenis Legalitas Jaminan diff --git a/resources/views/jenis_penilaian/index.blade.php b/resources/views/jenis_penilaian/index.blade.php index d6de67c..640f4b3 100644 --- a/resources/views/jenis_penilaian/index.blade.php +++ b/resources/views/jenis_penilaian/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
diff --git a/resources/views/kjpp/index.blade.php b/resources/views/kjpp/index.blade.php index 4496fa4..b3f7ee1 100644 --- a/resources/views/kjpp/index.blade.php +++ b/resources/views/kjpp/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-

diff --git a/resources/views/laporan/index.blade.php b/resources/views/laporan/index.blade.php index 46f3aff..39830e2 100644 --- a/resources/views/laporan/index.blade.php +++ b/resources/views/laporan/index.blade.php @@ -9,7 +9,7 @@
-

diff --git a/resources/views/nilai_plafond/index.blade.php b/resources/views/nilai_plafond/index.blade.php index 3384172..e5cfc60 100644 --- a/resources/views/nilai_plafond/index.blade.php +++ b/resources/views/nilai_plafond/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Nilai Plafond diff --git a/resources/views/noc/index.blade.php b/resources/views/noc/index.blade.php index 7893562..3aa73b6 100644 --- a/resources/views/noc/index.blade.php +++ b/resources/views/noc/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar NOC diff --git a/resources/views/otorisasipenawaran/index.blade.php b/resources/views/otorisasipenawaran/index.blade.php index b9f4184..5e3d8e5 100644 --- a/resources/views/otorisasipenawaran/index.blade.php +++ b/resources/views/otorisasipenawaran/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Otorisasi Penawaran diff --git a/resources/views/penawaran/index.blade.php b/resources/views/penawaran/index.blade.php index a8f1d64..24c2711 100644 --- a/resources/views/penawaran/index.blade.php +++ b/resources/views/penawaran/index.blade.php @@ -7,7 +7,7 @@ @section('content')
-

diff --git a/resources/views/penawaran_ulang/index.blade.php b/resources/views/penawaran_ulang/index.blade.php index 988bf71..5841ab6 100644 --- a/resources/views/penawaran_ulang/index.blade.php +++ b/resources/views/penawaran_ulang/index.blade.php @@ -7,7 +7,7 @@ @section('content')
-
diff --git a/resources/views/penilai/index.blade.php b/resources/views/penilai/index.blade.php index ef6f4e1..e415242 100644 --- a/resources/views/penilai/index.blade.php +++ b/resources/views/penilai/index.blade.php @@ -8,7 +8,7 @@
-

diff --git a/resources/views/penilaian/index.blade.php b/resources/views/penilaian/index.blade.php index 9110d92..f4d2d18 100644 --- a/resources/views/penilaian/index.blade.php +++ b/resources/views/penilaian/index.blade.php @@ -7,7 +7,7 @@ @section('content')
-
+

Daftar assignment diff --git a/resources/views/penilaian/otorisator/index.blade.php b/resources/views/penilaian/otorisator/index.blade.php index 66f2d1d..282d63a 100644 --- a/resources/views/penilaian/otorisator/index.blade.php +++ b/resources/views/penilaian/otorisator/index.blade.php @@ -7,7 +7,7 @@ @section('content')
-
diff --git a/resources/views/permohonan/authorization/index.blade.php b/resources/views/permohonan/authorization/index.blade.php index bc09b34..486daf7 100644 --- a/resources/views/permohonan/authorization/index.blade.php +++ b/resources/views/permohonan/authorization/index.blade.php @@ -7,7 +7,7 @@ @section('content')
-
+

Daftar Permohonan diff --git a/resources/views/permohonan/create.blade.php b/resources/views/permohonan/create.blade.php index bc0d4fe..65e6374 100644 --- a/resources/views/permohonan/create.blade.php +++ b/resources/views/permohonan/create.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Debitur diff --git a/resources/views/persetujuan_penawaran/index.blade.php b/resources/views/persetujuan_penawaran/index.blade.php index 81ca72f..2d7eba1 100644 --- a/resources/views/persetujuan_penawaran/index.blade.php +++ b/resources/views/persetujuan_penawaran/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Persetujuan Penawaran diff --git a/resources/views/prosespenawaran/index.blade.php b/resources/views/prosespenawaran/index.blade.php index 8f353df..ca60319 100644 --- a/resources/views/prosespenawaran/index.blade.php +++ b/resources/views/prosespenawaran/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
@@ -42,7 +42,7 @@ Nomor Penawaran - + Tanggal Permohonan @@ -107,7 +107,7 @@ var url = "{{ url('tender/prosespenawaran') }}/" + regId + "/showPermohonan"; $(location).attr('href', url); } - + function showPenawaranData(regId) { var url = "{{ url('tender/prosespenawaran') }}/" + regId; $(location).attr('href', url); @@ -186,7 +186,7 @@ actions: { title: 'Status', render: (item, data) => { - + var iconProses =''; var iconDetail =` @@ -200,14 +200,14 @@ iconDetail=` `; - } + } else if('tender'==data.statusnya) { // data.id ==> penawaran.id iconProses=` `; - } + } else if('proposal-tender'==data.statusnya) { // data.id ==> penawaran.id diff --git a/resources/views/prosespenawaranulang/index.blade.php b/resources/views/prosespenawaranulang/index.blade.php index 86b7c77..67b22e8 100644 --- a/resources/views/prosespenawaranulang/index.blade.php +++ b/resources/views/prosespenawaranulang/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Proses Penawaran Ulang diff --git a/resources/views/region/index.blade.php b/resources/views/region/index.blade.php index 45301e6..01118ec 100644 --- a/resources/views/region/index.blade.php +++ b/resources/views/region/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Region diff --git a/resources/views/registrasi/index.blade.php b/resources/views/registrasi/index.blade.php index 68d8f5f..415f6db 100644 --- a/resources/views/registrasi/index.blade.php +++ b/resources/views/registrasi/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Registrasi diff --git a/resources/views/registrasifinal/index.blade.php b/resources/views/registrasifinal/index.blade.php index 70940ea..4c65df2 100644 --- a/resources/views/registrasifinal/index.blade.php +++ b/resources/views/registrasifinal/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Registrasi Final diff --git a/resources/views/spk/edit.blade.php b/resources/views/spk/edit.blade.php index fe2c34b..fbc7e28 100644 --- a/resources/views/spk/edit.blade.php +++ b/resources/views/spk/edit.blade.php @@ -25,7 +25,7 @@ }
-
+

Buat SPK

@@ -100,7 +100,7 @@ {{ $penawaran->jenis_laporan_name }} - @php $i=1; @endphp + @php $i=1; @endphp @foreach ($data->debiture->documents as $dokumen) Lokasi Jaminan {{ $i }} @@ -117,17 +117,17 @@ @foreach ($data->dokumenjaminan as $dokumen_jaminans) @if ($dokumen->id== $dokumen_jaminans->id) @php $details = $dokumen_jaminans->detail; @endphp - @foreach ($details as $index => $detailku) + @foreach ($details as $index => $detailku) {{ $detailku->name }}{{ $index === count($details) - 1 ? '' : ', ' }} - @endforeach - @endif - @endforeach + @endforeach + @endif + @endforeach - @php $i++; @endphp - @endforeach - + @php $i++; @endphp + @endforeach + Fee / Harga Penilaian : diff --git a/resources/views/spk/index.blade.php b/resources/views/spk/index.blade.php index c6012c7..e1f05ef 100644 --- a/resources/views/spk/index.blade.php +++ b/resources/views/spk/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar SPK diff --git a/resources/views/spk/view.blade.php b/resources/views/spk/view.blade.php index 9145de1..1737f49 100644 --- a/resources/views/spk/view.blade.php +++ b/resources/views/spk/view.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

SPK View diff --git a/resources/views/status_permohonan/index.blade.php b/resources/views/status_permohonan/index.blade.php index 07e8d9a..a502c6d 100644 --- a/resources/views/status_permohonan/index.blade.php +++ b/resources/views/status_permohonan/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Status Permohonan diff --git a/resources/views/surveyor/components/data-pembanding.blade.php b/resources/views/surveyor/components/data-pembanding.blade.php index 10b4be6..76e584a 100644 --- a/resources/views/surveyor/components/data-pembanding.blade.php +++ b/resources/views/surveyor/components/data-pembanding.blade.php @@ -7,7 +7,7 @@ @section('content')
-
diff --git a/resources/views/surveyor/data/index.blade.php b/resources/views/surveyor/data/index.blade.php index ecae761..3978d4c 100644 --- a/resources/views/surveyor/data/index.blade.php +++ b/resources/views/surveyor/data/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar {{$header[0]}} diff --git a/resources/views/surveyor/index.blade.php b/resources/views/surveyor/index.blade.php index 873c5c0..c6f19d6 100644 --- a/resources/views/surveyor/index.blade.php +++ b/resources/views/surveyor/index.blade.php @@ -8,7 +8,7 @@ @endpush
-

diff --git a/resources/views/teams/index.blade.php b/resources/views/teams/index.blade.php index a81d67c..7b9e72a 100644 --- a/resources/views/teams/index.blade.php +++ b/resources/views/teams/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-

diff --git a/resources/views/tujuan_penilaian/index.blade.php b/resources/views/tujuan_penilaian/index.blade.php index 5adadeb..5d69d51 100644 --- a/resources/views/tujuan_penilaian/index.blade.php +++ b/resources/views/tujuan_penilaian/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
+

Daftar Tujuan Penilaian diff --git a/resources/views/tujuan_penilaian_kjpp/index.blade.php b/resources/views/tujuan_penilaian_kjpp/index.blade.php index e4b14e3..2eb40cf 100644 --- a/resources/views/tujuan_penilaian_kjpp/index.blade.php +++ b/resources/views/tujuan_penilaian_kjpp/index.blade.php @@ -6,7 +6,7 @@ @section('content')
-
From 25e45a458e658ea88b9a2024d56c29f50ee0496b Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sun, 22 Dec 2024 16:15:41 +0700 Subject: [PATCH 09/28] Update ikon modul dengan warna dan style baru - Menambahkan warna pada ikon untuk meningkatkan visualisasi dan diferensiasi. - Mengganti beberapa ikon agar lebih sesuai dengan fungsi modul terkait. - Menghapus modul "Pembatalan" dari daftar. --- module.json | 51 +++++++++++++++++++-------------------------------- 1 file changed, 19 insertions(+), 32 deletions(-) diff --git a/module.json b/module.json index 762ae31..bf39dc9 100644 --- a/module.json +++ b/module.json @@ -16,7 +16,7 @@ { "title": "Permohonan", "path": "permohonan", - "icon": "ki-filled ki-questionnaire-tablet text-lg", + "icon": "ki-filled ki-questionnaire-tablet text-lg text-primary", "classes": "", "attributes": [], "permission": "", @@ -29,7 +29,7 @@ { "title": "Persetujuan Penawaran", "path": "persetujuan-penawaran", - "icon": "ki-filled ki-questionnaire-tablet text-lg", + "icon": "ki-filled ki-double-check text-lg text-info", "classes": "", "attributes": [], "permission": "", @@ -41,7 +41,7 @@ { "title": "NOC", "path": "noc", - "icon": "ki-filled ki-questionnaire-tablet text-lg", + "icon": "ki-filled ki-two-credit-cart text-lg text-primary", "classes": "", "attributes": [], "permission": "", @@ -53,7 +53,7 @@ { "title": "Registrasi", "path": "registrasi", - "icon": "ki-filled ki-file-added text-lg", + "icon": "ki-filled ki-add-files text-lg text-primary", "classes": "", "attributes": [], "permission": "", @@ -65,7 +65,7 @@ { "title": "Tender", "path": "tender", - "icon": "ki-filled ki-category text-lg", + "icon": "ki-filled ki-briefcase text-lg text-primary", "classes": "", "attributes": [], "permission": "", @@ -101,7 +101,7 @@ { "title": "Otorisasi Tender", "path": "otorisasitender", - "icon": "ki-filled ki-category text-lg", + "icon": "ki-filled ki-brifecase-tick text-lg text-info", "classes": "", "attributes": [], "permission": "", @@ -130,7 +130,7 @@ { "title": "SPK", "path": "spk", - "icon": "ki-filled ki-file-added text-lg", + "icon": "ki-filled ki-document text-lg text-primary", "classes": "", "attributes": [], "permission": "", @@ -142,7 +142,7 @@ { "title": "Registrasi Final", "path": "registrasifinal", - "icon": "ki-filled ki-file-added text-lg", + "icon": "ki-filled ki-file-added text-lg text-success", "classes": "", "attributes": [], "permission": "", @@ -151,23 +151,10 @@ "admin" ] }, - { - "title": "Pembatalan", - "path": "", - "icon": "ki-filled ki-file-deleted text-lg text-danger", - "classes": "", - "attributes": [], - "permission": "", - "roles": [ - "administrator", - "pemohon-ao", - "pemohon-eo" - ] - }, { "title": "Data Debitur", "path": "debitur", - "icon": "ki-filled ki-people text-lg", + "icon": "ki-filled ki-people text-lg text-primary", "classes": "", "attributes": [], "permission": "", @@ -180,7 +167,7 @@ { "title": "Authorization", "path": "authorization", - "icon": "ki-filled ki-security-user text-lg", + "icon": "ki-filled ki-security-user text-lg text-primary", "classes": "", "attributes": [], "permission": "", @@ -192,7 +179,7 @@ { "title": "Assignment", "path": "penilaian", - "icon": "ki-filled ki-badge text-lg", + "icon": "ki-filled ki-badge text-lg text-primary", "classes": "", "attributes": [], "permission": "", @@ -204,7 +191,7 @@ { "title": "Team Activity", "path": "activity.progres", - "icon": "ki-filled ki-questionnaire-tablet text-lg", + "icon": "ki-filled ki-calendar-tick text-lg text-primary", "classes": "", "attributes": [], "permission": "", @@ -216,7 +203,7 @@ { "title": "Otorisator", "path": "otorisator", - "icon": "ki-filled ki-security-user text-lg", + "icon": "ki-filled ki-security-user text-lg text-info", "classes": "", "attributes": [], "permission": "", @@ -274,7 +261,7 @@ { "title": "Surveyor", "path": "surveyor", - "icon": "ki-filled ki-questionnaire-tablet text-lg", + "icon": "ki-filled ki-questionnaire-tablet text-lg text-primary", "classes": "", "attributes": [], "permission": "", @@ -286,7 +273,7 @@ { "title": "Activity", "path": "activity", - "icon": "ki-filled ki-calendar-edit text-lg", + "icon": "ki-filled ki-calendar-edit text-lg text-primary", "classes": "", "attributes": [], "permission": "", @@ -301,7 +288,7 @@ { "title": "Penilai", "path": "penilai", - "icon": "ki-filled ki-brush text-lg", + "icon": "ki-filled ki-brush text-lg text-primary", "classes": "", "attributes": [], "permission": "", @@ -313,7 +300,7 @@ { "title": "Laporan", "path": "laporan", - "icon": "ki-filled ki-filter-tablet text-lg", + "icon": "ki-filled ki-filter-tablet text-lg text-primary", "classes": "", "attributes": [], "permission": "", @@ -328,7 +315,7 @@ { "title": "Resume", "path": "resume", - "icon": "ki-filled ki-questionnaire-tablet text-lg", + "icon": "ki-filled ki-notepad text-lg text-primary", "classes": "", "attributes": [], "permission": "", @@ -343,7 +330,7 @@ { "title": "Basic Data", "path": "basicdata", - "icon": "ki-filled ki-category text-lg", + "icon": "ki-filled ki-category text-lg text-primary", "classes": "", "attributes": [], "permission": "", From 0d4b6270ecabbc7754e2d48da1faaa22f713d61e Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sun, 22 Dec 2024 20:47:21 +0700 Subject: [PATCH 10/28] Tambahkan badge berdasarkan tujuan penilaian - Menambahkan badge dengan warna berbeda untuk setiap jenis tujuan penilaian (baru, revaluasi aset, lainnya). - Meningkatkan kejelasan tampilan data di halaman permohonan untuk mempermudah identifikasi. --- resources/views/permohonan/index.blade.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/resources/views/permohonan/index.blade.php b/resources/views/permohonan/index.blade.php index fb1e3f5..d799b4e 100644 --- a/resources/views/permohonan/index.blade.php +++ b/resources/views/permohonan/index.blade.php @@ -174,7 +174,12 @@ tujuan_penilaian_id: { title: 'Tujuan Penilaian', render: (item, data) => { - return `${data.tujuan_penilaian.name}`; + if(data.tujuan_penilaian.name=="Penilaian Baru"){ + return `${data.tujuan_penilaian.name}`; + } else if(data.tujuan_penilaian.name=="Revaluasi Aset"){ + return `${data.tujuan_penilaian.name}`; + } + return `${data.tujuan_penilaian.name}`; }, }, status: { From efba1aa95377925296c9de2a3cd61d13fe44f1a7 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sun, 22 Dec 2024 20:51:00 +0700 Subject: [PATCH 11/28] Perbaiki tampilan status pada history permohonan - Menghilangkan baris kosong yang tidak perlu pada blok kode case 'order'. - Menambahkan fungsi `str_replace` untuk mengganti tanda strip (-) dengan spasi pada tampilan status aktivitas. - Meningkatkan keterbacaan status aktivitas pada komponen history permohonan. --- resources/views/component/history-permohonan.blade.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/resources/views/component/history-permohonan.blade.php b/resources/views/component/history-permohonan.blade.php index 85ed489..f0c1063 100644 --- a/resources/views/component/history-permohonan.blade.php +++ b/resources/views/component/history-permohonan.blade.php @@ -29,7 +29,6 @@ @case('order') @break - @case('revisi') @break @@ -59,7 +58,7 @@ @endswitch
- {{ $activity->status }} + {{ str_replace('-',' ',$activity->status) }}

{{ $activity->keterangan }}

{{ $activity->created_by ? $activity->creator->name : 'System' }} From 8c461238537fd6de17d2035302883cf9a31736b8 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sun, 22 Dec 2024 21:10:44 +0700 Subject: [PATCH 12/28] `Perbaiki logika render badge pada tabel tujuan penilaian` - Mengganti penggunaan `if-else` dengan `switch-case` untuk menyederhanakan logika. - Menambahkan kode spesifik (`code`) untuk setiap tipe tujuan penilaian. - Menambahkan badge baru untuk beberapa tipe tujuan penilaian dengan desain dan warna spesifik. --- resources/views/permohonan/index.blade.php | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/resources/views/permohonan/index.blade.php b/resources/views/permohonan/index.blade.php index d799b4e..edc6d33 100644 --- a/resources/views/permohonan/index.blade.php +++ b/resources/views/permohonan/index.blade.php @@ -174,12 +174,24 @@ tujuan_penilaian_id: { title: 'Tujuan Penilaian', render: (item, data) => { - if(data.tujuan_penilaian.name=="Penilaian Baru"){ - return `${data.tujuan_penilaian.name}`; - } else if(data.tujuan_penilaian.name=="Revaluasi Aset"){ - return `${data.tujuan_penilaian.name}`; + switch (data.tujuan_penilaian.code) { + case "TP0001": + return `${data.tujuan_penilaian.name}`; + case "TP0002": + return `${data.tujuan_penilaian.name}`; + case "TP0003": + return `${data.tujuan_penilaian.name}`; + case "TP0004": + return `${data.tujuan_penilaian.name}`; + case "TP0005": + return `${data.tujuan_penilaian.name}`; + case "TP0006": + return `${data.tujuan_penilaian.name}`; + case "TP0007": + return `${data.tujuan_penilaian.name}`; + default: + return `${data.tujuan_penilaian.name}`; } - return `${data.tujuan_penilaian.name}`; }, }, status: { From 32f62e4d24dc34939fd748ef7efa0fec30c3c7e2 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sun, 22 Dec 2024 21:15:31 +0700 Subject: [PATCH 13/28] Perbaiki typo pada class badge - Memperbaiki penulisan "bagde-outline" menjadi "badge-outline" di beberapa case pada file `index.blade.php`. - Menghindari potensi kesalahan tampilan akibat typo pada class CSS. --- resources/views/permohonan/index.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/permohonan/index.blade.php b/resources/views/permohonan/index.blade.php index edc6d33..095752d 100644 --- a/resources/views/permohonan/index.blade.php +++ b/resources/views/permohonan/index.blade.php @@ -188,9 +188,9 @@ case "TP0006": return `${data.tujuan_penilaian.name}`; case "TP0007": - return `${data.tujuan_penilaian.name}`; + return `${data.tujuan_penilaian.name}`; default: - return `${data.tujuan_penilaian.name}`; + return `${data.tujuan_penilaian.name}`; } }, }, From 72837004d75545c8b26ae95de819ebc5a7112c53 Mon Sep 17 00:00:00 2001 From: Andy Chaerudin Date: Mon, 23 Dec 2024 09:52:44 +0700 Subject: [PATCH 14/28] menyamakan staging --- app/Http/Controllers/PenilaiController.php | 390 +++++++++++++++--- .../views/surveyor/components/tanah.blade.php | 2 +- 2 files changed, 340 insertions(+), 52 deletions(-) diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index e6a578e..38ccedc 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -5,16 +5,25 @@ namespace Modules\Lpj\Http\Controllers; use Illuminate\Http\Request; use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\Inspeksi; +use Modules\Lpj\Models\Penilai; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Auth; use Maatwebsite\Excel\Facades\Excel; use Modules\Lpj\Exports\KertasKerjaExport; use Modules\Lpj\Http\Controllers\SurveyorController; +use Modules\Location\Models\Province; class PenilaiController extends Controller { public $user; + protected $surveyorController; + + public function __construct(SurveyorController $surveyorController) + { + $this->surveyorController = $surveyorController; + } + /** * Display a listing of the resource. */ @@ -26,20 +35,21 @@ class PenilaiController extends Controller /** * Show the form for creating a new resource. */ - public function lampiran($id) + public function lampiran(Request $request, $id) { - $permohonan = Permohonan::with('debiture.documents')->find($id); - $jaminanId = $permohonan->debiture->documents->first()->jenis_jaminan_id; + $permohonanId = $request->query('permohonanId'); + $documentId = $request->query('documentId'); + $jaminanId = $request->query('jaminanId'); - $inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); + $permohonan = $this->surveyorController->getPermohonanJaminanId($id, $documentId, $jaminanId); + $inpeksi = Inspeksi::where('permohonan_id', $id)->where('dokument_id', $documentId)->first(); $formFoto = null; if ($inpeksi) { $formFoto = json_decode($inpeksi->foto_form, true); } - return view('lpj::penilai.lampiran', compact('permohonan', 'formFoto')); } @@ -56,48 +66,103 @@ class PenilaiController extends Controller // } - public function sederhana($id) + public function sederhana(Request $request, $id) { - $data = new SurveyorController(); - $basicData = $data->getCommonData(); - $permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian'])->find($id); - $jaminanId = $permohonan->debiture->documents->first()->jenis_jaminan_id; - $inspeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); - $forminspeksi = null; - if ($inspeksi) { - $forminspeksi = json_decode($inspeksi->data_form, true); - } - return view('lpj::penilai.components.lpj-sederhana-standard', compact('permohonan', 'basicData', 'forminspeksi', 'inspeksi')); - } + $basicData = $this->surveyorController->getCommonData(); - public function standard($id) - { - $permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian'])->find($id); + $documentId = $request->query('documentId'); + $inspeksiId = $request->query('inspeksiId'); + $jaminanId = $request->query('jaminanId'); - $jaminanId = $permohonan->debiture->documents->first()->jenis_jaminan_id; + $permohonan = $this->surveyorController->getPermohonanJaminanId($id, $documentId, $jaminanId); - $inspeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); - $forminspeksi = null; + + + $inspeksi = Inspeksi::where('permohonan_id', $id)->where('dokument_id', $documentId)->first(); + $lpj = Penilai::where('permohonan_id', $id)->where('dokument_id', $documentId)->first(); + + $lpjData = null; if ($inspeksi) { $forminspeksi = json_decode($inspeksi->data_form, true); } - $data = new SurveyorController(); - $basicData = $data->getCommonData(); + if ($lpj) { + $lpjData = json_decode($lpj->lpj, true); + } - return view('lpj::penilai.components.lpj-sederhana-standard', compact('permohonan', 'forminspeksi', 'basicData', 'inspeksi')); + return view('lpj::penilai.components.lpj-sederhana-standard', compact('permohonan', 'basicData', 'forminspeksi', 'inspeksi', 'lpjData')); } - public function resume($id) + public function standard(Request $request, $id) { - $permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian'])->find($id); - return view('lpj::penilai.components.resume', compact('permohonan')); + + $documentId = $request->query('documentId'); + $jaminanId = $request->query('jaminanId'); + + $permohonan = $this->surveyorController->getPermohonanJaminanId($id, $documentId, $jaminanId); + $basicData = $this->surveyorController->getCommonData(); + + $inspeksi = Inspeksi::where('permohonan_id', $id)->where('dokument_id', $documentId)->first(); + $lpj = Penilai::where('permohonan_id', $id)->where('dokument_id', $documentId)->first(); + + $forminspeksi = null; + $lpjData = null; + if ($inspeksi) { + $forminspeksi = json_decode($inspeksi->data_form, true); + } + + if ($lpj) { + $lpjData = json_decode($lpj->lpj, true); + } + + return view('lpj::penilai.components.lpj-sederhana-standard', compact('permohonan', 'forminspeksi', 'basicData', 'inspeksi', 'lpjData')); } - public function memo() + public function resume(Request $request) { - return view('lpj::resume.index'); + $permohonanId = $request->query('permohonanId'); + $documentId = $request->query('documentId'); + $inspeksiId = $request->query('inspeksiId'); + $jaminanId = $request->query('jaminanId'); + + $permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId); + $inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); + + + $resume = Penilai::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); + $lpjData = null; + if ($resume) { + $resumeData = json_decode($resume->resume, true); + } + + return view('lpj::penilai.components.resume', compact('permohonan', 'resumeData')); + } + + public function memo(Request $request) + { + $permohonanId = $request->query('permohonanId'); + $documentId = $request->query('documentId'); + $inspeksiId = $request->query('inspeksiId'); + $jaminanId = $request->query('jaminanId'); + + $permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId); + $inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); + + $provinces = Province::all(); + $basicData = $this->surveyorController->getCommonData(); + + $formFoto = null; + $formPeta = null; + if ($inspeksi) { + $formFoto = json_decode($inspeksi->foto_form, true); + $formPeta = json_decode($inspeksi->data_form, true); + + } + + + + return view('lpj::penilai.components.memo', compact('permohonan', 'formFoto', 'formPeta', 'provinces', 'basicData')); } @@ -106,7 +171,7 @@ class PenilaiController extends Controller */ public function show($id) { - $permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian'])->find($id); + $permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian', 'documents.inspeksi'])->find($id); // return response()->json(['permohonan' => $permohonan]); return view('lpj::penilai.show', compact('permohonan')); @@ -123,11 +188,34 @@ class PenilaiController extends Controller /** * Update the specified resource in storage. */ - public function update(Request $request, $id) + public function paparan(Request $request) { - // + + $permohonanId = $request->query('permohonanId'); + $documentId = $request->query('documentId'); + $inspeksiId = $request->query('inspeksiId'); + $jaminanId = $request->query('jaminanId'); + + $permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId); + $penilai = Penilai::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); + $inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where + ('dokument_id', $documentId)->first(); + $formFoto = null; + if ($inspeksi) { + $formFoto = json_decode($inspeksi->foto_form, true); + } + + return view('lpj::penilai.components.paparan', compact('permohonan', 'formFoto', 'penilai')); } + + public function rap(Request $request) + { + $permohonanId = $request->query('permohonanId'); + return view('lpj::penilai.components.paparan'); + } + + /** * Remove the specified resource from storage. */ @@ -157,10 +245,10 @@ class PenilaiController extends Controller }); } - // Apply whereHas to check penilai_id, role, and user_id specifically for 'penilai' role + $query->whereHas('penilaian.userPenilai', function ($q) { - $q->where('role', 'penilai') // Ensure the role is 'penilai' - ->where('user_id', 12); // Ganti dengan Auth::user()->id jika dinamis + $q->where('role', 'penilai') + ->where('user_id', Auth::user()->id); }); // Apply sorting if provided @@ -213,26 +301,226 @@ class PenilaiController extends Controller ]); } - public function kertas_kerja($id, $jaminanId) + public function export_kertas_kerja(Request $request) { - $data = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); - // $data = null; - // $headerInfo = [ - // 'tanggal_penilaian' => '', - // 'nama_pemilik' => '', - // 'nama_pemberi_tugas' => '', - // 'lokasi_lengkap' => '', - // 'nama_debitur' => '' - // ]; + $permohonanId = $request->query('permohonanId'); + $documentId = $request->query('documentId'); + $inspeksiId = $request->query('inspeksiId'); + $jaminanId = $request->query('jaminanId'); - // $datas = json_decode($data->data_pembanding); - // return response()->json(['data' =>$datas ]); + $data = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); - // return view('lpj::component.kertas-kerja', compact('data')); - return Excel::download(new KertasKerjaExport($data), 'kertas-kerja.xlsx'); + return view('lpj::component.kertas-kerja', compact('data')); + // return Excel::download(new KertasKerjaExport($data), 'kertas-kerja.xlsx'); } + public function import_kertas_kerja(Request $request) + { + + $validatedData = $request->validate([ + 'permohonan_id' => 'required|integer', + 'document_id' => 'required|integer', + 'inspeksi_id' => 'required|integer', + 'kertas_kerja' => 'required|file|mimes:pdf,doc,docx,xls,xlsx,xlsx', + ]); + + try { + // Simpan file kertas kerja + if ($request->hasFile('kertas_kerja')) { + $file = $request->file('kertas_kerja'); + $filePath = $this->surveyorController->uploadFile($file, 'kertas_kerja'); + Penilai::updateOrCreate( + [ + 'permohonan_id' => $validatedData['permohonan_id'], + 'dokument_id' => $validatedData['document_id'], + 'inspeksi_id' => $validatedData['inspeksi_id'], + ], + [ + 'kertas_kerja' => $filePath, + ] + ); + + return response()->json(['success' => true, 'message' => 'Kertas kerja berhasil diunggah.']); + } + + return response()->json(['success' => false, 'message' => 'File kertas kerja tidak ditemukan.'], 400); + } catch (\Exception $e) { + return response()->json(['success' => false, 'message' => 'Terjadi kesalahan: ' . $e->getMessage()], 500); + } + } + + + public function status($id) + { + $penilai = Penilai::find($id); + return response()->json(['data' => $penilai]); + } + + public function checkStatusLpj(Request $request) + { + $permohonanId = $request->query('permohonanId'); + $documentId = $request->query('documentId'); + $inspeksiId = $request->query('inspeksiId'); + + $statusLpj = Penilai::where('permohonan_id', $permohonanId) + ->where('dokument_id', $documentId) + ->where('inspeksi_id', $inspeksiId) + ->first(); + + return response()->json(['status' => $statusLpj ? $statusLpj->type : null]); + } + + public function saveStatusLpj(Request $request) + { + + Penilai::updateOrCreate( + [ + 'permohonan_id' => $request->permohonan_id, + 'dokument_id' => $request->document_id, + 'inspeksi_id' => $request->inspeksi_id, + ], + [ + 'type' => $request->type, + ] + ); + + return response()->json(['success' => true]); + } + + + public function storePenilaian($id) + { + try { + $permohonan = Permohonan::findOrFail($id); + $permohonan->update([ + 'status' => 'proses-laporan', + ]); + + return response()->json([ + 'success' => true, + 'message' => 'Berhasil menyimpan penilaian' + ], 200); + + } catch (\Exception $e) { + return response()->json([ + 'success' => false, + 'message' => 'Terjadi kesalahan', + 'error' => $e->getMessage() + ], 500); + } + } + + public function storeResume(Request $request) + { + try { + + // dd($request->all()); + $validatedData = $request->validate([ + 'permohonan_id' => 'required', + 'document_id' => 'required', + 'inspeksi_id' => 'required', + 'resume' => 'required|array', + ]); + + // Simpan atau update data + Penilai::updateOrCreate( + [ + 'permohonan_id' => $validatedData['permohonan_id'], + 'dokument_id' => $validatedData['document_id'], + 'inspeksi_id' => $validatedData['inspeksi_id'], + ], + [ + 'resume' => json_encode($validatedData['resume']), + ] + ); + + + return response()->json([ + 'success' => true, + 'message' => 'Berhasil saved resume' + ], 200); + } catch (\Exception $e) { + return response()->json([ + 'success' => false, + 'message' => 'Terjadi kesalahan', + 'error' => $e->getMessage() + ], 500); + } + } + + + public function storeMemo(Request $request) + { + try { + + $validatedData = $request->validate([ + 'permohonan_id' => 'required|integer', + 'document_id' => 'required|integer', + 'inspeksi_id' => 'required|integer', + 'memo' => 'required', + ]); + Penilai::updateOrCreate( + [ + 'permohonan_id' => $validatedData['permohonan_id'], + 'dokument_id' => $validatedData['document_id'], + 'inspeksi_id' => $validatedData['inspeksi_id'], + ], + [ + 'memo' => json_encode($validatedData['memo']), + ] + ); + + + return response()->json([ + 'success' => true, + 'message' => 'Berhasil saved memo' + ], 200); + } catch (\Exception $e) { + return response()->json([ + 'success' => false, + 'message' => 'Terjadi kesalahan', + 'error' => $e->getMessage() + ], 500); + } + } + + public function storeLpjSederhanadanStandard(Request $request) + { + + try { + + $validatedData = $request->validate([ + 'permohonan_id' => 'required|integer', + 'document_id' => 'required|integer', + 'inspeksi_id' => 'required|integer', + 'lpj' => 'required', + ]); + Penilai::updateOrCreate( + [ + 'permohonan_id' => $validatedData['permohonan_id'], + 'dokument_id' => $validatedData['document_id'], + 'inspeksi_id' => $validatedData['inspeksi_id'], + ], + [ + 'lpj' => json_encode($validatedData['lpj']), + ] + ); + + + return response()->json([ + 'success' => true, + 'message' => 'Berhasil saved lpj' + ], 200); + } catch (\Exception $e) { + return response()->json([ + 'success' => false, + 'message' => 'Terjadi kesalahan', + 'error' => $e->getMessage() + ], 500); + } + } + } diff --git a/resources/views/surveyor/components/tanah.blade.php b/resources/views/surveyor/components/tanah.blade.php index 03b2512..f089f6c 100644 --- a/resources/views/surveyor/components/tanah.blade.php +++ b/resources/views/surveyor/components/tanah.blade.php @@ -17,7 +17,7 @@ @php $luas = $item->detail; $details = json_decode($luas[0]->details, true); - $luas_tanah = isset($details['luas_tanah']) ? $details['luas_tanah'] : 'N/A'; + $luas_tanah = isset($details['luas']) ? $details['luas'] : 'N/A'; @endphp

{{ $luas_tanah }} m2

From e5d4874af1b7764d269e9a2203942b4ef1726a81 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 23 Dec 2024 15:43:53 +0700 Subject: [PATCH 15/28] Tambah fitur pembatalan permohonan - Menambahkan model, migration, dan relasi untuk tabel pembatalan permohonan. - Mengubah fungsi delete menjadi pembatalan permohonan dengan konfirmasi pengguna. - Menambahkan route baru untuk form dan proses pembatalan permohonan. - Menyediakan form input alasan dan file pendukung untuk pembatalan permohonan. - Memperbarui tampilan, fungsi controller, dan breadcrumbs terkait pembatalan permohonan. --- app/Http/Controllers/PermohonanController.php | 34 +++++++++ app/Models/Permohonan.php | 4 + app/Models/PermohonanPembatalan.php | 50 +++++++++++++ ...00_create_permohonan_pembatalans_table.php | 35 +++++++++ resources/views/permohonan/index.blade.php | 36 ++++----- .../permohonan/pembatalan-form.blade.php | 73 +++++++++++++++++++ routes/breadcrumbs.php | 14 ++++ routes/web.php | 2 + 8 files changed, 227 insertions(+), 21 deletions(-) create mode 100644 app/Models/PermohonanPembatalan.php create mode 100644 database/migrations/2024_12_22_140000_create_permohonan_pembatalans_table.php create mode 100644 resources/views/permohonan/pembatalan-form.blade.php diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index 0d6ebb0..8cf40fb 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -353,4 +353,38 @@ // $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'); + } + } diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index f8d57da..cd76646 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -159,4 +159,8 @@ { return $this->hasMany(DokumenJaminan::class); } + + public function pembatalan(){ + return $this->hasMany(PermohonanPembatalan::class); + } } diff --git a/app/Models/PermohonanPembatalan.php b/app/Models/PermohonanPembatalan.php new file mode 100644 index 0000000..1197b2f --- /dev/null +++ b/app/Models/PermohonanPembatalan.php @@ -0,0 +1,50 @@ + 'string', + ]; + + // Relationship with Permohonan + public function permohonan() + { + return $this->belongsTo(Permohonan::class, 'permohonan_id'); + } + + public function creator(){ + return $this->belongsTo(User::class, 'created_by'); + } + } diff --git a/database/migrations/2024_12_22_140000_create_permohonan_pembatalans_table.php b/database/migrations/2024_12_22_140000_create_permohonan_pembatalans_table.php new file mode 100644 index 0000000..0046d05 --- /dev/null +++ b/database/migrations/2024_12_22_140000_create_permohonan_pembatalans_table.php @@ -0,0 +1,35 @@ +id(); + $table->unsignedBigInteger('permohonan_id'); + $table->text('alasan_pembatalan'); + $table->string('file_pembatalan'); + $table->enum('status', ['pending', 'approved', 'rejected'])->default('pending'); + $table->text('keterangan')->nullable(); + $table->timestamps(); + $table->timestamp('authorized_at')->nullable(); + $table->char('authorized_status', 1)->nullable(); + $table->softDeletes(); + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + $table->unsignedBigInteger('authorized_by')->nullable(); + + $table->foreign('permohonan_id')->references('id')->on('permohonan')->onDelete('cascade'); + }); + } + + public function down() + { + Schema::dropIfExists('permohonan_pembatalan'); + } +} diff --git a/resources/views/permohonan/index.blade.php b/resources/views/permohonan/index.blade.php index 095752d..eccb166 100644 --- a/resources/views/permohonan/index.blade.php +++ b/resources/views/permohonan/index.blade.php @@ -8,7 +8,7 @@
+ data-datatable-state-save="false" id="permohonan-table" data-api-url="{{ route('permohonan.datatables') }}">

Daftar Permohonan @@ -29,7 +29,7 @@
+ data-datatable-table="true"> - + +
@@ -91,15 +91,15 @@ @push('scripts') + @endpush diff --git a/resources/views/permohonan/index.blade.php b/resources/views/permohonan/index.blade.php index eccb166..deaf27a 100644 --- a/resources/views/permohonan/index.blade.php +++ b/resources/views/permohonan/index.blade.php @@ -31,44 +31,44 @@ - - - - - - - - - - - - + + + + + + + + + + + +
- - - Nomor Registrasi - - - Tanggal Permohonan - - - User Pemohon - - - Cabang Pemohon - - - Debitur - - - Tujuan Penilaian - - - Status - - - Keterangan - - Action
+ + + Nomor Registrasi + + + Tanggal Permohonan + + + User Pemohon + + + Cabang Pemohon + + + Debitur + + + Tujuan Penilaian + + + Status + + + Keterangan + + Action
@@ -186,7 +186,10 @@ }, }, status: { - title: 'Status' + title: 'Status', + render: (item, data) => { + return `${data.status}`; + } }, keterangan: { title: 'Keterangan' @@ -194,7 +197,7 @@ actions: { title: 'Actions', render: (item, data) => { - let actionHtml = `
`; + let actionHtml = `
`; if (data && data.penilaian && data.penilaian.waktu_penilaian !== null && data.status !== 'done' && data.penilaian.authorized_status == null) { @@ -233,7 +236,7 @@ let dataTable = new KTDataTable(element, dataTableOptions); // Custom search functionality - searchInput.addEventListener('input', function() { + searchInput.addEventListener('input', function () { const searchValue = this.value.trim(); dataTable.search(searchValue, true); @@ -267,19 +270,19 @@ cache: false, data: input_data, dataType: "json", - success: function(response) { + success: function (response) { console.log(response); if ('success' == response.status) { swal.fire('Sukses Menyetujui!', response.message, 'success').then( - () => { - location.reload(true); - }); + () => { + location.reload(true); + }); } else { Swal.fire('Error!', response.message, 'error'); } }, - error: function(response, textStatus, errorThrown) { + error: function (response, textStatus, errorThrown) { // var errors = response.responseJSON.errors; // console.log(errors); console.log(response); diff --git a/routes/web.php b/routes/web.php index 51b8f81..83fd7df 100644 --- a/routes/web.php +++ b/routes/web.php @@ -18,6 +18,7 @@ use Modules\Lpj\Http\Controllers\KJPPController; use Modules\Lpj\Http\Controllers\LaporanController; use Modules\Lpj\Http\Controllers\NilaiPlafondController; use Modules\Lpj\Http\Controllers\NocController; + use Modules\Lpj\Http\Controllers\PembatalanController; use Modules\Lpj\Http\Controllers\PemilikJaminanController; use Modules\Lpj\Http\Controllers\PenilaianController; use Modules\Lpj\Http\Controllers\PenilaiController; @@ -372,6 +373,11 @@ Route::middleware(['auth'])->group(function () { Route::resource('permohonan', PermohonanController::class); + Route::name('pembatalan.')->prefix('pembatalan')->group(function () { + Route::get('datatables', [PembatalanController::class, 'dataForDatatables'])->name('datatables'); + }); + Route::resource('pembatalan', PembatalanController::class); + Route::get('authorization', [PermohonanController::class, 'authorization'])->name('authorization.index'); Route::get('authorization/datatables', [PermohonanController::class, 'dataForAuthorization'])->name( 'authorization.datatables', From 87b33375021a6eefbb2a43c7d2ef7a54ead2b60e Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 23 Dec 2024 15:44:43 +0700 Subject: [PATCH 17/28] Sembunyikan elemen status bayar di formulir persetujuan penawaran - Menambahkan kelas "hidden" pada div elemen status bayar. - Elemen tidak lagi terlihat di tampilan pengguna. --- resources/views/persetujuan_penawaran/form.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/persetujuan_penawaran/form.blade.php b/resources/views/persetujuan_penawaran/form.blade.php index c27c4e8..4c17b59 100644 --- a/resources/views/persetujuan_penawaran/form.blade.php +++ b/resources/views/persetujuan_penawaran/form.blade.php @@ -25,7 +25,7 @@ -
+
@endsection @push('styles') @@ -219,4 +219,4 @@ display: none } -@endpush \ No newline at end of file +@endpush From 069cf18a8bfa986ac08a2897c6d8eb78f254f4a7 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 23 Dec 2024 15:59:09 +0700 Subject: [PATCH 19/28] Transformasi nama debitur menjadi huruf kapital - Mengubah rendering nama debitur agar ditampilkan dalam huruf kapital. - Memastikan konsistensi format tampilan pada kolom "Debitur". --- resources/views/permohonan/index.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/permohonan/index.blade.php b/resources/views/permohonan/index.blade.php index deaf27a..d73af03 100644 --- a/resources/views/permohonan/index.blade.php +++ b/resources/views/permohonan/index.blade.php @@ -157,7 +157,7 @@ title: 'Debitur', render: (item, data) => { if (data.debiture) { - return `${data.debiture.name}`; + return `${data.debiture.name.toUpperCase()}`; } return "-"; }, From ab21e31633501771ee8e70e559b2ace023b141f9 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 23 Dec 2024 16:16:27 +0700 Subject: [PATCH 20/28] Update tampilan status dan aksi pada halaman pembatalan - Menambahkan kelas `flex justify-center` pada render status untuk memastikan tampilan sejajar di tengah. - Menambahkan atribut `title="Detail Pembatalan"` pada tombol aksi untuk memberikan informasi tambahan. --- resources/views/pembatalan/index.blade.php | 26 +++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/resources/views/pembatalan/index.blade.php b/resources/views/pembatalan/index.blade.php index 5078d9f..6e27000 100644 --- a/resources/views/pembatalan/index.blade.php +++ b/resources/views/pembatalan/index.blade.php @@ -131,18 +131,6 @@ alasan_pembatalan: { title: 'Alasan Pembatalan' }, - status: { - title: 'Status', - render: (item, data) => { - if (data.status === 'pending') { - return `Pending`; - } else if (data.status === 'approved') { - return `Diterima`; - } else if (data.status === 'rejected') { - return `Ditolak`; - } - } - }, file_pembatalan: { title: 'Dokumen Pendukung', render: (item, data) => { @@ -154,13 +142,25 @@ } } }, + status: { + title: 'Status', + render: (item, data) => { + if (data.status === 'pending') { + return `Pending`; + } else if (data.status === 'approved') { + return `Diterima`; + } else if (data.status === 'rejected') { + return `Ditolak`; + } + } + }, actions: { title: 'Action', render: (item, data) => { @if(auth()->user()->roles()->first()->name === "administrator" || auth()->user()->roles()->first()->name === "pemohon-eo") if (data.status === 'pending') { return ``; From fb59e0830c7234802dd41f4c4dda54315e71549f Mon Sep 17 00:00:00 2001 From: Andy Chaerudin Date: Mon, 23 Dec 2024 18:39:42 +0700 Subject: [PATCH 21/28] menambahkan Feature Pembayaran di Admin LPJ --- app/Http/Controllers/PembayaranController.php | 150 ++++++++++ app/Models/Permohonan.php | 6 +- ...4_10_01_095350_update_permohonan_table.php | 6 +- ...4_12_23_041954_update_permohonan_table.php | 32 +++ module.json | 12 + resources/views/pembayaran/index.blade.php | 265 ++++++++++++++++++ routes/breadcrumbs_registrasi.php | 6 + routes/registrasi.php | 8 + 8 files changed, 483 insertions(+), 2 deletions(-) create mode 100644 app/Http/Controllers/PembayaranController.php create mode 100644 database/migrations/2024_12_23_041954_update_permohonan_table.php create mode 100644 resources/views/pembayaran/index.blade.php diff --git a/app/Http/Controllers/PembayaranController.php b/app/Http/Controllers/PembayaranController.php new file mode 100644 index 0000000..5978e19 --- /dev/null +++ b/app/Http/Controllers/PembayaranController.php @@ -0,0 +1,150 @@ +user) || !$this->user->can('debitur.view')) { + // abort(403, 'Sorry! You are not allowed to view users.'); + } + + + /* + // Tentukan status berdasarkan otorisator + $status = match ($otorisator) { + 'Pelaporan' => 'proses-laporan', + 'Pembayaran' => 'proses', + 'Pembatalan' => 'batal', + 'SLA' => 'freeze', + default => '', + }; + */ + + $query = Permohonan::query()->whereIn('status_bayar', ['sudah_bayar']); + /* + // Pencarian berdasarkan parameter search + 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 . '%'); + }); + } + */ + + // Filter berdasarkan region user yang login + // $query->whereHas('region.teams.teamsUsers', function ($q) { + // $q->where('user_id', Auth::id()); + // }); + + + // Sorting berdasarkan sortField dan sortOrder + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Hitung total records + $totalRecords = $query->count(); + + // Pagination (default page size 10) + $size = $request->get('size', 10); + if ($size == 0) { + $size = 10; + } + + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page', 1); + $offset = ($page - 1) * $size; + + $query->skip($offset)->take($size); + } + + // Filtered records + $filteredRecords = $query->count(); + + // Ambil data dengan relasi + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'region.teams.teamsUsers'])->get(); + + + // Hitung jumlah halaman + $pageCount = ceil($totalRecords / $size); + + // Ambil current page + $currentPage = max(1, $request->get('page', 1)); + + // Return JSON response + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + + } + + public function update(Request $request, $id) + : JsonResponse { + // init + $data = []; + $dataku = []; + $tindakan = null; + if (request()->ajax()) { + + try { + + $dataku = [ + 'approve_bayar_by' => Auth::id(), + 'approve_bayar_at' => now(), + ]; + + if ($request->keterangan) { + $dataku['approve_keterangan_bayar'] = $request->keterangan; + } + + $data['dataku'] = $dataku; + + $modal = Permohonan::find($id); + $modal->update($dataku); + // + $data['status'] = 'success'; + $data['message'] = ['Otorisasi' . $modal->nomor_registrasi . 'berhasil di lakukan']; + } catch (Exception $e) { + $data['status'] = 'error'; + $data['message'] = ['Otorisasi gagal di lakukan.']; + } + + } + return response()->json($data); + } +} \ No newline at end of file diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index f8d57da..d47b68e 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -40,7 +40,11 @@ 'registrasi_at', 'jenis_penilaian_id', 'region_id', - 'sla' + 'sla', + // andy add + 'approve_keterangan_bayar', + 'approve_bayar_by', + 'approve_bayar_at', ]; protected static function boot() diff --git a/database/migrations/2024_10_01_095350_update_permohonan_table.php b/database/migrations/2024_10_01_095350_update_permohonan_table.php index 98794df..2bc1272 100644 --- a/database/migrations/2024_10_01_095350_update_permohonan_table.php +++ b/database/migrations/2024_10_01_095350_update_permohonan_table.php @@ -26,7 +26,11 @@ return new class extends Migration public function down(): void { Schema::table('permohonan', function (Blueprint $table) { - + $table->dropColumn('registrasi_catatan'); + $table->dropColumn('registrasi_by'); + $table->dropColumn('registrasi_at'); + $table->dropColumn('jenis_penilaian_id'); + $table->dropColumn('region_id'); }); } }; diff --git a/database/migrations/2024_12_23_041954_update_permohonan_table.php b/database/migrations/2024_12_23_041954_update_permohonan_table.php new file mode 100644 index 0000000..b8166f4 --- /dev/null +++ b/database/migrations/2024_12_23_041954_update_permohonan_table.php @@ -0,0 +1,32 @@ +text('approve_keterangan_bayar')->nullable()->after('status_bayar')->comment('kebutuhan untuk feature Pembayaran di adminl lpj'); + $table->unsignedBigInteger('approve_bayar_by')->nullable()->after('approve_keterangan_bayar')->comment('kebutuhan untuk feature Pembayaran di adminl lpj'); + $table->timestamp('approve_bayar_at')->nullable()->after('approve_bayar_by')->comment('kebutuhan untuk feature Pembayaran di adminl lpj'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('permohonan', function (Blueprint $table) { + $table->dropColumn('approve_keterangan_bayar'); + $table->dropColumn('approve_bayar_by'); + $table->dropColumn('approve_bayar_at'); + }); + } +}; diff --git a/module.json b/module.json index bf39dc9..bc0647f 100644 --- a/module.json +++ b/module.json @@ -151,6 +151,18 @@ "admin" ] }, + { + "title": "Pembayaran", + "path": "pembayaran", + "icon": "ki-filled ki-file-added text-lg text-success", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "admin" + ] + }, { "title": "Data Debitur", "path": "debitur", diff --git a/resources/views/pembayaran/index.blade.php b/resources/views/pembayaran/index.blade.php new file mode 100644 index 0000000..506560a --- /dev/null +++ b/resources/views/pembayaran/index.blade.php @@ -0,0 +1,265 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('pembayaran') }} +@endsection + +@section('content') +
+
+
+

+ Daftar Pembayaran +

+
+
+ +
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + +
+ + + Nomor Registrasi + + + Tanggal Permohonan + + + User Pemohon + + + Cabang Pemohon + + + Debitur + + + Tujuan Penilaian + + + Status Approve + + + Status Bayar + + Action
+
+ +
+
+
+@endsection + +@push('scripts') + + +@endpush + diff --git a/routes/breadcrumbs_registrasi.php b/routes/breadcrumbs_registrasi.php index df7fc01..e2523e7 100644 --- a/routes/breadcrumbs_registrasi.php +++ b/routes/breadcrumbs_registrasi.php @@ -103,3 +103,9 @@ Breadcrumbs::for('registrasifinal.edit', function (BreadcrumbTrail $trail) { $trail->push('Tambah Registrasi Final'); }); // registrasi final + +// pembayaran +Breadcrumbs::for('pembayaran', function (BreadcrumbTrail $trail) { + $trail->push('Pembayaran', route('pembayaran.index')); +}); +// pembayaran diff --git a/routes/registrasi.php b/routes/registrasi.php index 5593cbd..550a920 100644 --- a/routes/registrasi.php +++ b/routes/registrasi.php @@ -7,6 +7,7 @@ use Modules\Lpj\Http\Controllers\ProsesPenawaranController; use Modules\Lpj\Http\Controllers\RegistrasiFinalController; use Modules\Lpj\Http\Controllers\OtorisasiPenawaranController; use Modules\Lpj\Http\Controllers\ProsesPenawaranUlangController; +use Modules\Lpj\Http\Controllers\PembayaranController; Route::middleware(['auth'])->group(function () { @@ -124,4 +125,11 @@ Route::middleware(['auth'])->group(function () { Route::get('/registrasifinal/{registrasifinal}/edit', 'edit')->name('registrasifinal.edit'); Route::put('/registrasifinal/{registrasifinal}', 'update')->name('registrasifinal.update'); }); + + Route::controller(PembayaranController::class)->group(function () { + Route::get('/pembayaran', 'index')->name('pembayaran.index'); + Route::get('/pembayaran/datatables', 'dataForDatatables')->name('pembayaran.datatables'); + + Route::put('/pembayaran/{pembayaran}', 'update')->name('pembayaran.update'); + }); }); From c90535b5ba301f9b13e0ce958f7bea6949a196d9 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 23 Dec 2024 20:12:56 +0700 Subject: [PATCH 22/28] Tambahkan fitur pembayaran dan perbaikan tampilan terkait - Tambah file migration untuk update tabel `persetujuan_penawaran` dengan relasi baru. - Tambah fungsi baru di controller pembayaran: `edit`, `store`, `update`, dan `approval`. - Perbarui view daftar pembayaran dan tambahkan form pembayaran baru. - Tambah endpoint dan breadcrumbs untuk fitur pembayaran di routes. --- app/Http/Controllers/PembayaranController.php | 167 +++++++++++------- ...100_update_persetujuan_penawaran_table.php | 33 ++++ resources/views/pembayaran/form.blade.php | 108 +++++++++++ resources/views/pembayaran/index.blade.php | 148 ++++++---------- routes/breadcrumbs_registrasi.php | 5 + routes/registrasi.php | 17 +- 6 files changed, 317 insertions(+), 161 deletions(-) create mode 100644 database/migrations/2024_12_23_131100_update_persetujuan_penawaran_table.php create mode 100644 resources/views/pembayaran/form.blade.php diff --git a/app/Http/Controllers/PembayaranController.php b/app/Http/Controllers/PembayaranController.php index 5978e19..a5eccb5 100644 --- a/app/Http/Controllers/PembayaranController.php +++ b/app/Http/Controllers/PembayaranController.php @@ -9,8 +9,13 @@ use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Validator; use Maatwebsite\Excel\Facades\Excel; - // use Modules\Lpj\Models\JenisPenilaian; + use Modules\Lpj\Http\Requests\PersetujuanPenawaranRequest; + use Modules\Lpj\Models\PenawaranTender; use Modules\Lpj\Models\Permohonan; + use Modules\Lpj\Models\PersetujuanPenawaran; + + // use Modules\Lpj\Models\JenisPenilaian; + // use Modules\Lpj\Models\Regions; class PembayaranController extends Controller @@ -22,27 +27,108 @@ return view('lpj::pembayaran.index'); } + public function approval() {} + + public function dataApprovalForDatatables(Request $request) {} + + function edit($id) + { + $permohonan = Permohonan::find($id); + return view('lpj::pembayaran.form', compact('permohonan')); + } + + public function store(PersetujuanPenawaranRequest $request) + { + $validated = $request->validated(); + $validated['created_by'] = Auth::id(); + $validated['status'] = '0'; + + if (isset($validated['penawaran_id'])) { + $persetujuanPenawaran = PersetujuanPenawaran::create( + ['penawaran_id' => $validated['penawaran_id']], + $validated, + ); + } else { + $persetujuanPenawaran = PersetujuanPenawaran::create( + $validated + ); + } + + $folderPath = 'persetujuan_penawaran/' . $validated['penawaran_id']; + + if ($request->hasFile('bukti_bayar')) { + $persetujuanPenawaran->bukti_bayar = $request->file('bukti_bayar')->store($folderPath, 'public'); + } + + $persetujuanPenawaran->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 = 'noc'; + $permohonan->save(); + + // andy add, update status penawaran.status='spk' + // $penawaran = PenawaranTender::where('nomor_registrasi',$permohonan->nomor_registrasi)->first(); + PenawaranTender::where('nomor_registrasi', $permohonan->nomor_registrasi)->update([ + 'status' => 'noc', + 'updated_by' => Auth::id(), + 'updated_at' => now(), + ]); + // andy add, update status penawaran.status='spk' + + } + + return redirect() + ->route('pembayaran.index')->with('success', 'Pembayaran berhasil disimpan.'); + } + + public function update(Request $request, $id) + : JsonResponse { + // init + $data = []; + $dataku = []; + $tindakan = null; + if (request()->ajax()) { + try { + $dataku = [ + 'approve_bayar_by' => Auth::id(), + 'approve_bayar_at' => now(), + ]; + + if ($request->keterangan) { + $dataku['approve_keterangan_bayar'] = $request->keterangan; + } + + $data['dataku'] = $dataku; + + $modal = Permohonan::find($id); + $modal->update($dataku); + // + $data['status'] = 'success'; + $data['message'] = ['Otorisasi' . $modal->nomor_registrasi . 'berhasil di lakukan']; + } catch (Exception $e) { + $data['status'] = 'error'; + $data['message'] = ['Otorisasi gagal di lakukan.']; + } + } + return response()->json($data); + } + 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.'); } - - /* - // Tentukan status berdasarkan otorisator - $status = match ($otorisator) { - 'Pelaporan' => 'proses-laporan', - 'Pembayaran' => 'proses', - 'Pembatalan' => 'batal', - 'SLA' => 'freeze', - default => '', - }; - */ - - $query = Permohonan::query()->whereIn('status_bayar', ['sudah_bayar']); - /* + $query = Permohonan::query()->where(['status_bayar' => 'belum_bayar', 'jenis_penilaian_id' => 1]) + ->whereNotIn('id', function($subquery) { + $subquery->select('permohonan_id') + ->from('persetujuan_penawaran') + ->whereNotNull('permohonan_id'); + }); + // Pencarian berdasarkan parameter search if ($request->has('search') && !empty($request->get('search'))) { $search = $request->get('search'); @@ -51,18 +137,11 @@ $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('jenisPenilaian', 'name', 'LIKE', '%' . $search . '%'); $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); $q->orWhere('status', 'LIKE', '%' . $search . '%'); }); } - */ - - // Filter berdasarkan region user yang login - // $query->whereHas('region.teams.teamsUsers', function ($q) { - // $q->where('user_id', Auth::id()); - // }); - // Sorting berdasarkan sortField dan sortOrder if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { @@ -91,7 +170,7 @@ $filteredRecords = $query->count(); // Ambil data dengan relasi - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'region.teams.teamsUsers'])->get(); + $data = $query->with(['user', 'debiture', 'branch', 'jenisPenilaian'])->get(); // Hitung jumlah halaman @@ -110,41 +189,5 @@ 'totalCount' => $totalRecords, 'data' => $data, ]); - } - - public function update(Request $request, $id) - : JsonResponse { - // init - $data = []; - $dataku = []; - $tindakan = null; - if (request()->ajax()) { - - try { - - $dataku = [ - 'approve_bayar_by' => Auth::id(), - 'approve_bayar_at' => now(), - ]; - - if ($request->keterangan) { - $dataku['approve_keterangan_bayar'] = $request->keterangan; - } - - $data['dataku'] = $dataku; - - $modal = Permohonan::find($id); - $modal->update($dataku); - // - $data['status'] = 'success'; - $data['message'] = ['Otorisasi' . $modal->nomor_registrasi . 'berhasil di lakukan']; - } catch (Exception $e) { - $data['status'] = 'error'; - $data['message'] = ['Otorisasi gagal di lakukan.']; - } - - } - return response()->json($data); - } -} \ No newline at end of file + } diff --git a/database/migrations/2024_12_23_131100_update_persetujuan_penawaran_table.php b/database/migrations/2024_12_23_131100_update_persetujuan_penawaran_table.php new file mode 100644 index 0000000..3c76d5d --- /dev/null +++ b/database/migrations/2024_12_23_131100_update_persetujuan_penawaran_table.php @@ -0,0 +1,33 @@ +unsignedBigInteger('penawaran_id')->change()->nullable(); + $table->unsignedBigInteger('permohonan_id')->nullable(); + + $table->foreign('permohonan_id')->references('id')->on('permohonan')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('persetujuan_penawaran', function (Blueprint $table) { + $table->unsignedBigInteger('penawaran_id')->change()->nullable(false); + $table->dropForeign('persetujuan_penawaran_permohonan_id_foreign'); + $table->dropColumn('permohonan_id'); + }); + } +}; diff --git a/resources/views/pembayaran/form.blade.php b/resources/views/pembayaran/form.blade.php new file mode 100644 index 0000000..f02d011 --- /dev/null +++ b/resources/views/pembayaran/form.blade.php @@ -0,0 +1,108 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@section('content') +
+
+
+
+ Pembayaran +
+
+ Back +
+
+
+
+ @csrf + + + +
+ +
+ + @error('nomor_registrasi') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('debitur') + {{ $message }} + @enderror +
+
+ + +
+ +
+ + @error('nominal_bayar') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('bukti_bayar') + {{ $message }} + @enderror +
+
+ +
+ +
+ + @error('catatan') + {{ $message }} + @enderror +
+
+ +
+ +
+
+
+
+
+@endsection diff --git a/resources/views/pembayaran/index.blade.php b/resources/views/pembayaran/index.blade.php index 506560a..eb70e4c 100644 --- a/resources/views/pembayaran/index.blade.php +++ b/resources/views/pembayaran/index.blade.php @@ -6,8 +6,8 @@ @section('content')
-
+

Daftar Pembayaran @@ -27,49 +27,39 @@
+ data-datatable-table="true"> - - - - - - - - + + + + + + + + - - - - - - + +
- - - Nomor Registrasi - - - Tanggal Permohonan - - - User Pemohon - - - Cabang Pemohon - - - Debitur - - - Tujuan Penilaian - -
+ + + Nomor Registrasi + + + Tanggal Permohonan + + + User Pemohon + + + Cabang Pemohon + + + Debitur + + + Status Bayar + + - Status Approve - - - Status Bayar - - Action
Action
@@ -93,8 +83,7 @@ @push('scripts') + +@endpush + diff --git a/routes/breadcrumbs_registrasi.php b/routes/breadcrumbs_registrasi.php index 385ef6d..00b6067 100644 --- a/routes/breadcrumbs_registrasi.php +++ b/routes/breadcrumbs_registrasi.php @@ -113,4 +113,9 @@ Breadcrumbs::for('pembayaran', function (BreadcrumbTrail $trail) { $trail->parent('pembayaran'); $trail->push('Lakukan Pembayaran'); }); + + Breadcrumbs::for('pembayaran.approval', function (BreadcrumbTrail $trail) { + $trail->parent('pembayaran'); + $trail->push('Approval Pembayaran'); + }); // pembayaran From 2f2de48607d34f47b1d1149045f41fa84343f437 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 23 Dec 2024 22:46:13 +0700 Subject: [PATCH 25/28] Tambahkan fungsi getUser dan perbaiki format kode - Menambahkan fungsi `getUser` untuk mendapatkan data pengguna berdasarkan ID. - Memperbaiki format kode dengan menghapus spasi dan karakter yang tidak diperlukan. - Menambahkan penggunaan model `User` di file `Lpj.php`. --- app/Helpers/Lpj.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/app/Helpers/Lpj.php b/app/Helpers/Lpj.php index ed82be9..d9bf2fe 100644 --- a/app/Helpers/Lpj.php +++ b/app/Helpers/Lpj.php @@ -7,6 +7,7 @@ use Modules\Lpj\Models\PenawaranTender; use Modules\Lpj\Models\Penilaian; use Modules\Lpj\Models\JenisDokumen; + use Modules\Usermanagement\Models\User; function formatTanggalIndonesia($date, $time = false) { @@ -131,10 +132,10 @@ $noUrutAkhirString = sprintf("%04s", abs($code_penawaran_last + 1)); } // jika ternyata tahun tdk sama (kurang dari tahun sekarang), maka nomor di set 0001 - } - + } + } - + return 'NP' . Carbon::now()->format('y') . $noUrutAkhirString; } @@ -143,7 +144,7 @@ return ctype_digit($str); } - // generate last penawaran.no_spk + // generate last penawaran.no_spk function onLastnumberCodePenawaranSPK($jenis_laporan_code): string { @@ -311,3 +312,7 @@ return $maxSizeInKB; } + function getUser($userId){ + return User::find($userId); + } + From d465a3ea7d35ccbfb11299ea4f2da74fb57b5fd9 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 23 Dec 2024 22:46:25 +0700 Subject: [PATCH 26/28] Perbarui peran akses pada module.json - Tambahkan role "EO Appraisal" dan "DD Appraisal" pada konfigurasi akses. - Hapus entri duplikat untuk otorisasi pembayaran. - Optimalkan struktur JSON agar lebih efisien. --- module.json | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/module.json b/module.json index 036edf7..a4ab9c3 100644 --- a/module.json +++ b/module.json @@ -256,18 +256,9 @@ "permission": "", "roles": [ "administrator", - "senior-officer" - ] - }, - { - "title": "Pembayaran", - "path": "otorisator.pembayaran", - "classes": "", - "attributes": [], - "permission": "", - "roles": [ - "administrator", - "senior-officer" + "senior-officer", + "EO Appraisal", + "DD Appraisal" ] }, { From afe056336169464af2a567eaece73d94d6689b44 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 23 Dec 2024 22:46:42 +0700 Subject: [PATCH 27/28] Tambah kolom approval pada tabel permohonan - Menambahkan kolom approval_eo, approval_dd, dan approval_so beserta timestamp terkait di tabel permohonan. - Memperluas fungsionalitas model dan controller untuk mendukung kolom approval baru. --- app/Http/Controllers/PenilaianController.php | 941 +++++++++--------- app/Models/Permohonan.php | 19 + ...dd_approval_fields_to_permohonan_table.php | 43 + .../views/penilaian/otorisator/show.blade.php | 31 + 4 files changed, 571 insertions(+), 463 deletions(-) create mode 100644 database/migrations/2024_12_23_151733_add_approval_fields_to_permohonan_table.php diff --git a/app/Http/Controllers/PenilaianController.php b/app/Http/Controllers/PenilaianController.php index b7d4ed6..0013891 100644 --- a/app/Http/Controllers/PenilaianController.php +++ b/app/Http/Controllers/PenilaianController.php @@ -1,546 +1,561 @@ validated(); + /** + * Store a newly created resource in storage. + */ - if ($validatedData) { + public function store(PenilaianRequest $request) + { + $validatedData = $request->validated(); + + if ($validatedData) { + try { + DB::beginTransaction(); + + $penilaian = Penilaian::create($validatedData); + $validatedData['penilaian_id'] = $penilaian->id; + + $teams_ids = []; + $user_ids = []; + $roles = []; + + if ($validatedData['surveyor_id'] === 'pilih_dari_region') { + $surveyor_region_id = $validatedData['surveyor_region_id']; + + // Hapus team_id sebelumnya di Permohonan jika ada + $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first(); + if ($permohonan) { + $permohonan->update([ + 'region_id' => $surveyor_region_id, + ]); + } + + $teams_ids[] = $surveyor_region_id; + $user_ids[] = null; + $roles[] = 'surveyor'; + } else { + $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first(); + $teams_ids[] = $validatedData['teams_id']; + + if (isset($validatedData['penilai_surveyor_id'])) { + $user_ids[] = $validatedData['penilai_surveyor_id']; + } else { + $user_ids[] = $validatedData['surveyor_id']; + } + + $roles[] = 'surveyor'; + } + + if ($validatedData['penilai_id'] === 'pilih_dari_region') { + $penilaian_region_id = $validatedData['penilai_region_id']; + + // Hapus team_id sebelumnya di Permohonan jika ada + $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first(); + if ($permohonan) { + $permohonan->update([ + 'region_id' => $penilaian_region_id, + ]); + } + + $teams_ids[] = $penilaian_region_id; + $user_ids[] = null; + $roles[] = 'penilai'; + } else { + $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first(); + $teams_ids[] = $validatedData['teams_id']; + + if (isset($validatedData['penilai_surveyor_id'])) { + $user_ids[] = $validatedData['penilai_surveyor_id']; + } else { + $user_ids[] = $validatedData['penilai_id']; + } + + $roles[] = 'penilai'; + } + + foreach ($teams_ids as $key => $teams_id) { + PenilaianTeam::create([ + 'penilaian_id' => $validatedData['penilaian_id'], + 'team_id' => $teams_id, + 'user_id' => $user_ids[$key], + 'role' => $roles[$key], + ]); + } + + if ($validatedData['surveyor_id'] === 'pilih_dari_region' || $validatedData['penilai_id'] === 'pilih_dari_region') { + $status = $permohonan->status; + } else { + $status = 'assign'; + } + + $permohonan->update([ + 'status' => $status, + ]); + + DB::commit(); + return response()->json(['success' => true, 'message' => 'Data berhasil disimpan'], 200); + } catch (Exception $e) { + DB::rollBack(); + + return response()->json(['error' => $e->getMessage()]); + } + } + } + + /** + * Show the form for creating a new resource. + */ + public function create($id) + { + return view('lpj::penilaian.form'); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, $id) + { try { DB::beginTransaction(); + $penilaian = Penilaian::where('nomor_registrasi', $request->nomor_registrasi)->first(); - $penilaian = Penilaian::create($validatedData); - $validatedData['penilaian_id'] = $penilaian->id; + $penilaianId = $penilaian->id; - $teams_ids = []; - $user_ids = []; - $roles = []; + $penilainTeam = PenilaianTeam::where('penilaian_id', $penilaianId)->get(); - if ($validatedData['surveyor_id'] === 'pilih_dari_region') { - $surveyor_region_id = $validatedData['surveyor_region_id']; - // Hapus team_id sebelumnya di Permohonan jika ada - $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first(); - if ($permohonan) { - $permohonan->update([ - 'region_id' => $surveyor_region_id, + foreach ($penilainTeam as $item) { + if ($item->role === 'surveyor' && $item->user_id === null) { + $item->update([ + 'user_id' => $request->surveyor_id, + 'role' => 'surveyor', ]); } - $teams_ids[] = $surveyor_region_id; - $user_ids[] = null; - $roles[] = 'surveyor'; - } else { - $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first(); - $teams_ids[] = $validatedData['teams_id']; - - if (isset($validatedData['penilai_surveyor_id'])) { - $user_ids[] = $validatedData['penilai_surveyor_id']; - } else { - $user_ids[] = $validatedData['surveyor_id']; - } - - $roles[] = 'surveyor'; - - } - - if ($validatedData['penilai_id'] === 'pilih_dari_region') { - $penilaian_region_id = $validatedData['penilai_region_id']; - - // Hapus team_id sebelumnya di Permohonan jika ada - $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first(); - if ($permohonan) { - $permohonan->update([ - 'region_id' => $penilaian_region_id, + if ($item->role === 'penilai' && $item->user_id === null) { + $item->update([ + 'user_id' => $request->penilai_id, + 'role' => 'penilai', ]); } - - $teams_ids[] = $penilaian_region_id; - $user_ids[] = null; - $roles[] = 'penilai'; - } else { - $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi)->first(); - $teams_ids[] = $validatedData['teams_id']; - - if (isset($validatedData['penilai_surveyor_id'])) { - $user_ids[] = $validatedData['penilai_surveyor_id']; - } else { - $user_ids[] = $validatedData['penilai_id']; - } - - $roles[] = 'penilai'; - - } - - foreach ($teams_ids as $key => $teams_id) { - PenilaianTeam::create([ - 'penilaian_id' => $validatedData['penilaian_id'], - 'team_id' => $teams_id, - 'user_id' => $user_ids[$key], - 'role' => $roles[$key], - ]); - } - - if ($validatedData['surveyor_id'] === 'pilih_dari_region' || $validatedData['penilai_id'] === 'pilih_dari_region') { - $status = $permohonan->status; - } else { - $status = 'assign'; } + $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi); $permohonan->update([ - 'status' => $status, + 'status' => 'assign', ]); - DB::commit(); return response()->json(['success' => true, 'message' => 'Data berhasil disimpan'], 200); } catch (Exception $e) { DB::rollBack(); - - return response()->json(['error' => $e->getMessage()]); + return response()->json(['success' => false, 'error' => $e->getMessage()]); } } - } - /** - * Show the form for creating a new resource. - */ - public function create($id) - { - return view('lpj::penilaian.form'); - } + /** + * Show the form for editing the specified resource. + */ + public function assignment($id) + { + $permohonan = Permohonan::with([ + 'user', + 'debiture.province', + 'debiture.city', + 'debiture.district', + 'debiture.village', + 'branch', + 'tujuanPenilaian', + ])->findOrFail($id); - /** - * Update the specified resource in storage. - */ - public function update(Request $request, $id) - { - try { - DB::beginTransaction(); - $penilaian = Penilaian::where('nomor_registrasi', $request->nomor_registrasi)->first(); + $idPenilaian = $permohonan->jenis_penilaian_id; + $idRegion = $permohonan->region_id; - $penilaianId = $penilaian->id; + $jenisPenilaian = JenisPenilaian::find($idPenilaian); - $penilainTeam = PenilaianTeam::where('penilaian_id', $penilaianId)->get(); + $userTeam = Teams::with(['regions', 'teamsUsers.user'])->whereHas('regions', function ($q) use ($idRegion) { + $q->where('id', $idRegion); + })->get(); - - foreach ($penilainTeam as $item) { - if ($item->role === 'surveyor' && $item->user_id === null) { - $item->update([ - 'user_id' => $request->surveyor_id, - 'role' => 'surveyor', - ]); - } - - if ($item->role === 'penilai' && $item->user_id === null) { - $item->update([ - 'user_id' => $request->penilai_id, - 'role' => 'penilai', - ]); - } - - } - - $permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi); - $permohonan->update([ - 'status' => 'assign', - ]); - DB::commit(); - return response()->json(['success' => true, 'message' => 'Data berhasil disimpan'], 200); - } catch (Exception $e) { - DB::rollBack(); - return response()->json([ 'success' => false, 'error' => $e->getMessage()]); - } - } - - /** - * Show the form for editing the specified resource. - */ - public function assignment($id) - { - $permohonan = Permohonan::with([ - 'user', - 'debiture.province', - 'debiture.city', - 'debiture.district', - 'debiture.village', - 'branch', - 'tujuanPenilaian', - ])->findOrFail($id); - - $idPenilaian = $permohonan->jenis_penilaian_id; - $idRegion = $permohonan->region_id; - - $jenisPenilaian = JenisPenilaian::find($idPenilaian); - - $userTeam = Teams::with(['regions', 'teamsUsers.user']) - ->whereHas('regions', function ($q) use ($idRegion) { - $q->where('id', $idRegion); - }) - ->get(); - - $teamPenilai = $userTeam->flatMap(function ($team) { - return $team->teamsUsers->filter(function ($teamUser) { - return $teamUser->user->roles->contains(function ($role) { - return $role->name === 'surveyor' || $role->name === 'surveyor-penilai' || $role->name === 'administrator'; + $teamPenilai = $userTeam->flatMap(function ($team) { + return $team->teamsUsers->filter(function ($teamUser) { + return $teamUser->user->roles->contains(function ($role) { + return $role->name === 'surveyor' || $role->name === 'surveyor-penilai' || $role->name === 'administrator'; + }); + })->map(function ($teamUser) { + return $teamUser->user; }); - })->map(function ($teamUser) { - return $teamUser->user; - }); - })->unique('id'); + })->unique('id'); - $existingTeamIds = $userTeam->pluck('id')->toArray(); + $existingTeamIds = $userTeam->pluck('id')->toArray(); - $updateTeamPenilai = Teams::with(['regions', 'teamsUsers', 'teamsUsers.user']) - ->whereNotIn('id', $existingTeamIds) - ->get(); + $updateTeamPenilai = Teams::with(['regions', 'teamsUsers', 'teamsUsers.user'])->whereNotIn( + 'id', + $existingTeamIds, + )->get(); - $regionName = null; - foreach ($userTeam as $item) { - $regionName = $item->regions; + $regionName = null; + foreach ($userTeam as $item) { + $regionName = $item->regions; + } + + $penilaian = Penilaian::where('nomor_registrasi', $permohonan->nomor_registrasi)->first(); + + $penilaianTeam = collect(); + if ($penilaian && $penilaian->id) { + $penilaianTeam = PenilaianTeam::where('penilaian_id', $penilaian->id)->get(); + } + + return view( + 'lpj::penilaian.form', + compact( + 'permohonan', + 'teamPenilai', + 'jenisPenilaian', + 'penilaian', + 'regionName', + 'updateTeamPenilai', + 'penilaianTeam', + ), + ); } - $penilaian = Penilaian::where('nomor_registrasi', $permohonan->nomor_registrasi)->first(); + /** + * Remove the specified resource from storage. + */ - $penilaianTeam = collect(); - if ($penilaian && $penilaian->id) { - $penilaianTeam = PenilaianTeam::where('penilaian_id', $penilaian->id)->get(); - } + public function revisi(PenilaianRequest $request, $nomor_registrasi) + { + $validatedData = $request->validated(); + if ($validatedData) { + try { + if (isset($validatedData['dokumen']) && $request->hasFile('dokumen')) { + $file_name = $validatedData['dokumen']->getClientOriginalName(); + $validatedData['dokumen']->storeAs('public/dokumen_revisi', $file_name); + } - return view('lpj::penilaian.form', compact('permohonan', 'teamPenilai', 'jenisPenilaian', 'penilaian', 'regionName', 'updateTeamPenilai', 'penilaianTeam')); - } - /** - * Remove the specified resource from storage. - */ + $dataToUpdate = [ + 'keterangan' => $validatedData['keterangan'], + 'dokumen' => 'dokumen_revisi/' . $file_name, + 'status' => 'revisi', + ]; - public function revisi(PenilaianRequest $request, $nomor_registrasi) - { - $validatedData = $request->validated(); - if ($validatedData) { - try { + $permohonan = Permohonan::where('nomor_registrasi', $nomor_registrasi)->first(); - if (isset($validatedData['dokumen']) && $request->hasFile('dokumen')) { - $file_name = $validatedData['dokumen']->getClientOriginalName(); - $validatedData['dokumen']->storeAs('public/dokumen_revisi', $file_name); + $permohonan->update($dataToUpdate); + return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil direvisi'); + } catch (Exception $e) { + return redirect()->route('penilaian.index')->with('error', $e->getMessage()); } - - $dataToUpdate = [ - 'keterangan' => $validatedData['keterangan'], - 'dokumen' => 'dokumen_revisi/' . $file_name, - 'status' => 'revisi', - ]; - - - $permohonan = Permohonan::where('nomor_registrasi', $nomor_registrasi)->first(); - - $permohonan->update($dataToUpdate); - return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil direvisi'); - } catch (Exception $e) { - return redirect()->route('penilaian.index')->with('error', $e->getMessage()); } } - } + public function dataForDatatables(Request $request) + { + if (is_null($this->user) || !$this->user->can('debitur.view')) { + } - public function dataForDatatables(Request $request) - { + $query = Permohonan::query(); - if (is_null($this->user) || !$this->user->can('debitur.view')) { + 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 . '%'); + }); + } - } + $query->whereIn('status', ['registered', 'registrasi-final']); - $query = Permohonan::query(); + // Filter berdasarkan role + if (Auth::user()->roles[0]->name !== 'administrator') { + $query->whereHas('region.teams.teamsUsers.user', function ($q) { + $q->where('id', Auth::user()->id); + }); + } - 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 . '%'); - }); - } + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } - $query->whereIn('status', ['registered', 'registrasi-final']); + $totalRecords = $query->count(); - // Filter berdasarkan role - if (Auth::user()->roles[0]->name !== 'administrator') { - $query->whereHas('region.teams.teamsUsers.user', function ($q) { - $q->where('id', Auth::user()->id); - }); - } + $size = $request->get('size', 10); + if ($size == 0) { + $size = 10; + } - if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { - $order = $request->get('sortOrder'); - $column = $request->get('sortField'); - $query->orderBy($column, $order); - } + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page', 1); + $offset = ($page - 1) * $size; - $totalRecords = $query->count(); + $query->skip($offset)->take($size); + } - $size = $request->get('size', 10); - if ($size == 0) { - $size = 10; - } + $filteredRecords = $query->count(); + $data = $query->with( + ['user', 'debiture', 'branch', 'tujuanPenilaian', 'region.teams.teamsUsers.user'], + )->get(); - if ($request->has('page') && $request->has('size')) { - $page = $request->get('page', 1); - $offset = ($page - 1) * $size; + $pageCount = ceil($totalRecords / $size); - $query->skip($offset)->take($size); - } - - $filteredRecords = $query->count(); - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'region.teams.teamsUsers.user'])->get(); - - $pageCount = ceil($totalRecords / $size); - - $currentPage = max(1, $request->get('page', 1)); - return response()->json([ - 'draw' => $request->get('draw'), - 'recordsTotal' => $totalRecords, - 'recordsFiltered' => $filteredRecords, - 'pageCount' => $pageCount, - 'page' => $currentPage, - 'totalCount' => $totalRecords, - 'data' => $data, - ]); - } - - - - - - public function otorisator(Request $request) - { - - $type = $request->route('type'); - $headers = [ - 'pelaporan' => 'Pelaporan', - 'pembayaran' => 'Pembayaran', - 'pembatalan' => 'Pembatalan', - 'sla' => 'SLA', - ]; - - $header = $headers[$type] ?? 'Pelaporan'; - - return view('lpj::penilaian.otorisator.index', compact('header')); - } - - public function show($id, $type) - { - $headers = [ - 'Pelaporan' => 'Pelaporan', - 'Pembayaran' => 'Pembayaran', - 'Pembatalan' => 'Pembatalan', - 'SLA' => 'SLA', - ]; - - $header = $headers[$type] ?? 'Pelaporan'; - $permohonan = Permohonan::find($id); - - return view('lpj::penilaian.otorisator.show', compact('permohonan', 'header')); - } - - public function otorisatorUpdate(Request $request, $id, $context) - { - - $permohonan = Permohonan::find($id); - if (!$permohonan) { + $currentPage = max(1, $request->get('page', 1)); return response()->json([ - 'message' => 'Data permohonan tidak ditemukan.' - ], 404); + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); } - switch (strtolower($context)) { - case 'pembayaran': - $newStatus = $permohonan->status_bayar === 'sudah_bayar' ? 'belum_bayar' : 'sudah_bayar'; + public function otorisator(Request $request) + { + $type = $request->route('type'); + $headers = [ + 'pelaporan' => 'Pelaporan', + 'pembayaran' => 'Pembayaran', + 'pembatalan' => 'Pembatalan', + 'sla' => 'SLA', + ]; - $permohonan->update([ - 'status_bayar' => $newStatus, - 'keterangan' => $request->message - ]); - break; + $header = $headers[$type] ?? 'Pelaporan'; - case 'pembatalan': - $permohonan->update([ - 'status' => 'batal', - 'keterangan' => $request->message - ]); - break; + return view('lpj::penilaian.otorisator.index', compact('header')); + } - case 'pelaporan': - $permohonan->update([ - 'status' => 'proses-laporan', - 'keterangan' => $request->message - ]); - break; + public function show($id, $type) + { + $headers = [ + 'Pelaporan' => 'Pelaporan', + 'Pembayaran' => 'Pembayaran', + 'Pembatalan' => 'Pembatalan', + 'SLA' => 'SLA', + ]; - case 'sla': + $header = $headers[$type] ?? 'Pelaporan'; + $permohonan = Permohonan::find($id); - $permohonan->update([ - 'status' => 'proses-sla', - 'keterangan' => $request->message - ]); - break; - - default: + return view('lpj::penilaian.otorisator.show', compact('permohonan', 'header')); + } + public function otorisatorUpdate(Request $request, $id, $context) + { + $permohonan = Permohonan::find($id); + if (!$permohonan) { return response()->json([ - 'message' => 'Konteks otorisasi tidak valid.' - ], 400); - } - - - return response()->json([ - 'message' => 'Otorisasi berhasil dilakukan.', - 'data' => $permohonan - ]); - } - - - - - - public function dataForAuthorization(Request $request, $otorisator) - { - - if (is_null($this->user) || !$this->user->can('debitur.view')) { - // abort(403, 'Sorry! You are not allowed to view users.'); - } - - - // Tentukan status berdasarkan otorisator - $status = match ($otorisator) { - 'Pelaporan' => 'proses-laporan', - 'Pembayaran' => 'proses', - 'Pembatalan' => 'batal', - 'SLA' => 'freeze', - default => '', - }; - - - $query = Permohonan::query(); - - // Pencarian berdasarkan parameter search - 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 . '%'); - }); - } - - - if (!empty($otorisator)) { - if ($status == 'proses') { - $query->whereIn('status_bayar', ['sudah_bayar', 'belum_bayar']); - } elseif ($status == 'proses-laporan') { - $query->whereRaw('LOWER(status) = ?', [strtolower($status)]); - } elseif ($status == 'batal') { - $query->whereRaw('LOWER(status) = ?', [strtolower($status)]); - } elseif ($status == 'freeze') { - $query->whereRaw('LOWER(status) = ?', [strtolower($status)]); + 'message' => 'Data permohonan tidak ditemukan.', + ], 404); } + + switch (strtolower($context)) { + case 'pembayaran': + + $newStatus = $permohonan->status_bayar === 'sudah_bayar' ? 'belum_bayar' : 'sudah_bayar'; + + $permohonan->update([ + 'status_bayar' => $newStatus, + 'keterangan' => $request->message, + ]); + break; + + case 'pembatalan': + $permohonan->update([ + 'status' => 'batal', + 'keterangan' => $request->message, + ]); + break; + + case 'pelaporan': + if(Auth::user()->roles[0]->name === 'senior-officer') { + $permohonan->update([ + 'status' => 'proses-laporan', + 'approval_so' => Auth::user()->id, + 'approval_so_at' => now(), + 'keterangan' => $request->message, + ]); + } elseif(Auth::user()->roles[0]->name === 'EO Appraisal') { + $permohonan->update([ + 'status' => 'proses-laporan', + 'approval_eo' => Auth::user()->id, + 'approval_eo_at' => now(), + 'keterangan' => $request->message, + ]); + } elseif(Auth::user()->roles[0]->name === 'DD Appraisal') { + $permohonan->update([ + 'status' => 'proses-laporan', + 'approval_dd' => Auth::user()->id, + 'approval_dd_at' => now(), + 'keterangan' => $request->message, + ]); + } + break; + + case 'sla': + + $permohonan->update([ + 'status' => 'proses-sla', + 'keterangan' => $request->message, + ]); + break; + + default: + + return response()->json([ + 'message' => 'Konteks otorisasi tidak valid.', + ], 400); + } + + + return response()->json([ + 'message' => 'Otorisasi berhasil dilakukan.', + 'data' => $permohonan, + ]); } - // Filter berdasarkan region user yang login - $query->whereHas('region.teams.teamsUsers', function ($q) { - $q->where('user_id', Auth::id()); - }); + + public function dataForAuthorization(Request $request, $otorisator) + { + if (is_null($this->user) || !$this->user->can('debitur.view')) { + // abort(403, 'Sorry! You are not allowed to view users.'); + } - // Sorting berdasarkan sortField dan sortOrder - if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { - $order = $request->get('sortOrder'); - $column = $request->get('sortField'); - $query->orderBy($column, $order); + // Tentukan status berdasarkan otorisator + $status = match ($otorisator) { + 'Pelaporan' => 'proses-laporan', + 'Pembayaran' => 'proses', + 'Pembatalan' => 'batal', + 'SLA' => 'freeze', + default => '', + }; + + + $query = Permohonan::query(); + + // Pencarian berdasarkan parameter search + 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 . '%'); + }); + } + + + if (!empty($otorisator)) { + if ($status == 'proses') { + $query->whereIn('status_bayar', ['sudah_bayar', 'belum_bayar']); + } elseif ($status == 'proses-laporan') { + $query->whereRaw('LOWER(status) = ?', [strtolower($status)]); + } elseif ($status == 'batal') { + $query->whereRaw('LOWER(status) = ?', [strtolower($status)]); + } elseif ($status == 'freeze') { + $query->whereRaw('LOWER(status) = ?', [strtolower($status)]); + } + } + + // Filter berdasarkan region user yang login + if(Auth::user()->hasRole('senior-officer')) { + $query->whereHas('region.teams.teamsUsers', function ($q) { + $q->where('user_id', Auth::id()); + }); + } + + + // Sorting berdasarkan sortField dan sortOrder + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Hitung total records + $totalRecords = $query->count(); + + // Pagination (default page size 10) + $size = $request->get('size', 10); + if ($size == 0) { + $size = 10; + } + + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page', 1); + $offset = ($page - 1) * $size; + + $query->skip($offset)->take($size); + } + + // Filtered records + $filteredRecords = $query->count(); + + // Ambil data dengan relasi + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'region.teams.teamsUsers'])->get(); + + + // Hitung jumlah halaman + $pageCount = ceil($totalRecords / $size); + + // Ambil current page + $currentPage = max(1, $request->get('page', 1)); + + // Return JSON response + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); } - // Hitung total records - $totalRecords = $query->count(); - // Pagination (default page size 10) - $size = $request->get('size', 10); - if ($size == 0) { - $size = 10; - } - - if ($request->has('page') && $request->has('size')) { - $page = $request->get('page', 1); - $offset = ($page - 1) * $size; - - $query->skip($offset)->take($size); - } - - // Filtered records - $filteredRecords = $query->count(); - - // Ambil data dengan relasi - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'region.teams.teamsUsers'])->get(); - - - // Hitung jumlah halaman - $pageCount = ceil($totalRecords / $size); - - // Ambil current page - $currentPage = max(1, $request->get('page', 1)); - - // Return JSON response - return response()->json([ - 'draw' => $request->get('draw'), - 'recordsTotal' => $totalRecords, - 'recordsFiltered' => $filteredRecords, - 'pageCount' => $pageCount, - 'page' => $currentPage, - 'totalCount' => $totalRecords, - 'data' => $data, - ]); } - - -} diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index 5d086b5..eac4ad8 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -44,6 +44,25 @@ 'approve_keterangan_bayar', 'approve_bayar_by', 'approve_bayar_at', + + 'approval_eo', + 'approval_eo_at', + 'approval_dd', + 'approval_dd_at', + 'approval_so', + 'approval_so_at', + ]; + + protected $dates = [ + 'tanggal_permohonan', + 'authorized_at', + 'created_at', + 'updated_at', + 'registrasi_at', + 'approve_bayar_at', + 'approval_eo_at', + 'approval_dd_at', + 'approval_so_at', ]; protected static function boot() diff --git a/database/migrations/2024_12_23_151733_add_approval_fields_to_permohonan_table.php b/database/migrations/2024_12_23_151733_add_approval_fields_to_permohonan_table.php new file mode 100644 index 0000000..f814764 --- /dev/null +++ b/database/migrations/2024_12_23_151733_add_approval_fields_to_permohonan_table.php @@ -0,0 +1,43 @@ +boolean('approval_eo')->default(false)->after('status'); + $table->timestamp('approval_eo_at')->nullable()->after('approval_eo'); + + $table->boolean('approval_dd')->default(false)->after('approval_eo_at'); + $table->timestamp('approval_dd_at')->nullable()->after('approval_dd'); + + $table->boolean('approval_so')->default(false)->after('approval_dd_at'); + $table->timestamp('approval_so_at')->nullable()->after('approval_so'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('permohonan', function (Blueprint $table) { + $table->dropColumn([ + 'approval_eo', 'approval_eo_at', + 'approval_dd', 'approval_dd_at', + 'approval_so', 'approval_so_at' + ]); + }); + } +} diff --git a/resources/views/penilaian/otorisator/show.blade.php b/resources/views/penilaian/otorisator/show.blade.php index 05b1fff..1cc6a38 100644 --- a/resources/views/penilaian/otorisator/show.blade.php +++ b/resources/views/penilaian/otorisator/show.blade.php @@ -13,6 +13,37 @@ @include('lpj::component.detail-jaminan', ['backLink' => 'otorisator.'. $dataHeader . '.index']) + @if($permohonan->approval_so) +
+
+

+ Approval +

+
+ +
+ + + + + + + + + + + + + + + + + + +
Diperiksa Oleh{{ getUser($permohonan->approval_so)->name ?? 'N/A' }}{{ $permohonan->approval_so_at ? formatTanggalIndonesia($permohonan->approval_so_at,1) : 'N/A' }}
Disetujui Oleh (EO){{ getUser($permohonan->approval_eo)->name ?? 'N/A' }}{{ $permohonan->approval_eo_at ? formatTanggalIndonesia($permohonan->approval_eo_at,1) : 'N/A' }}
Disetujui Oleh (DD){{ getUser($permohonan->approval_dd)->name ?? 'N/A' }}{{ $permohonan->approval_dd_at ? formatTanggalIndonesia($permohonan->approval_dd_at,1) : 'N/A' }}
+
+
+ @endif

ActionStatusActions
@@ -88,9 +87,124 @@

- -
@endsection + +@push('scripts') + +@endpush diff --git a/routes/web.php b/routes/web.php index f0d3331..43f0a8e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -349,6 +349,10 @@ Route::middleware(['auth'])->group(function () { }); Route::resource('debitur', DebitureController::class); + + Route::name('laporan.')->prefix('laporan')->group(function () { + Route::get('datatables', [LaporanController::class, 'dataForDatatables'])->name('datatables'); + }); Route::resource('laporan', LaporanController::class);