Files
lpj/Helpers/PdfHelper.php
Daeng Deni Mardaeni 2c56dd1d68 feat(lpj): Tambah fitur Referensi Link dan perbaikan Bank Data
Menambahkan fitur manajemen referensi link lengkap dengan CRUD, import/export Excel, serta melakukan perbaikan pada modul Bank Data untuk menampilkan semua data.

## Perubahan Detail

### 🔗 Fitur Referensi Link (Baru)
**Model & Database:**
- Membuat model `ReferensiLink` dengan relasi ke user (created_by, updated_by)
- Membuat migration `create_referensi_link_table` dengan struktur lengkap
- Menambahkan scopes untuk filtering dan searching

**Controller & Request:**
- Membuat `ReferensiLinkController` dengan fitur lengkap (CRUD, datatable, export/import)
- Membuat `ReferensiLinkRequest` dengan validasi comprehensive
- Menambahkan fitur toggle status aktif/inaktif

**Export/Import:**
- Membuat `ReferensiLinkExport` untuk export ke Excel dengan styling
- Membuat `ReferensiLinkImport` untuk import dari Excel dengan validasi
- Menambahkan template download untuk import

**View & Navigation:**
- Menambahkan menu "Referensi Link" di navigasi sistem
- Membuat struktur role access untuk administrator dan admin

### 📊 Perbaikan Bank Data
**Controller:**
- Menambahkan fitur "show_all" untuk menampilkan semua data tanpa pagination
- Memperbaiki Log facade import dari `Log` menjadi `Illuminate\Support\Facades\Log`
- Menambahkan loading overlay untuk UX yang lebih baik

**View:**
- Menambahkan checkbox "Tampilkan Semua Data" di filter
- Memperbaiki styling dan layout tabel
- Menambahkan loading spinner saat filter diterapkan

### 🛠️ Helper & Utilitas
**PdfHelper (Baru):**
- Membuat helper untuk format teks PDF dengan handling karakter spesial
- Menambahkan fungsi untuk konversi simbol matematika ke teks
- Memastikan encoding UTF-8 yang proper

**ImageController (Baru):**
- Membuat controller untuk resize gambar dengan parameter width dan quality
- Menggunakan ImageResizeService untuk processing gambar

### 🔧 Perbaikan Lainnya
**View Components:**
- Memperbaiki syntax HTML dan Blade template
- Menambahkan role checking yang lebih proper
- Memperbaiki format tampilan nilai menggunakan formatRupiah()

### 📁 File Baru
- `Helpers/PdfHelper.php` - Helper untuk format PDF
- `Http/Controllers/ImageController.php` - Controller untuk image resize
- `Http/Controllers/ReferensiLinkController.php` - Controller referensi link
- `Http/Requests/ReferensiLinkRequest.php` - Validasi referensi link
- `Exports/ReferensiLinkExport.php` - Export Excel
- `Imports/ReferensiLinkImport.php` - Import Excel
- `Models/ReferensiLink.php` - Model referensi link
- Database migration untuk tabel referensi_link

### 🔄 File Diperbarui
- `module.json` - Menambahkan menu navigasi
- `BankDataController.php` - Fitur show_all dan perbaikan Log
- `resources/views/bank-data/index.blade.php` - UI improvements
- Beberapa view components untuk perbaikan syntax dan role checking

## Alasan Perubahan
1. **Fitur Referensi Link**: Menyediakan manajemen link referensi yang terstruktur untuk kebutuhan dokumentasi dan regulasi
2. **Import/Export**: Memudahkan pengelolaan data referensi dalam jumlah besar via Excel
3. **Show All Data**: Memenuhi kebutuhan menampilkan semua data bank data di peta tanpa pagination
4. **PDF Helper**: Menangani masalah karakter spesial dalam generate PDF
5. **Image Controller**: Menyediakan endpoint untuk resize gambar secara dinamis
2026-02-02 14:09:04 +07:00

84 lines
2.2 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace Modules\Lpj\Helpers;
class PdfHelper
{
/**
* Format text for PDF output to handle special characters
*
* @param string $text
* @return string
*/
public static function formatText($text)
{
if (empty($text)) {
return '';
}
// Common problematic characters and their safe replacements
$replacements = [
'<' => '&lt;',
'>' => '&gt;',
'&' => '&amp;',
'"' => '&quot;',
"'" => '&#39;',
'≤' => '&le;',
'≥' => '&ge;',
'≠' => '!=',
'≈' => '~',
'×' => 'x',
'÷' => '/',
'' => '-',
'—' => '-',
'' => '"',
'' => '"',
'' => "'",
'' => "'",
];
// First pass: replace with HTML entities
$safeText = str_replace(array_keys($replacements), array_values($replacements), $text);
// Ensure UTF-8 encoding
if (!mb_check_encoding($safeText, 'UTF-8')) {
$safeText = mb_convert_encoding($safeText, 'UTF-8', 'auto');
}
// Remove any remaining non-ASCII characters that could cause issues
$safeText = preg_replace('/[^\x20-\x7E\xA0-\xFF]/', '', $safeText);
return $safeText;
}
/**
* Format mathematical symbols to text representation
*
* @param string $text
* @return string
*/
public static function formatMathSymbols($text)
{
if (empty($text)) {
return '';
}
$mathReplacements = [
'<' => 'kurang dari',
'>' => 'lebih dari',
'<=' => 'kurang dari sama dengan',
'>=' => 'lebih dari sama dengan',
'!=' => 'tidak sama dengan',
'==' => 'sama dengan',
'≤' => 'kurang dari sama dengan',
'≥' => 'lebih dari sama dengan',
'≠' => 'tidak sama dengan',
'≈' => 'kira-kira',
'≡' => 'identik dengan',
'≅' => 'hampir sama dengan',
];
return str_replace(array_keys($mathReplacements), array_values($mathReplacements), $text);
}
}