From 9efafa6921d58b4828785699cd78fe899c9e48e7 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sat, 21 Dec 2024 08:12:28 +0700 Subject: [PATCH] Tambahkan fitur hapus data mata uang secara batch - Menambahkan endpoint `deleteMultiple` pada CurrencyController untuk menghapus beberapa data secara bersamaan. - Memperbarui tampilan index mata uang untuk mendukung fungsi hapus batch, termasuk tombol "Delete Selected". - Menambahkan logika pada JavaScript untuk menangani penghapusan batch menggunakan AJAX. - Memperbarui visibilitas tombol hapus berdasarkan checkbox yang dipilih pada tabel. --- app/Http/Controllers/CurrencyController.php | 7 +++ resources/views/currency/index.blade.php | 70 ++++++++++++++++++++- routes/web.php | 1 + 3 files changed, 77 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/CurrencyController.php b/app/Http/Controllers/CurrencyController.php index 5536165..804e77b 100644 --- a/app/Http/Controllers/CurrencyController.php +++ b/app/Http/Controllers/CurrencyController.php @@ -82,6 +82,13 @@ } } + public function deleteMultiple(Request $request) + { + $ids = $request->input('ids'); + Currency::whereIn('id', $ids)->delete(); + return response()->json(['message' => 'Currencies deleted successfully']); + } + public function dataForDatatables(Request $request) { if (is_null($this->user) || !$this->user->can('currency.view')) { diff --git a/resources/views/currency/index.blade.php b/resources/views/currency/index.blade.php index 5f3511f..7e29400 100644 --- a/resources/views/currency/index.blade.php +++ b/resources/views/currency/index.blade.php @@ -21,6 +21,7 @@
Export to Excel Tambah Mata Uang + @@ -97,10 +98,51 @@ } }) } + + function deleteSelectedRows() { + const selectedCheckboxes = document.querySelectorAll('input[data-datatable-row-check="true"]:checked'); + if (selectedCheckboxes.length === 0) { + Swal.fire('Warning', 'Please select at least one row to delete.', 'warning'); + return; + } + + Swal.fire({ + title: 'Are you sure?', + text: `You are about to delete ${selectedCheckboxes.length} selected row(s). This action cannot be undone!`, + icon: 'warning', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: 'Yes, delete them!' + }).then((result) => { + if (result.isConfirmed) { + const ids = Array.from(selectedCheckboxes).map(checkbox => checkbox.value); + + $.ajaxSetup({ + headers: { + 'X-CSRF-TOKEN': '{{ csrf_token() }}' + } + }); + + $.ajax('{{ route("basicdata.currency.deleteMultiple") }}', { + type: 'POST', + data: { ids: ids } + }).then((response) => { + Swal.fire('Deleted!', 'Selected rows have been deleted.', 'success').then(() => { + window.location.reload(); + }); + }).catch((error) => { + console.error('Error:', error); + Swal.fire('Error!', 'An error occurred while deleting the rows.', 'error'); + }); + } + }) + } @endpush diff --git a/routes/web.php b/routes/web.php index e31308c..6d7f658 100644 --- a/routes/web.php +++ b/routes/web.php @@ -22,6 +22,7 @@ Route::get('restore/{id}', [CurrencyController::class, 'restore'])->name('restore'); Route::get('datatables', [CurrencyController::class, 'dataForDatatables'])->name('datatables'); Route::get('export', [CurrencyController::class, 'export'])->name('export'); + Route::post('delete-multiple', [CurrencyController::class, 'deleteMultiple'])->name('deleteMultiple'); }); Route::resource('mata-uang', CurrencyController::class, [