refactor(webstatement): perbarui logika filter dan pencarian untuk SyncLogs

- Mengubah logika pengambilan nilai filter pencarian dari `request` menjadi format JSON terstruktur.
- Menambahkan validasi untuk memastikan hanya filter yang memiliki nilai diterapkan.
- Memperbaiki logika filter di frontend dengan menggabungkan parameter pencarian dan filter lainnya sebelum mengirimkannya.
- Mengganti metode `setRequestParams` di frontend menjadi `search` untuk pengiriman parameter pencarian yang lebih terstruktur.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
This commit is contained in:
Daeng Deni Mardaeni
2025-05-10 16:26:10 +07:00
parent 404085f2e7
commit f899fed8a7
2 changed files with 26 additions and 21 deletions

View File

@@ -29,29 +29,31 @@ class SyncLogsController extends Controller
// Apply search filter if provided // Apply search filter if provided
if ($request->has('search') && !empty($request->get('search'))) { if ($request->has('search') && !empty($request->get('search'))) {
$search = $request->get('search'); $search = json_decode($request->get('search'));
$query->where(function ($q) use ($search) { if (isset($search->search)) {
$q->where('periode', 'LIKE', "%$search%") $query->where(function ($q) use ($search) {
->orWhere('sync_notes', 'LIKE', "%$search%") $q->where('periode', 'LIKE', "%$search->search%")
->orWhere('csv_notes', 'LIKE', "%$search%") ->orWhere('sync_notes', 'LIKE', "%$search->search%")
->orWhere('ftp_notes', 'LIKE', "%$search%") ->orWhere('csv_notes', 'LIKE', "%$search->search%")
->orWhere('file_name', 'LIKE', "%$search%"); ->orWhere('ftp_notes', 'LIKE', "%$search->search%")
}); ->orWhere('file_name', 'LIKE', "%$search->search%");
} });
}
// Apply filter for sync status if provided // Apply filter for sync status if provided
if ($request->has('is_sync') && $request->get('is_sync') !== '') { if (isset($search->is_sync) && $search->is_sync !== '') {
$query->where('is_sync', $request->get('is_sync') == '1'); $query->where('is_sync', $search->is_sync == '1');
} }
// Apply filter for CSV status if provided // Apply filter for CSV status if provided
if ($request->has('is_csv') && $request->get('is_csv') !== '') { if (isset($search->is_csv) && $search->is_csv !== '') {
$query->where('is_csv', $request->get('is_csv') == '1'); $query->where('is_csv', $search->is_csv == '1');
} }
// Apply filter for FTP status if provided // Apply filter for FTP status if provided
if ($request->has('is_ftp') && $request->get('is_ftp') !== '') { if (isset($search->is_ftp) && $search->is_ftp !== '') {
$query->where('is_ftp', $request->get('is_ftp') == '1'); $query->where('is_ftp', $search->is_ftp == '1');
}
} }
// Apply sorting if provided // Apply sorting if provided

View File

@@ -287,12 +287,15 @@
const ftpValue = filterFtp.value; const ftpValue = filterFtp.value;
const params = {}; const params = {};
if (searchInput.value) {
params.search = searchInput.value;
}
if (syncValue !== '') params.is_sync = syncValue; if (syncValue !== '') params.is_sync = syncValue;
if (csvValue !== '') params.is_csv = csvValue; if (csvValue !== '') params.is_csv = csvValue;
if (ftpValue !== '') params.is_ftp = ftpValue; if (ftpValue !== '') params.is_ftp = ftpValue;
dataTable.goPage(1); dataTable.goPage(1);
dataTable.setRequestParams(params); dataTable.search(params);
dataTable.reload(); dataTable.reload();
}; };