diff --git a/htdocs/app/Http/Controllers/BiorepositoryController.php b/htdocs/app/Http/Controllers/BiorepositoryController.php index da1fdde2..c4780763 100644 --- a/htdocs/app/Http/Controllers/BiorepositoryController.php +++ b/htdocs/app/Http/Controllers/BiorepositoryController.php @@ -217,6 +217,44 @@ class BiorepositoryController extends Controller return redirect('/biorepository')->with('success', 'Spesimen berhasil dihapus.'); } + public function deleteRack($id) + { + if (Session::get('previlage') == '') { + return redirect('/login'); + } + + $rack = BioRack::find($id); + if (!$rack) { + return redirect('/biorepository')->withErrors(['rack' => 'Data rack tidak ditemukan.']); + } + + BioSpecimen::where('rack_id', $rack->id)->delete(); + $rack->delete(); + + return redirect('/biorepository')->with('success', 'Rack dan semua spesimennya berhasil dihapus.'); + } + + public function deleteCabinet($id) + { + if (Session::get('previlage') == '') { + return redirect('/login'); + } + + $cabinet = BioCabinet::find($id); + if (!$cabinet) { + return redirect('/biorepository')->withErrors(['cabinet' => 'Data lemari tidak ditemukan.']); + } + + $rackIds = BioRack::where('cabinet_id', $cabinet->id)->pluck('id')->toArray(); + if (!empty($rackIds)) { + BioSpecimen::whereIn('rack_id', $rackIds)->delete(); + BioRack::whereIn('id', $rackIds)->delete(); + } + $cabinet->delete(); + + return redirect('/biorepository')->with('success', 'Lemari beserta rack dan spesimennya berhasil dihapus.'); + } + private function mapStorageCondition($category) { $mapping = [ diff --git a/htdocs/resources/views/admin/biorepository.blade.php b/htdocs/resources/views/admin/biorepository.blade.php index c720787c..976061b8 100644 --- a/htdocs/resources/views/admin/biorepository.blade.php +++ b/htdocs/resources/views/admin/biorepository.blade.php @@ -168,7 +168,13 @@ @forelse($cabinets as $cabinet)
-
{{ $cabinet->code }} - {{ $cabinet->name }} ({{ $cabinet->location ?? 'Lokasi belum diisi' }})
+
+
{{ $cabinet->code }} - {{ $cabinet->name }} ({{ $cabinet->location ?? 'Lokasi belum diisi' }})
+
+ @csrf + +
+
@forelse($cabinet->racks as $rack) @php @@ -182,7 +188,13 @@ $tubeCapacity = (int) $rack->capacity; @endphp
-
{{ $rack->code }} - {{ $rack->name }}
+
+
{{ $rack->code }} - {{ $rack->name }}
+
+ @csrf + +
+
Rack No {{ $rack->rack_number ?? $rack->id }} | Total Shelf {{ $shelfCount }} | 1 Box per Shelf | Tube per Box {{ $tubeCapacity }}
Terisi: {{ $rack->specimens->count() }}
@@ -530,6 +542,16 @@ e.preventDefault(); } }); + $(document).on('submit', '.js-delete-rack', function (e) { + if (!confirm('Yakin hapus rack ini? Semua spesimen pada rack ini juga akan dihapus.')) { + e.preventDefault(); + } + }); + $(document).on('submit', '.js-delete-cabinet', function (e) { + if (!confirm('Yakin hapus lemari ini? Semua rack dan spesimennya akan dihapus.')) { + e.preventDefault(); + } + }); }); @endpush diff --git a/htdocs/routes/web.php b/htdocs/routes/web.php index a4cb3641..d6b20550 100644 --- a/htdocs/routes/web.php +++ b/htdocs/routes/web.php @@ -72,6 +72,8 @@ Route::group(['middleware' => 'project.ipg'], function() { Route::post('biorepository/store-rack', [BiorepositoryController::class, 'storeRack'])->name('biorepository.storeRack'); Route::post('biorepository/store-specimen', [BiorepositoryController::class, 'storeSpecimen'])->name('biorepository.storeSpecimen'); Route::post('biorepository/delete-specimen/{id}', [BiorepositoryController::class, 'deleteSpecimen'])->name('biorepository.deleteSpecimen'); + Route::post('biorepository/delete-rack/{id}', [BiorepositoryController::class, 'deleteRack'])->name('biorepository.deleteRack'); + Route::post('biorepository/delete-cabinet/{id}', [BiorepositoryController::class, 'deleteCabinet'])->name('biorepository.deleteCabinet'); Route::post('simbhp/exaddbarang', [GudangController::class, 'exAddbarang'])->name('exAddBarang'); Route::post('simbhp/reportbhp', [GudangController::class, 'jsonReportbhp'])->name('reportBHP'); Route::post('simbhp/kwitansi', [GudangController::class, 'exKwitansi'])->name('kwitansiBHP');