From 0891e110517818c0ee1837bb4879ee1f897905ed Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sat, 21 Dec 2024 08:15:53 +0700 Subject: [PATCH] Tambahkan fitur hapus beberapa data hari libur - Menambahkan endpoint `deleteMultiple` di HolidayCalendarController untuk menghapus beberapa data hari libur sekaligus. - Menambahkan tombol "Delete Selected" di halaman index holiday calendar, yang terlihat hanya jika ada data yang dipilih. - Implementasi logika JavaScript untuk menangani pemilihan baris, visibilitas tombol, dan penghapusan data dengan AJAX. - Memperbarui file `web.php` untuk menambahkan rute POST baru `delete-multiple` guna mendukung fitur ini. --- .../Controllers/HolidayCalendarController.php | 7 ++ .../views/holidaycalendar/index.blade.php | 69 +++++++++++++++++++ routes/web.php | 1 + 3 files changed, 77 insertions(+) diff --git a/app/Http/Controllers/HolidayCalendarController.php b/app/Http/Controllers/HolidayCalendarController.php index 677fd16..9e8ea75 100644 --- a/app/Http/Controllers/HolidayCalendarController.php +++ b/app/Http/Controllers/HolidayCalendarController.php @@ -88,6 +88,13 @@ } } + public function deleteMultiple(Request $request) + { + $ids = $request->input('ids'); + HolidayCalendar::whereIn('id', $ids)->delete(); + return response()->json(['message' => 'Holidays deleted successfully']); + } + public function dataForDatatables(Request $request) { if (is_null($this->user) || !$this->user->can('currency.view')) { diff --git a/resources/views/holidaycalendar/index.blade.php b/resources/views/holidaycalendar/index.blade.php index 9a0f644..2ea577c 100644 --- a/resources/views/holidaycalendar/index.blade.php +++ b/resources/views/holidaycalendar/index.blade.php @@ -21,6 +21,7 @@
Export to Excel Tambah Hari Libur + @@ -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.holidaycalendar.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 6d7f658..0f2f311 100644 --- a/routes/web.php +++ b/routes/web.php @@ -66,6 +66,7 @@ Route::delete('/{id}', [HolidayCalendarController::class, 'destroy'])->name('destroy'); Route::get('/datatables', [HolidayCalendarController::class, 'dataForDatatables'])->name('datatables'); Route::get('/export', [HolidayCalendarController::class, 'export'])->name('export'); + Route::post('delete-multiple', [HolidayCalendarController::class, 'deleteMultiple'])->name('deleteMultiple'); }); }); });