This commit is contained in:
Dwi Swandhana
2026-07-03 20:48:38 +07:00
parent ed92325536
commit f857eec85c
11 changed files with 1820 additions and 1142 deletions
@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use App\BioCabinet;
use App\BioRack;
use App\BioSpecimen;
use App\Periksa;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Session;
@@ -28,15 +29,6 @@ class BiorepositoryController extends Controller
->orderBy('id', 'DESC')
->get();
$data['cabinets'] = BioCabinet::with([
'racks' => function ($query) {
$query->orderBy('rack_number', 'ASC')->orderBy('code', 'ASC');
},
'racks.specimens' => function ($query) {
$query->orderBy('stored_at', 'ASC');
},
])->orderBy('name', 'ASC')->get();
$data['oldestSpecimen'] = BioSpecimen::with(['cabinet', 'rack'])
->whereNotNull('stored_at')
->orderBy('stored_at', 'ASC')
@@ -79,7 +71,9 @@ class BiorepositoryController extends Controller
'cabinet_id' => 'required|exists:bio_cabinets,id',
'code' => 'required|max:50',
'name' => 'required|max:150',
'slot_count' => 'required|integer|min:1|max:20',
'level' => 'required|integer|min:4|max:6',
'box_number' => 'required|integer|min:1|max:20',
'capacity' => 'required|integer|min:16|max:100',
'notes' => 'nullable',
]);
@@ -102,9 +96,10 @@ class BiorepositoryController extends Controller
'cabinet_id' => $request->input('cabinet_id'),
'code' => $request->input('code'),
'name' => $request->input('name'),
'slot_count' => $request->input('slot_count'),
'level' => $request->input('level'),
'rack_number' => $nextRackNumber,
'box_number' => 1,
'box_number' => $request->input('box_number'),
'capacity' => $request->input('capacity'),
'notes' => $request->input('notes'),
]);
@@ -136,15 +131,23 @@ class BiorepositoryController extends Controller
$rack = BioRack::find($request->input('rack_id'));
$expectedRackNo = $rack->rack_number ?: $rack->id;
$expectedBoxNo = $rack->box_number ?: 1;
$slotCount = (int) ($rack->slot_count ?: 1);
$boxCount = (int) ($rack->box_number ?: 1);
if ((int) $request->input('raknomor') !== (int) $expectedRackNo ||
(int) $request->input('boxnomor') !== (int) $expectedBoxNo) {
if ((int) $request->input('raknomor') !== (int) $expectedRackNo) {
return back()->withErrors(['slotnomor' => 'Posisi slot tidak sesuai dengan konfigurasi rack.'])->withInput();
}
if ((int) $request->input('slotnomor') < 1 || (int) $request->input('slotnomor') > $slotCount) {
return back()->withErrors(['slotnomor' => 'Slot melebihi konfigurasi rack.'])->withInput();
}
if ((int) $request->input('shelfnomor') < 1 || (int) $request->input('shelfnomor') > (int) $rack->level) {
return back()->withErrors(['shelfnomor' => 'Shelf melebihi konfigurasi rack.'])->withInput();
return back()->withErrors(['shelfnomor' => 'Shelf melebihi konfigurasi slot.'])->withInput();
}
if ((int) $request->input('boxnomor') < 1 || (int) $request->input('boxnomor') > $boxCount) {
return back()->withErrors(['boxnomor' => 'Box melebihi konfigurasi shelf.'])->withInput();
}
if ((int) $request->input('tubenomor') < 1 || (int) $request->input('tubenomor') > (int) $rack->capacity) {
@@ -152,7 +155,9 @@ class BiorepositoryController extends Controller
}
$slotTaken = BioSpecimen::where('rack_id', $rack->id)
->where('slot_number', $request->input('slotnomor'))
->where('shelf_number', $request->input('shelfnomor'))
->where('box_number', $request->input('boxnomor'))
->where('tube_number', $request->input('tubenomor'))
->first();
@@ -209,7 +214,7 @@ class BiorepositoryController extends Controller
$sampleid = $request->input('sampleid');
if ($sampleid) {
$cekdata = Periksa::where('nofoto', $sampleid)->first();
if (!$cekdata) {
if ($cekdata) {
$sampleid = $cekdata->id;
} else {
$sampleid = null;
@@ -226,7 +231,7 @@ class BiorepositoryController extends Controller
'category_storage' => $request->input('kategorisimpan'),
'shelf_number' => $request->input('shelfnomor'),
'rack_number' => $request->input('raknomor'),
'slot_number' => $request->input('shelfnomor'),
'slot_number' => $request->input('slotnomor'),
'box_number' => $request->input('boxnomor'),
'tube_number' => $request->input('tubenomor'),
'bacteria_name' => $request->input('nmbakteri'),