- Modifikasi `CurrencyController`: - Tambahkan parameter `Request` pada method `export` untuk menerima input filter `search`. - Perbarui logika ekspor agar mendukung pencarian berbasis parameter `search`. - Perubahan pada `CurrencyExport`: - Tambahkan konstruktor untuk menerima dan menyimpan parameter pencarian (`search`). - Modifikasi query pada method `collection` untuk menambahkan filter berdasarkan `code`, `name`, atau `decimal_places` yang sesuai dengan parameter `search`. - Hapus kolom `updated_at` dan `deleted_at` dari output ekspor. - Perbaikan format data pada method `columnFormats`. - Update pada view `currency/index.blade.php`: - Tambahkan elemen JavaScript untuk mengatur URL parameter `search` pada tombol ekspor. - Ganti event `change` pada input pencarian dengan `input` untuk meningkatkan respon pencarian secara real-time. - Pastikan URL ekspor diperbarui setiap kali pengguna mengetik dalam kolom pencarian. - Penyesuaian minor pada `branch/index.blade.php`: - Hapus log yang tidak relevan sebelum proses ekspor. Fitur ini memastikan proses ekspor data mata uang dapat disaring berdasarkan pencarian spesifik, memberikan fleksibilitas lebih kepada pengguna. Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
72 lines
1.9 KiB
PHP
72 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace Modules\Basicdata\Exports;
|
|
|
|
use Maatwebsite\Excel\Concerns\FromCollection;
|
|
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
|
|
use Maatwebsite\Excel\Concerns\WithHeadings;
|
|
use Maatwebsite\Excel\Concerns\WithMapping;
|
|
use Modules\Basicdata\Models\Currency;
|
|
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
|
|
|
class CurrencyExport implements WithColumnFormatting, WithHeadings, FromCollection, WithMapping
|
|
{
|
|
protected $search;
|
|
|
|
public function __construct($search = null)
|
|
{
|
|
$this->search = $search;
|
|
}
|
|
|
|
public function collection()
|
|
{
|
|
$query = Currency::query();
|
|
|
|
if (!empty($this->search)) {
|
|
$search = $this->search;
|
|
|
|
$query->where(function ($q) use ($search) {
|
|
$q->whereRaw('LOWER(code) LIKE ?', ['%' . strtolower($search) . '%'])
|
|
->orWhereRaw('LOWER(name) LIKE ?', ['%' . strtolower($search) . '%'])
|
|
->orWhereRaw('CAST(decimal_places AS TEXT) LIKE ?', ['%' . $search . '%']);
|
|
});
|
|
}
|
|
|
|
return $query->get();
|
|
}
|
|
|
|
public function map($row)
|
|
: array
|
|
{
|
|
return [
|
|
$row->id,
|
|
$row->code,
|
|
$row->name,
|
|
$row->decimal_places,
|
|
$row->created_at
|
|
];
|
|
}
|
|
|
|
public function headings()
|
|
: array
|
|
{
|
|
return [
|
|
'ID',
|
|
'Code',
|
|
'Name',
|
|
'Decimal Places',
|
|
'Created At'
|
|
];
|
|
}
|
|
|
|
public function columnFormats()
|
|
: array
|
|
{
|
|
return [
|
|
'A' => NumberFormat::FORMAT_NUMBER,
|
|
'D' => NumberFormat::FORMAT_NUMBER,
|
|
'E' => NumberFormat::FORMAT_DATE_DATETIME
|
|
];
|
|
}
|
|
}
|