diff --git a/app/Http/Controllers/DokumenJaminanController.php b/app/Http/Controllers/DokumenJaminanController.php index cdfaa22..04feb22 100644 --- a/app/Http/Controllers/DokumenJaminanController.php +++ b/app/Http/Controllers/DokumenJaminanController.php @@ -4,6 +4,7 @@ use App\Http\Controllers\Controller; use Exception; + use Illuminate\Http\Request; use Illuminate\Http\JsonResponse; use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; @@ -572,4 +573,40 @@ $combinedLegalitas = array_merge($existingLegalitas, $newLegalitas); return response()->json($combinedLegalitas); } + + public function clearDetail(Request $request) + { + try { + DB::beginTransaction(); + + $detailId = $request->input('detail_id'); + $detail = DetailDokumenJaminan::findOrFail($detailId); + + // Delete associated files + if ($detail->dokumen_jaminan) { + $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) + ? json_decode($detail->dokumen_jaminan) + : [$detail->dokumen_jaminan]; + + foreach ($dokumen_jaminan as $dokumen) { + if (Storage::exists($dokumen)) { + Storage::delete($dokumen); + } + } + } + + // Delete the detail record + $detail->delete(); + + DB::commit(); + + return response()->json(['success' => true, 'message' => 'Detail berhasil dihapus']); + } catch (\Exception $e) { + DB::rollBack(); + return response()->json([ + 'success' => false, + 'message' => 'Gagal menghapus detail: ' . $e->getMessage() + ], 500); + } + } } diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index 9d3b3da..3f5fb73 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -262,7 +262,16 @@ - + +
@@ -713,5 +722,75 @@ return ``; } } + + function clearDetail(detailId) { + Swal.fire({ + title: 'Apakah Anda yakin?', + text: "Anda akan menghapus detail ini!", + icon: 'warning', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: 'Ya, yakin!', + cancelButtonText: 'Batal' + }).then((result) => { + if (result.isConfirmed) { + Swal.fire({ + title: 'Apakah Anda yakin?', + text: "Data yang telah di hapus tidak dapat di kembalikan", + icon: 'warning', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: 'Ya, hapus!', + cancelButtonText: 'Batal' + }).then((result2) => { + if (result2.isConfirmed) { + // Hapus input fields + $(`input[name="detail_dokumen_jaminan_id[]"][value="${detailId}"]`).closest('.grid.gap-5').remove(); + + // Kirim request AJAX untuk menghapus data dari database + $.ajax({ + url: '{{ route("debitur.jaminan.clearDetail", $debitur->id ) }}', + type: 'POST', + data: { + _token: '{{ csrf_token() }}', + detail_id: detailId + }, + success: function (response) { + if (response.success) { + Swal.fire({ + title: 'Berhasil!', + text: 'Detail berhasil dihapus', + icon: 'success', + confirmButtonText: 'OK' + }).then((result) => { + if (result.isConfirmed) { + location.reload(); + } + }); + } else { + Swal.fire({ + title: 'Gagal!', + text: 'Detail gagal dihapus', + icon: 'error', + confirmButtonText: 'OK' + }); + } + }, + error: function () { + Swal.fire({ + title: 'Gagal!', + text: 'Terjadi kesalahan saat menghapus detail', + icon: 'error', + confirmButtonText: 'OK' + }); + } + }); + } + }); + } + }); + } @endpush diff --git a/routes/web.php b/routes/web.php index d922846..9dad5ac 100644 --- a/routes/web.php +++ b/routes/web.php @@ -349,6 +349,8 @@ Route::middleware(['auth'])->group(function () { Route::put('{jaminan}', [DokumenJaminanController::class, 'update'])->name('update'); Route::post('store', [DokumenJaminanController::class, 'store'])->name('store'); Route::delete('{jaminan}', [DokumenJaminanController::class, 'destroy'])->name('destroy'); + + Route::post('clear-detail', [DokumenJaminanController::class, 'clearDetail'])->name('clearDetail'); }); Route::name('pemilik.')->prefix('{id}/pemilik')->group(function () {