update
This commit is contained in:
@@ -122,9 +122,12 @@ class BiorepositoryController extends Controller
|
||||
'slotnomor' => 'required|integer|min:1',
|
||||
'boxnomor' => 'required|integer|min:1',
|
||||
'tubenomor' => 'required|integer|min:1',
|
||||
'nmbakteri' => 'required|max:200',
|
||||
'strain' => 'required|in:Gram Negatif,Gram Positif',
|
||||
'nmbakteri' => 'nullable|max:200',
|
||||
'strain' => 'nullable|in:Gram Negatif,Gram Positif',
|
||||
'stored_at' => 'required|date',
|
||||
'volume' => 'nullable|numeric|min:0',
|
||||
'volume_ambil' => 'nullable|numeric|min:0',
|
||||
'existing_specimen_id' => 'nullable|integer',
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
@@ -151,10 +154,36 @@ class BiorepositoryController extends Controller
|
||||
$slotTaken = BioSpecimen::where('rack_id', $rack->id)
|
||||
->where('shelf_number', $request->input('shelfnomor'))
|
||||
->where('tube_number', $request->input('tubenomor'))
|
||||
->exists();
|
||||
->first();
|
||||
|
||||
if ($slotTaken) {
|
||||
return back()->withErrors(['tubenomor' => 'Posisi tube pada shelf ini sudah terisi spesimen.'])->withInput();
|
||||
$existingId = (int) $request->input('existing_specimen_id');
|
||||
if ($existingId !== (int) $slotTaken->id) {
|
||||
return back()->withErrors(['tubenomor' => 'Posisi tube pada shelf ini sudah terisi spesimen.'])->withInput();
|
||||
}
|
||||
|
||||
$volumeAmbil = (float) $request->input('volume_ambil');
|
||||
if ($volumeAmbil <= 0) {
|
||||
return back()->withErrors(['volume_ambil' => 'Isi volume yang diambil dari spesimen.'])->withInput();
|
||||
}
|
||||
|
||||
$volumeSekarang = (float) ($slotTaken->volume ?? 0);
|
||||
if ($volumeAmbil > $volumeSekarang) {
|
||||
return back()->withErrors(['volume_ambil' => 'Volume diambil melebihi sisa volume spesimen.'])->withInput();
|
||||
}
|
||||
|
||||
$slotTaken->volume = (string) ($volumeSekarang - $volumeAmbil);
|
||||
$slotTaken->save();
|
||||
|
||||
return redirect('/biorepository')->with('success', 'Pengambilan volume berhasil. Sisa volume diperbarui.');
|
||||
}
|
||||
|
||||
if (!$request->filled('nmbakteri') || !$request->filled('strain')) {
|
||||
return back()->withErrors(['nmbakteri' => 'Nama bakteri dan strain wajib diisi untuk spesimen baru.'])->withInput();
|
||||
}
|
||||
|
||||
if (!$request->filled('volume')) {
|
||||
return back()->withErrors(['volume' => 'Volume awal spesimen wajib diisi.'])->withInput();
|
||||
}
|
||||
|
||||
$atccByUser = strtoupper(preg_replace('/[^A-Za-z0-9]/', '', Session::get('nama', 'UNKNOWN')));
|
||||
@@ -195,6 +224,7 @@ class BiorepositoryController extends Controller
|
||||
'input_by' => Session::get('nama'),
|
||||
'stored_at' => $request->input('stored_at'),
|
||||
'storage_condition' => $this->mapStorageCondition($request->input('kategorisimpan')),
|
||||
'volume' => (string) $request->input('volume'),
|
||||
'notes' => $request->input('notes'),
|
||||
]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user