## Ringkasan
Melakukan perbaikan pada helper format Rupiah, akses role user, validasi data MIG, serta penyesuaian tampilan laporan dan dokumentasi.
## Perubahan Detail
### 🔧 Helper Function
**app/Helpers/Lpj.php**:
- Menambahkan parameter opsional `withSymbol` pada fungsi `formatRupiah()` untuk kontrol simbol Rp
- Menambahkan handling untuk menghapus titik (.) dari input number sebelum proses
- Memperbaiki return value untuk null/empty string sesuai parameter `withSymbol`
- Mengganti `str_pad()` dengan `sprintf()` untuk generate random number (lebih efisien)
### 🛠️ Service Layer
**app/Services/PreviewLaporanService.php**:
- Memperbaiki validasi data MIG dengan menambahkan pengecekan `is_mig` flag
- Menambahkan null safety pada property `mig_mst_lpj_tot_nilai_pasar`
- Memperbaiki kondisi logic untuk memo dan validasi nilai pasar
### 🎨 View Components
**resources/views/component/print-out-dokument.blade.php**:
- Memperbaiki syntax Blade dari `@isset` menjadi `isset()` yang lebih proper
**resources/views/debitur/components/debitur.blade.php**:
- Memperbaiki role checking dari `hasRole()` menjadi `hasAnyRole()` untuk multiple roles
**resources/views/debitur/index.blade.php**:
- Menambahkan role 'admin' pada kondisi edit dan delete actions
- Memperbaiki permission checking untuk administrator dan admin
**resources/views/laporan/index.blade.php**:
- Menyederhanakan logic tombol laporan dan resume
- Menghapus logic role-based yang kompleks untuk tombol laporan
- Memperbaiki route URL untuk print-out laporan
- Menghapus function `generateLaporanButton()` yang tidak digunakan
**resources/views/penilai/components/lpj-sederhana-standar.blade.php**:
- Menambahkan role 'penilai' pada permission tombol simpan
**resources/views/penilai/components/print-out-sederhana.blade.php**:
- Memperbaiki tampilan data dokumen dengan menambahkan kolom nomor dokumen
- Mengganti `number_format()` dengan `formatRupiah()` untuk konsistensi format
- Menambahkan fallback untuk data tanah dan bangunan ketika `npw_tambahan` tidak tersedia
- Memperbaiki perhitungan total nilai pasar wajar dengan proper parsing
- Memperbaiki format tampilan nilai likuidasi
- Memperbaiki struktur HTML tabel untuk dokumentasi
**resources/views/penilai/components/signature-approval.blade.php**:
- Memperbaiki route dan parameter untuk approval signature
**resources/views/permohonan/index.blade.php**:
- Menambahkan role 'admin' pada permission actions
## Ringkasan
Refaktor besar pada helper `Modules/Lpj/app/Helpers/Lpj.php` untuk meningkatkan keterbacaan, keamanan, dan maintainability melalui dokumentasi, logging, dan validasi input.
## Perubahan Utama
- Tambah `declare(strict_types=1)` dan type declarations di seluruh fungsi
- Tambah PHPDoc lengkap pada `formatTanggalIndonesia` & `formatRupiah`
- Tambah logging detail (awal fungsi, validasi, keberhasilan, dan kegagalan)
- Validasi input null/kosong serta error handling yang lebih aman
- Bungkus fungsi query DB dalam `DB::transaction` untuk konsistensi data
- Tambah fungsi baru:
- `parsePembandingMigration()` → membersihkan & memformat data pembanding migrasi
- `getFilePath()` → resolve path file internal/eksternal
- `parseTimestamp()` → robust timestamp parser multi-format
- Fix minor linter issue: `strtotime(now())`, `pow(10,3)` → `(int) str_pad(...)`
## Dampak
- Semua fungsi kini memiliki dokumentasi dan validasi lengkap
- Logging terstruktur untuk memudahkan debugging di production
- Peningkatan keamanan dan kestabilan dengan type safety & transaksi DB
- Output lebih konsisten dan mudah dilacak"
- Ganti `isNumeric` dengan `ctype_digit` dan hapus fungsi `isNumeric` yang tidak diperlukan.
- Simplifikasi fungsi `onRomawi` dengan memanfaatkan fungsi `convertToRoman`.
- Hapus fungsi `holidays` karena tidak digunakan lagi dalam kode.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Mengatur ulang urutan penggunaan namespace untuk konsistensi.
- Memperbaiki penanganan kesalahan pada fungsi formatTanggalIndonesia.
- Menambahkan logika untuk memeriksa rentang tanggal aktif pada fungsi checkActiveDateRangePenawaran.
- Memperbaiki dan menyederhanakan logika pada fungsi checkKelengkapanDetailKJPP.
- Memperbarui fungsi generateLpjUniqueCode untuk menghasilkan kode unik dengan format yang lebih baik.
- Menyempurnakan fungsi formatNotifikasi untuk menampilkan pesan yang lebih informatif.
- Menambahkan fungsi formatNotifikasi untuk memformat data notifikasi.
- Menggunakan json_decode untuk mengubah data menjadi objek.
- Menghasilkan array notifikasi dengan judul dan pesan berdasarkan status permohonan.
- Memperbaiki fungsi formatAlamat untuk menggunakan kode pos dari desa.
- Menambahkan relasi ke model BankData untuk desa, distrik, kota, dan provinsi.
- Memperbarui controller BankDataController untuk menyertakan alamat dalam data yang diformat.
- Memperbarui tampilan untuk menampilkan informasi alamat dengan format yang lebih baik.
- Mengubah logika penentuan tanggal saat ini untuk mematuhi aturan yang berlaku.
- Menambahkan tampilan baru untuk LPJ sederhana dan standar.
- Memperbaiki penamaan rute dari 'standard' menjadi 'standar' untuk konsistensi.
- Memperbaiki akses data debitur dengan menggunakan optional chaining.
- Mengubah penamaan kelas dari customField menjadi CustomField untuk konsistensi.
- Memastikan penggunaan huruf kapital pada nama kelas sesuai dengan konvensi PSR-1.
- 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`.
Menambahkan fungsi `countPermohonanForUser` ke dalam file `Lpj.php` untuk menghitung jumlah permohonan yang terkait dengan pengguna tertentu melalui relasi `userPenilai`. Selain itu, menambahkan penggunaan model `Penilaian`
Melakukan perbaikan pada format penulisan kode untuk meningkatkan keterbacaan dan konsistensi. Memindahkan logika terkait tanggal libur dalam fungsi `countHariKerja` ke fungsi terpisah `holidays` agar lebih modular dan mudah dikelola.
Fungsi `formatTanggalIndonesia` diperbarui untuk menerima parameter opsional `$time`. Jika `$time` bernilai `false`, fungsi akan mengembalikan format tanggal tanpa waktu. Namun, jika bernilai `true`, fungsi akan menyertakan waktu dalam format hasilnya. Fungsi `formatTanggalIndonesia2` dihapus untuk menyederhanakan dan mengurangi redundansi kode.
Menambahkan file model HolidayCalendar dan fungsi hitungHariKerja ke dalam helper Lpj.php untuk menghitung jumlah hari kerja antara dua tanggal dengan mengabaikan akhir pekan dan hari libur yang tercatat dalam HolidayCalendar.