✨ 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
This commit is contained in:
@@ -3,8 +3,8 @@
|
||||
namespace Modules\Lpj\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Routing\Controller;
|
||||
use Log;
|
||||
use Illuminate\Routing\Controller;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Modules\Location\Models\Province;
|
||||
use Modules\Lpj\Http\Requests\BankDataRequest;
|
||||
use Modules\Lpj\Models\BankData;
|
||||
@@ -88,7 +88,8 @@
|
||||
}
|
||||
} else {
|
||||
// Invalid coordinates
|
||||
Log::warning("Invalid coordinates: Lat: $_lat, Lng: $_lng");// Do something to handle this situation, such as logging an error or skipping the record
|
||||
Log::warning("Invalid coordinates: Lat: $_lat, Lng: $_lng");
|
||||
// Do something to handle this situation, such as logging an error or skipping the record
|
||||
}
|
||||
}
|
||||
|
||||
@@ -138,7 +139,8 @@
|
||||
}
|
||||
} else {
|
||||
// Invalid coordinates
|
||||
Log::warning("Invalid coordinates: Lat: $lat, Lng: $lng");// Do something to handle this situation, such as logging an error or skipping the record
|
||||
Log::warning("Invalid coordinates: Lat: $lat, Lng: $lng");
|
||||
// Do something to handle this situation, such as logging an error or skipping the record
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -197,6 +199,24 @@
|
||||
// Retrieve data from the database
|
||||
$query = BankData::query();
|
||||
|
||||
// Check if show_all parameter is set
|
||||
$showAll = $request->has('show_all') && $request->get('show_all') === 'true';
|
||||
|
||||
// If show_all is true, we'll get all data without pagination
|
||||
if ($showAll) {
|
||||
// Get all records without pagination
|
||||
$data = $query->get();
|
||||
|
||||
return response()->json([
|
||||
'data' => $data,
|
||||
'recordsTotal' => $data->count(),
|
||||
'recordsFiltered' => $data->count(),
|
||||
'page' => 1,
|
||||
'pageSize' => $data->count(),
|
||||
'total' => 1
|
||||
]);
|
||||
}
|
||||
|
||||
// Apply search filter if provided
|
||||
if ($request->has('search') && !empty($request->get('search'))) {
|
||||
$search = $request->get('search');
|
||||
@@ -252,8 +272,10 @@
|
||||
// Get the total count of records
|
||||
$totalRecords = $query->count();
|
||||
|
||||
// Apply pagination if provided
|
||||
if ($request->has('page') && $request->has('size')) {
|
||||
// Apply pagination only if explicitly requested or not first load
|
||||
$shouldPaginate = $request->has('page') && $request->has('size') && !$request->has('show_all');
|
||||
|
||||
if ($shouldPaginate) {
|
||||
$page = $request->get('page');
|
||||
$size = $request->get('size');
|
||||
$offset = ($page - 1) * $size; // Calculate the offset
|
||||
@@ -287,11 +309,11 @@
|
||||
];
|
||||
});
|
||||
|
||||
// Calculate the page count
|
||||
$pageCount = ceil($totalRecords / $request->get('size'));
|
||||
// Calculate the page count (1 if showing all data)
|
||||
$pageCount = $shouldPaginate ? ceil($totalRecords / $request->get('size')) : 1;
|
||||
|
||||
// Calculate the current page number
|
||||
$currentPage = $request->get('page', 1);
|
||||
$currentPage = $shouldPaginate ? $request->get('page', 1) : 1;
|
||||
|
||||
// Ensure current page doesn't exceed page count
|
||||
$currentPage = min($currentPage, $pageCount);
|
||||
|
||||
Reference in New Issue
Block a user